Code userform liste déroulante

Bonjour, j'aurais besoin d'aide pour comprendre une erreur dans le code que j'ai tapé sur VBA.

En fait, j'ai un Userform avec 4 listes déroulantes ou je fais un choix à chaque fois et ça archive les choix que j'ai fait.

J'aurais voulu que trois de ces listbox dépendent du choix que je fais pour la première liste déroulante.

En gros, lorsque je fais un choix dans la combobox4, je veux que l'endroit auquel je me réfère (donc rowsource) change par rapport à celui que j'avais fait auparavant.

Et si je ne choisis rien dans la combobox 4, le rowsource que j'ai déjà tapé pour chaque listbox ne change pas.

La formule tapée est la suivante, et selon VBA le problème vient de la première ligne, et lorsque le débogueur se met en route, le A46 de la troisième ligne est sélectionné.

Si vous trouvez le souci à cette formule, faites-le moi savoir, ça m'intrigue et je n'arrive vraiment pas à trouver ce qui cloche (même quand je n'utilise pas Afterupdate mais change ou autre chose, l'erreur est au même endroit.

Merci bcp d'avance.

Private Sub ComboBox4_Afterupdate()

Sheets("Carte").Activate

If ComboBox4.Value = Gourmands Then ComboBox1.RowSource = Carte!A44: A46

If ComboBox4.Value = Gourmands Then ComboBox2.RowSource = Carte!A48: A50

If ComboBox4.Value = Gourmands Then ComboBox3.RowSource = Carte!A52: A54

End Sub

Bonsoir

Essayes

Private Sub ComboBox4_Afterupdate()
Sheets("Carte").Activate

If ComboBox4.Value = "Gourmands" Then ComboBox1.RowSource = "Carte!A44:A46"
If ComboBox4.Value = "Gourmands" Then ComboBox2.RowSource = "Carte!A48:A50"
If ComboBox4.Value = "Gourmands" Then ComboBox3.RowSource = "Carte!A52:A54"

End Sub

Bonne soirée

Bonsoir,

Evite d'utiliser l'instruction Rowsource qui pose quelques fois des soucis.

Ton code pourrait être celui-ci :

Private Sub ComboBox4_Afterupdate()
Dim liste1, liste2, liste3
If ComboBox4.Value = "Gourmands" Then
With Sheets("Carte")
    liste1 = .Range("A44: A46")
    liste2 = .Range("A48: A50")
    liste3 = .Range("A52:A54")
End With
With Me
    .ComboBox1.List = liste1
    .ComboBox2.List = liste2
    .ComboBox3.List = liste3
End With
end if
End Sub

Amicalement

Edit Dan : corrigé code

Bonjour,

J'ai essayé vos deux formules. Celle de Banzaï64 correspondait plus à ce que je voulais faire. Disons que je l'ai mieux comprise et qu'elle a fonctionné quasiment tout de suite. Alors que la tienne, Dan, fonctionnait mal et je n'ai pas réussi a résoudre le problème.

Dans tous les cas je vous remercie tout deux pour votre réponse rapide =)

Bonne journée!

-- 12 Jan 2011, 15:01 --

Dan, j'ai à nouveau essayé ta formule mais ça ne fonctionne pas... Je ne vois pas ce que liste1, liste2 et liste3 signifient...

Sinon, l'autre formule avec RowSource fonctionne alors pour l'instant je garde celle-ci.

Merci beaucoup!

Rechercher des sujets similaires à "code userform liste deroulante"