XL 2016 zone de liste en cascades dans userform

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 !

jean marc1234

XLDnaute Occasionnel
bonjour à tous,
voila j'ai actuellement dans un userform deux combobox en cascades.
Je souhaite en rajouter deux autres sans rapport avec les deux premières.
Je voudrais savoir si il un procédure particulière.
Merci d'avance.
 
Bonjour le fil, le forum, jean marc1234

@jean marc1234

Je voudrais savoir dans combien de tes posts il faudra évoquer l'utilité d'un fichier Excel joint par le demandeur...
🙄
Merci d'avance.
re,
les combobox que je souhaite rajouter sont agence et Nom
voila ,si il y a des questions pas de souci
 

Pièces jointes

Re


Juste pour infos
Tu peux simplifier ton Initialize ainsi
VB:
Private Sub UserForm_Initialize()
'initialisation des variables
Dim rng As Range
Set rng = Sheets("liste").Range("b2:f2"): rng.Interior.ColorIndex = xlNone
cbocatégorie.List = Application.Transpose(rng.Value)
End Sub
re,
super merci bien
et pour mon interrogation concernant l'ajout de combobox?
 
Re

Une exemple (en attendant mieux écrit et plus secure)
Code:
Private Sub cboagence_Change()
Dim ligne&
colonne = cboagence.ListIndex + 8
ligne = Sheets("liste").Cells(3, colonne).End(xlDown).Row
cbonom.List = Sheets("liste").Range(Cells(3, colonne), Cells(ligne, colonne)).Value
End Sub
Private Sub UserForm_Initialize()
'initialisation des variables
Dim rng As Range
Set rng = Sheets("liste").Range("b2:f2"): rng.Interior.ColorIndex = xlNone
cbocatégorie.List = Application.Transpose(rng.Value)
cboagence.List = Application.Transpose(rng.Item(5).Offset(, 2).Resize(, 8).Value)
End Sub
 
Re

Une exemple (en attendant mieux écrit et plus secure)
Code:
Private Sub cboagence_Change()
Dim ligne&
colonne = cboagence.ListIndex + 8
ligne = Sheets("liste").Cells(3, colonne).End(xlDown).Row
cbonom.List = Sheets("liste").Range(Cells(3, colonne), Cells(ligne, colonne)).Value
End Sub
Private Sub UserForm_Initialize()
'initialisation des variables
Dim rng As Range
Set rng = Sheets("liste").Range("b2:f2"): rng.Interior.ColorIndex = xlNone
cbocatégorie.List = Application.Transpose(rng.Value)
cboagence.List = Application.Transpose(rng.Item(5).Offset(, 2).Resize(, 8).Value)
End Sub
Re,
merci , sa fonctionne super
 
Re

Tu n'as pas du comprendre l'humour de mon dernier message 😉
Je disais simplement que le code que je t'ai fourni est très basique et qu'il se peut que surgisse des effets de bords
d'où cette première phrase
(en attendant mieux écrit et plus secure)
puis cette seconde
(Mais si j'étais moi, je méfierai de ces codes VBA)
 
Re

Tu n'as pas du comprendre l'humour de mon dernier message 😉
Je disais simplement que le code que je t'ai fourni est très basique et qu'il se peut que surgisse des effets de bords
d'où cette première phrase
(en attendant mieux écrit et plus secure)
puis cette seconde
(Mais si j'étais moi, je méfierai de ces codes VBA)
si si avais bien compris que c'était de l'humour, pas de problème
 
Bonsoir @jean marc1234, @Staple1600 😉,

Et sans aucun humour (parce qu'on est pas là pour rigoler 😛) ma p'tite version.

VB:
Private Sub UserForm_Initialize()
  cbocatégorie.List = Application.Transpose(Range("Categories"))
  cboagence.List = Application.Transpose(Range("Agences"))
End Sub

Private Sub cbocatégorie_change()
Dim nc As Long, nl As Long
  cbooutillage.Clear
  If Not cbocatégorie.ListIndex = -1 Then
    nc = Application.WorksheetFunction.Match(cbocatégorie.Text, Range("Categories"), 0) + 1
    With Worksheets("Liste")
      nl = .Cells(Rows.Count, nc).End(xlUp).Row
      On Error GoTo Err01
      cbooutillage.List = .Range(.Cells(3, nc), .Cells(nl, nc)).Value
    End With
    cbooutillage.SetFocus
    Exit Sub
  End If
Err01:
  cbooutillage.AddItem Worksheets("Liste").Cells(3, nc)
  cbooutillage.SetFocus
End Sub

Private Sub cboagence_Change()
Dim nc As Long, nl As Long
  cbonom.Clear
  If Not cboagence.ListIndex = -1 Then
    nc = Application.WorksheetFunction.Match(cboagence.Text, Range("Agences"), 0) + 7
    With Worksheets("Liste")
      nl = .Cells(Rows.Count, nc).End(xlUp).Row
      On Error GoTo Err02
      cbonom.List = .Range(.Cells(3, nc), .Cells(nl, nc)).Value
    End With
    cbonom.SetFocus
  End If
  Exit Sub
Err02:
  cbonom.AddItem Worksheets("Liste").Cells(3, nc)
  cbonom.SetFocus
End Sub
 

Pièces jointes

Dernière édition:
- 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
10
Affichages
372
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
272
Réponses
40
Affichages
1 K
Réponses
6
Affichages
196
Réponses
2
Affichages
343
Retour