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
 

Pièces jointes

  • Màj outils.xlsm
    47.9 KB · Affichages: 32

cp4

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

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89