XL 2016 zone de liste en cascades dans userform

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.
 

Staple1600

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

jean marc1234

XLDnaute Occasionnel
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?
 

Staple1600

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

jean marc1234

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

Staple1600

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

jean marc1234

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

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @jean marc1234, @Staple1600 ;),

Et sans aucun humour (parce qu'on est pas là pour rigoler :p) 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

  • jean marc1234- liste cascade- v1a.xlsm
    32.1 KB · Affichages: 35
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16