Liste déroulante cascade

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
 

Fichiers joints

cp4

XLDnaute Impliqué
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
 

Poulet

XLDnaute Nouveau
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
 

Discussions similaires


Haut Bas