Liste déroulante en cascade (dans un formulaire)

Bonsoir à tous,

Avant de passer l'ordi par la fenêtre je vais solliciter votre aide si vous voulez bien.

Je voudrais faire une "simple" liste déroulante en cascade dans un formulaire. Je parviens évidemment à charger la première combobox (Choix d'une direction) mais la seconde (choix du bureau) ne se charge pas (après avoir sélectionné un élément dans la première).

J'ai simplifié mon Userform pour voir où cela pêchait...rien n'y fait, la seconde combo reste vide...et ma tension monte.

J'ai pensé que le problème venait du fait que j'avais plusieurs feuilles ce qui ne permettait pas à vba (en fonction de mon code) de trouver les éléments de la seconde combo.

Bref je sèche lamentablement...merci d'avance à ceux qui voudront bien m'aider.

Bonne soirée

bonsoir,

Private Sub cboDirection_Change()
i = 2   '<-------------------------------------------------- 2 au lieu de 1 !!!
frmSaisie.cboBureau.Clear

Do While Cells(1, i).Value <> ""
...

Bonjour BsAlv,

Merci beaucoup de ton aide très précieuse. J'y ai passé des heures pour comprendre ce qui ne fonctionnait pas.

Je pensais que cela venait des nombreuses feuilles de calcul du classeur d'origine...et non. Mais je ne comprends pas comment vba reconnait la feuille où aller charger les éléments de la Liste déroulante? A aucun moment je le lui signale.

En tout cas c'est très sympa de m'avoir répondu.Merci.

bonjour Sylvain,

Quand on ne dit rien, c'est toujours sur la feuille ou le fichier active. Il y a plusieurs methods pour modifier cela.

Avec SET on définit une feuille et puis on ne doit pas toujours repeter cela quand on utilise With ... End With et on ajoute un point avant l'item qui en a besoin.

Peut-etre, quelqu'un autre peut ajouter un lien vers un article français qui explique ce sujet mieux.

"Select" et "Activate" sont de commandes à eviter, cela ne sert à rien et ralentit le programma

Private Sub cboDirection_Change()

     Set sh = Sheets("Parambudget")     'variable pour la feuille avec le nom
     Set sh1 = Feuil28

     With sh

          i = 2     'commence dans colonne  2
          frmSaisie.cboBureau.Clear

          Do While .Cells(1, i).Value <> ""
               If .Cells(1, i).Value = cboDirection.Value Then Colonne = i
               i = i + 1
          Loop

          j = 2     'commence dans la ligne 2
          Do While .Cells(j, Colonne).Value <> ""
               frmSaisie.cboBureau.AddItem .Cells(j, Colonne)
               j = j + 1
          Loop

     End With

End Sub

Bonjour BsAlv,

Merci bien pour cette piste. Je vais étudier cela. C'est vrai que je n'ai pas trouvé grand chose sur ce problème de plusieurs LD en cascade (avec la source dans plusieurs onglets du classeur) dans un formulaire.

Encore merci et bonne journée.

Rechercher des sujets similaires à "liste deroulante cascade formulaire"