Formulaire avec listes en cascade
Résolu
Koalacid
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rencontre actuellement le problème suivant. J'ai un code lié à un userform qui me permet via la sélection de choix dans une listbox de faire apparaître en cascade un ensemble de choix dans la liste suivante.
Cependant ce code ne fonctionne pas toujours sans que ni les éléments de liste, ni le code ou ni le userform n'aient changé.
Après plusieurs essais, j'ai remarqué que lq gestion des espaces était la source du problème. Mais je ne peux pas à chaque fois qu'il y a un bug faire la conversion des " " en "_".
Je viens vers vous pour savoir si vous avez une meilleure facon de rédiger ce code qui permettra d#éviter ce bug récurrent.
En gras, c'est la ligne qui bug avec le message suivant: "Unable to get the match property of the worcksheetfunction class.
EDIT: En faisant des tests plus précis, je viens de me rendre compte que je ne peux pas cliquer sur un élélement de la listbox1, de ce fait la worksheetFunction.Match ne peut pas fonctionner puisqu'elle cherche un vide (""). Source, le moniteur pas à pas de VBA.
Par avance, je vous remercie du temps que vous accorderez à mon problème,
Sincèrement,
Je rencontre actuellement le problème suivant. J'ai un code lié à un userform qui me permet via la sélection de choix dans une listbox de faire apparaître en cascade un ensemble de choix dans la liste suivante.
Cependant ce code ne fonctionne pas toujours sans que ni les éléments de liste, ni le code ou ni le userform n'aient changé.
Après plusieurs essais, j'ai remarqué que lq gestion des espaces était la source du problème. Mais je ne peux pas à chaque fois qu'il y a un bug faire la conversion des " " en "_".
Je viens vers vous pour savoir si vous avez une meilleure facon de rédiger ce code qui permettra d#éviter ce bug récurrent.
Private Sub UserForm_Initialize()
' First two Lists and Combobox
Dim Ws As Worksheet
Dim J As Long
Dim I As Integer
' First two Lists
Me.StartUpPosition = 2
ComboBox1.Clear
ListBox4.Clear
ListBox1.Clear
ListBox2.Clear
ListBox3.Clear
Set Ws = Sheets("Central Lists")
Me.ComboBox1.List = Ws.Range("D136:D" & Ws.Range("D" & Rows.Count).End(xlUp).Row).Value
Me.ListBox4.List = Ws.Range("A136:A" & Ws.Range("A" & Rows.Count).End(xlUp).Row).Value
Me.ListBox1.List = Ws.Range("J2:J" & Ws.Range("J" & Rows.Count).End(xlUp).Row).Value
End Sub
' ********************** CASCADE1 *********************
' Cascade Lists 2
Private Sub ListBox1_Change()
Dim derlgn As Byte, TInfos
If ListBox1.ListIndex = -1 Then Exit Sub
ListBox2.Clear
'Column Letter
LCol2 = Split(Cells(8, ListBox1.ListIndex + 2).Address, "$")(1)
derlng = Sheets("Lists").Range(LCol2 & "3").End(xlDown).Row
With ListBox2
If derlng <> 4 Then
.List = Sheets("Lists").Range(LCol2 & "4:" & LCol2 & derlng).Value
Else
.AddItem Sheets("Lists").Range(LCol2 & "4")
End If
.ListIndex = 0
End With
End Sub
' ********************** CASCADE2 *********************
' Cascade Lists 3
Private Sub ListBox2_Change()
Dim derlgn As Byte
If ListBox2.ListIndex = -1 Then Exit Sub
ListBox3.Clear
dercol = Sheets("Lists").Cells(9, Columns.Count).End(xlToLeft).Column
'Column Letter
LCol = Split(Cells(8, dercol).Address, "$")(1)
Set Plage = Sheets("Lists").Range("B9:" & LCol & "9")
Col = WorksheetFunction.Match(ListBox2.Text, Plage, 0) + 1
'Column Letter
LCol = Split(Cells(8, Col).Address, "$")(1)
derlng = Sheets("Lists").Range(LCol & "9").End(xlDown).Row
With ListBox3
If derlng <> 10 Then
.List = Sheets("Lists").Range(LCol & "10:" & LCol & derlng).Value
Else
.AddItem Sheets("Lists").Range(LCol & "10")
End If
.ListIndex = 0
End With
End Sub
En gras, c'est la ligne qui bug avec le message suivant: "Unable to get the match property of the worcksheetfunction class.
EDIT: En faisant des tests plus précis, je viens de me rendre compte que je ne peux pas cliquer sur un élélement de la listbox1, de ce fait la worksheetFunction.Match ne peut pas fonctionner puisqu'elle cherche un vide (""). Source, le moniteur pas à pas de VBA.
Par avance, je vous remercie du temps que vous accorderez à mon problème,
Sincèrement,
A voir également:
- Formulaire avec listes en cascade
- Whatsapp formulaire opposition - Guide
- Liste déroulante en cascade - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Webmastering