Liste déroulante cascade

  • Initiateur de la discussion Initiateur de la discussion Poulet
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Poulet

XLDnaute Nouveau
Bonsoir,

Débutant en VBA excel, j'aurai besoin de vous sur un problème que je rencontre au niveau des listes déroulantes en cascade. Dans mon fichier, lorsque j'ouvre mon formulaire userform, je suis satisfait du résultat concernant les 3 premiers champs à savoir "Programme";"Types de pièces";"Nature de pièces". En revanche, je mes champs "Poste de travail" et "Ilot" ne fonctionnent pas comme je le souhaite.

Je souhaite dans mon champs "Ilot", avoir une liste déroulante reprenant mes catégories par famille de mon onglet "Liste" à savoir Forge, Plomberie, Soufflerie etc... et non pas Forge 1,2,3 etc...

Et lorsque je sélectionne Forge dans mon champs "Ilot", le menu déroulant de mon champs "Poste de travail" me propose Forge 1, Forge 2 etc...

Ci-joint mon fichier, en espérant que ça vous peut vous aider.

Très Cordialement

Merci d'avance
 

Pièces jointes

Bonjour,

à tester. Remplace initialize et ajoute Ilot_change
VB:
Private Sub Ilot_Change()
   Me.Postedetravail.Clear

   For Each c In Sheets("Liste").Range("a1:g1")
      If c.Value = Me.Ilot Then
         col = c.Column
         Exit For
      End If
   Next
   i = 1
   Do While Worksheets("Liste").Cells(i, col) <> ""
      Postedetravail.AddItem Worksheets("Liste").Cells(i, col)
      i = i + i
   Loop
End Sub

Private Sub UserForm_Initialize()
   Dim i As Integer
   i = 1

   Do While Worksheets("Liste").Cells(i, 1) <> ""
      Programme.AddItem Worksheets("Liste").Cells(i, 5)
      Typesdepièces.AddItem Worksheets("Liste").Cells(i, 6)
      Naturedepièces.AddItem Worksheets("Liste").Cells(i, 7)
      i = i + 1
   Loop

   i = 1
   Do While Worksheets("Liste").Cells(1, i) <> ""
      Ilot.AddItem Worksheets("Liste").Cells(1, i)
      i = i + 1
   Loop
End Sub
 
Private Sub Ilot_Change()
Me.Postedetravail.Clear

For Each c In Sheets("Liste").Range("a1:g1")
If c.Value = Me.Ilot Then
col = c.Column
Exit For
End If
Next
i = 1
Do While Worksheets("Liste").Cells(i, col) <> ""
Postedetravail.AddItem Worksheets("Liste").Cells(i, col)
i = i + i
Loop
End
Sub

Bonjour,

à tester. Remplace initialize et ajoute Ilot_change
VB:
Private Sub Ilot_Change()
   Me.Postedetravail.Clear

   For Each c In Sheets("Liste").Range("a1:g1")
      If c.Value = Me.Ilot Then
         col = c.Column
         Exit For
      End If
   Next
   i = 1
   Do While Worksheets("Liste").Cells(i, col) <> ""
      Postedetravail.AddItem Worksheets("Liste").Cells(i, col)
      i = i + i
   Loop
End Sub

Private Sub UserForm_Initialize()
   Dim i As Integer
   i = 1

   Do While Worksheets("Liste").Cells(i, 1) <> ""
      Programme.AddItem Worksheets("Liste").Cells(i, 5)
      Typesdepièces.AddItem Worksheets("Liste").Cells(i, 6)
      Naturedepièces.AddItem Worksheets("Liste").Cells(i, 7)
      i = i + 1
   Loop

   i = 1
   Do While Worksheets("Liste").Cells(1, i) <> ""
      Ilot.AddItem Worksheets("Liste").Cells(1, i)
      i = i + 1
   Loop
End Sub


Merci Beaucoup ! Ce que tu m'as envoyé me convenait à 90% mais j'ai réussi à changer un peu de code pour avoir exactement ce que je voulais . Merci à toi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
127
Réponses
8
Affichages
170
Retour