Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sur Changement de liste déroulante

3 réponses
Avatar
Pat59
Bonjour,

J'ai un petit problème.

Sur une feuille de calcul (F1) j'ai un menu déroulant qui prend sa source
sur une autre feuille de calcul (F2). Sur changement de ma liste déroulante
il y a une série de commande qui s'effectue. Je veux que la série de commande
se fasse uniquement lorsque je fait une sélection à partir de ma liste.

Mon problème vient du fait que lorsque je modifie un nom sur F2 (source de
la liste) cela déclenche l'évennement change de la liste qui est sur F1.

J'ai essayé des trucs qui n'ont fait que faire planter Excel.

Que puis-je faire pour que le code s'exécute uniquement lorsque je
sélectionne un nouveau nom de ma liste déroulante?

Merci

Patrice

3 réponses

Avatar
anonymousA
bonsoir,

envoies ton code car je ne comprnds pas ta demande. Ton menu déroulant
dont tu parles , c'est quoi, une liste de validation, un combobox ?

Merci de préciser car j'ai fait une ssai avec un combobobox rempli par
LIstfillrange sur une source de feuille différente et quand je change
une des valeurs sources, l'evenement Change du combobox ne se déclenche pas.

A+

Bonjour,

J'ai un petit problème.

Sur une feuille de calcul (F1) j'ai un menu déroulant qui prend sa source
sur une autre feuille de calcul (F2). Sur changement de ma liste déroulante
il y a une série de commande qui s'effectue. Je veux que la série de commande
se fasse uniquement lorsque je fait une sélection à partir de ma liste.

Mon problème vient du fait que lorsque je modifie un nom sur F2 (source de
la liste) cela déclenche l'évennement change de la liste qui est sur F1.

J'ai essayé des trucs qui n'ont fait que faire planter Excel.

Que puis-je faire pour que le code s'exécute uniquement lorsque je
sélectionne un nouveau nom de ma liste déroulante?

Merci

Patrice


Avatar
anonymousA
bonsoir,

un workaround à mettre dans le module de fueille qui accueille le combobox

Dim flag As Boolean 'a déclarer dans la section déclarations du module

Private Sub ComboBox1_Change()

If flag = True Then
MsgBox "toto"
flag = False
End If

End Sub


Private Sub ComboBox1_GotFocus()

flag = True

End Sub

En l'occurence, si tu changes quelque chose à la source, bien sur le
combobox n' a pas le focus et donc flag reste à false. En conséquence,
quand tu chnages la valeur , l'evenement change est affecté mais comme
flagúlse , il ne spasse rien. Bien sur, si tu changes quelque chose
sur le combobox lui-même, le focus lui a forcément été passé et dans ces
conditions, flag evient true et la procédure Change peut s'exécuter
normalement. Il faut par contre remettre flag à false à la fin pour
pouvoir remtter les pendules à l'heure.

A+

Bonjour,

J'ai un petit problème.

Sur une feuille de calcul (F1) j'ai un menu déroulant qui prend sa source
sur une autre feuille de calcul (F2). Sur changement de ma liste déroulante
il y a une série de commande qui s'effectue. Je veux que la série de commande
se fasse uniquement lorsque je fait une sélection à partir de ma liste.

Mon problème vient du fait que lorsque je modifie un nom sur F2 (source de
la liste) cela déclenche l'évennement change de la liste qui est sur F1.

J'ai essayé des trucs qui n'ont fait que faire planter Excel.

Que puis-je faire pour que le code s'exécute uniquement lorsque je
sélectionne un nouveau nom de ma liste déroulante?

Merci

Patrice


Avatar
Pat59
J'ai refais un test aussi.

Voici le code du comboBox qui est sur la feuille "F1"
La plage de données source est sur la feuille "F2"

Private Sub ComboBox1_Change()
MsgBox "changement"
End Sub

et quand je change ou ajoute un nom à la plage de données sur "F2 "j'obtiens
le message "Changement"

Avec le technique du flag sur getfocus c'est ok.

Merci

"anonymousA" wrote:

bonsoir,

un workaround à mettre dans le module de fueille qui accueille le combobox

Dim flag As Boolean 'a déclarer dans la section déclarations du module

Private Sub ComboBox1_Change()

If flag = True Then
MsgBox "toto"
flag = False
End If

End Sub


Private Sub ComboBox1_GotFocus()

flag = True

End Sub

En l'occurence, si tu changes quelque chose à la source, bien sur le
combobox n' a pas le focus et donc flag reste à false. En conséquence,
quand tu chnages la valeur , l'evenement change est affecté mais comme
flagúlse , il ne spasse rien. Bien sur, si tu changes quelque chose
sur le combobox lui-même, le focus lui a forcément été passé et dans ces
conditions, flag evient true et la procédure Change peut s'exécuter
normalement. Il faut par contre remettre flag à false à la fin pour
pouvoir remtter les pendules à l'heure.

A+

Bonjour,

J'ai un petit problème.

Sur une feuille de calcul (F1) j'ai un menu déroulant qui prend sa source
sur une autre feuille de calcul (F2). Sur changement de ma liste déroulante
il y a une série de commande qui s'effectue. Je veux que la série de commande
se fasse uniquement lorsque je fait une sélection à partir de ma liste.

Mon problème vient du fait que lorsque je modifie un nom sur F2 (source de
la liste) cela déclenche l'évennement change de la liste qui est sur F1.

J'ai essayé des trucs qui n'ont fait que faire planter Excel.

Que puis-je faire pour que le code s'exécute uniquement lorsque je
sélectionne un nouveau nom de ma liste déroulante?

Merci

Patrice