Evénement Worksheet ne fonctionne pas
Bonjour à tou(te)s
alors voilà, je rencontre un problème
Sa fonction est, lorsqu'on active cette feuille, de décaler des textbox affichant les informations d'en-tête de feuille selon qu'un complément d'adresse postale apparaît où pas dans une feuille de configuration utilisateur : sheets("SYSTEM")
Hors les champs censés se remplir lorsque j'active la feuille avec les textbox contiennent une vieille valeur et ne changent pas étonnament.
Quelqu'un aurait -il une idée?
Merci
Private Sub Worksheet_Activate()
'CONFIGURATION CONDITIONNELLE DE LA FEUILLE DE FACTURATION
'Remplissage des labels ACTIVEX avec infos : CP, ville, téléphone, adresse (complément d'adresse)
With Sheets("Remise de chèques")
.Label20.Caption = Sheets("SYSTEM").Range("B38") 'CHAMPS: CP et ville
.Label21.Caption = Sheets("SYSTEM").Range("B39") 'CHAMPS: Téléphone
.Label22.Caption = Sheets("SYSTEM").Range("B40") 'CHAMPS: Adresse
.Label20.ForeColor = RGB(89, 89, 89) 'CHAMPS: CP et ville
.Label21.ForeColor = RGB(89, 89, 89) 'CHAMPS: Téléphone
.Label22.ForeColor = RGB(89, 89, 89) 'CHAMPS: Adresse
End With
'Déplacement des labels si la valeur d'adresse complementaire est présente
If Sheets("Configuration").Range("C15") = "" Then 'Si vide alors les labels remontent
Sheets("Remise de chèques").Label20.Top = 85.5 'POSITION: CP et ville
Sheets("Remise de chèques").Label21.Top = 99 'POSITION: téléphone
Sheets("Remise de chèques").Label22.Top = 113.25 'POSITION: mail"
Sheets("Remise de chèques").Label23.Top = 105.75 'POSITION: Carré gris téléphone
Sheets("Remise de chèques").Label24.Top = 120 'POSITION: Carré gris mail
Else 'Si plein alors les labels descendent
Sheets("Remise de chèques").Label20.Top = 99
Sheets("Remise de chèques").Label21.Top = 112.5
Sheets("Remise de chèques").Label22.Top = 126.75
Sheets("Remise de chèques").Label23.Top = 119.25
Sheets("Remise de chèques").Label24.Top = 133.5
End If
End SubBonjour,
Avant de regarder ou de lire quoi que ce soit, tu présentes une procédure d'évènement Worksheet, qui ne peut s'exécuter que si la procédure se trouve dans un module de feuille de calcul (lequel ? rien ne l'indique).
Mais en tout cas il ne s'agit pas d'évènement Workbook !
Bonjour,
Avant de regarder ou de lire quoi que ce soit, tu présentes une procédure d'évènement Worksheet, qui ne peut s'exécuter que si la procédure se trouve dans un module de feuille de calcul (lequel ? rien ne l'indique).
Mais en tout cas il ne s'agit pas d'évènement Workbook !
J'ai écrit une bêtise: c'est bien une procédure Worksheet.
Désolé.
Ce que l'on peut dire alors, c'est que cette procédure se déclenchera à l'activation de la feuille concernée, dont on ignore toujours quelle elle est !
(Et aussi qu'un apprentissage minimum de l'utilisation de boucles t'éviterais de produire des pavés d'autant plus indigestes que ton code n'est pas indenté...
Dans le contexte on est amené à se poser la question de savoir si la feuille concernée (celle qu'on active, on n'y est pas, et on y va, et cela lance l'exécution) serait Remise de chèques ?
Ce que l'on peut dire alors, c'est que cette procédure se déclenchera à l'activation de la feuille concernée, dont on ignore toujours quelle elle est !
(Et aussi qu'un apprentissage minimum de l'utilisation de boucles t'éviterais de produire des pavés d'autant plus indigestes que ton code n'est pas indenté...
) Dans le contexte on est amené à se poser la question de savoir si la feuille concernée (celle qu'on active, on n'y est pas, et on y va, et cela lance l'exécution) serait Remise de chèques ?
Okay, désolé.
J'ai fait la mise à jour.
Ce qui ne te dispensais pas de répondre directement à la question !
Je suppose que tu as testé que tu entres bien dans l'exécution de ta procédure lors de l'activation de la feuille Facturation, c'est toujours une vérification à faire, pour s'assurer qu'on y entre et circonscrire le code qui ne s'éxécute pas...
Maintenant, il conviendrait que tu essaies :
.OLEObjects("Label20").Object.Caption = [...]et appliquer cette révision syntaxique sur toutes les autres lignes...
Ce qui ne te dispensais pas de répondre directement à la question !
Enfin...! Je suppose que tu as testé que tu entres bien dans l'exécution de ta procédure lors de l'activation de la feuille Facturation, c'est toujours une vérification à faire, pour s'assurer qu'on y entre et circonscrire le code qui ne s'éxécute pas...
Maintenant, il conviendrait que tu essaies :
.OLEObjects("Label20").Object.Caption = [...]et appliquer cette révision syntaxique sur toutes les autres lignes...
Oui excellente idée de vérifier si la procédure s'active. En utilisant un "Stop" je m'aperçois effectivement que la procédure ne se lance pas, malgré ta proposition de code "OLEObjects".
Si tu as une autre idée je suis preneur. Je vais essayer de creuser encore.
Merci en tout cas MFerrand
Si elle ne se lance pas, c'est soit que tu ne produis pas l'évènement attendu, soit que les évènements sont désactivés (ce qui implique qu'une procédure les a désactivés), soit que tu es en mode arrêt suite à une erreur d'exécution, dont tu n'es pas sorti (dans ce cas aucun code ne peut s'exécuter).
Si elle ne se lance pas, c'est soit que tu ne produis pas l'évènement attendu, soit que les évènements sont désactivés (ce qui implique qu'une procédure les a désactivés), soit que tu es en mode arrêt suite à une erreur d'exécution, dont tu n'es pas sorti (dans ce cas aucun code ne peut s'exécuter).
Cher MFerrand,
je salue ta patience et ton altruisme, qui porte une nouvelle fois ses fruits puisque j'ai solutionné ainsi le problème
Tu as bien identifié qu'une procédure interdisait les événements.
j'avais oublié de repréciser application.enableevents=true
Encore merci