[RESOLU] - Marco - UserForm - 3 Listbox liées - VBA

FlorianECCO

XLDnaute Nouveau
Bonjour,

J'ai un problème concernant les Listbox.

J'ai fait une petite mise en bouche sur le fichier excel ci-joint.

Merci de votre aide

Voila mon problème :

Je cherche a avoir un UserForm qui donne :
- Listbox1 : Je choisi ma marque
- Listbox2 : Je choisi mon type (proposé en fonction de la marque)
- Listbox3 : Je choisi la taille (proposé en fonction du type)

Mon problème : L'index colonne de la listbox2 est en fonction de la listbox1 & donc l'index listbox3 ne peut pas être dans la même configuration
car les données ne sont pas disposés pareil qui dans le listbox2 ; Les références index ne sont pas bonnes.
Exemple VBA :
Pour la Listbox1 : Ok on définit la plage de celulles & on les ajoutes à la Listbox1

Pour la Listbox2 : Dim no_colonne_Type As Integer, nb_lignes_Type As Integer
no_colonne_Type = Listbox1.ListIndex
nb_lignes_Type = Worksheets("Feuil1").Cells(2, no_colonne_Type).End(xlDown).Raw
For T = 3 To nb_lignes_Type
Listbox2.AddItem Worksheets("Feuil1").Cells(T, no_colonne_Type)
Next

Pour la Listbox3 : Dim no_colonne_Largeur As Integer, nb_lignes_Largeur As Integer
no_colonne_Largeur = Listbox2.ListIndex
nb_lignes_Largeur = Worksheets("Feuil1").Cells(18, no_colonne_Largeur).End(xlDown).Row
For L = 18 To nb_lignes_Type
Listbox2.AddItem Worksheets("Feuil1").Cells(L, no_colonne_Type)
Next
 

Pièces jointes

  • Classeur1.xlsx
    10.6 KB · Affichages: 59
  • Classeur1.xlsx
    10.6 KB · Affichages: 78
  • Classeur1.xlsx
    10.6 KB · Affichages: 81
Dernière édition:

PMO2

XLDnaute Accro
Re : Marco - UserForm - 3 Listbox liées - VBA

Bonjour,

A mon sens et avant toute chose, il faut atomiser les données en autant de colonnes que de groupes existants (soit dans votre exemple : 3 colonnes)
Marque A Type A 1
Marque A Type A 2
Marque A Type A 3
Marque A Type A 4
Marque A Type Z 1
Marque A Type Z 2
Marque A Type Z 3
Marque A Type 2 2
Marque A Type 2 3
Marque B Type R 2
Marque B Type R 7
Marque B Type U 3
Marque B Type U 4
Marque B Type U 6
Marque B Type U 7
Marque B Type U 9
Marque B Type U 11
Marque C Type E 9
Marque C Type E 12
Marque C Type E 14
Marque C Type R 13
Marque C Type R 16
Marque C Type 4 2
Marque C Type 4 3
Marque C Type 4 7
Marque C Type 9 1
Marque C Type 9 3
Marque C Type 9 9
Marque C Type 9 10
Marque D Type 6 8
Marque D Type 6 15

A suivre ...
 

RENAUDER

Nous a quitté
Repose en paix
Re : Marco - UserForm - 3 Listbox liées - VBA

Bonjour,

Voici un exemple.
Par contre tu ne devrais pas avoir de doublons dans les Types sinon ça pose problème.
 

Pièces jointes

  • Florian.xlsm
    23.3 KB · Affichages: 85
  • Florian.xlsm
    23.3 KB · Affichages: 80
  • Florian.xlsm
    23.3 KB · Affichages: 55
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Marco - UserForm - 3 Listbox liées - VBA

Bonsoir,

cf PJ

Code:
Private Sub UserForm_Initialize()
  Me.ListBox1.List = Application.Transpose([marque])
End Sub

Private Sub ListBox1_Click()
  Me.ListBox3.Clear
  p = Application.Match(Me.ListBox1, [marque], 0)
  h = Application.CountA(Range("marque")(1).Offset(1, p - 1).Resize(4))
  Me.ListBox2.List = [marque].Offset(1, p - 1).Resize(h).Value
End Sub

Private Sub ListBox2_Click()
  p = Application.Match(Me.ListBox2, [Type], 0)
  h = Application.CountA(Range("type")(1).Offset(1, p - 1).Resize(6))
  Me.ListBox3.List = [Type].Offset(1, p - 1).Resize(h).Value
End Sub

JB
 

Pièces jointes

  • Form.xls
    40.5 KB · Affichages: 55
  • Form.xls
    40.5 KB · Affichages: 74
  • Form.xls
    40.5 KB · Affichages: 72
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • FormCascade3niveauxMarque2.xls
    92 KB · Affichages: 79
Dernière édition:

FlorianECCO

XLDnaute Nouveau
Re : Marco - UserForm - 3 Listbox liées - VBA

Bonjour,

Voici un exemple.
Par contre tu ne devrais pas avoir de doublons dans les Types sinon ça pose problème.

Rebonjour à vous tous,

J'ai regardé ce que vous m'avez proposé avec attention & j'ai adapté ce que RENAUDER a partagé. J'ai aussi récupéré des morceaux de codes dans vos autres propositions.

Toutefois, j'utilise 2 menus déroulants pour Marque & Type et deux menus a sélection pour Largeur et Longueur.
J'ai une erreur qui s'affiche lorsque je souhaite changer la Marque, cela est lié au fait que les données contenus dans Types ne sont pas effacées.

Pour être plus claire : J'obtiens une erreur lorsque je sélectionne un Type et que je souhaite changer de Marque après.

=> Question : Comment vider la liste Type (& Largeur & Longueur) avant de la mettre a jour?

Merci encore pour votre aide,
Florian
 

FlorianECCO

XLDnaute Nouveau
Re : Marco - UserForm - 3 Listbox liées - VBA

Rebonjour à vous tous,

J'ai regardé ce que vous m'avez proposé avec attention & j'ai adapté ce que RENAUDER a partagé. J'ai aussi récupéré des morceaux de codes dans vos autres propositions.

Toutefois, j'utilise 2 menus déroulants pour Marque & Type et deux menus a sélection pour Largeur et Longueur.
J'ai une erreur qui s'affiche lorsque je souhaite changer la Marque, cela est lié au fait que les données contenus dans Types ne sont pas effacées.

Pour être plus claire : J'obtiens une erreur lorsque je sélectionne un Type et que je souhaite changer de Marque après.

=> Question : Comment vider la liste Type (& Largeur & Longueur) avant de la mettre a jour?

Merci encore pour votre aide,
Florian

Pas de réponse sur ce sujet, j'ouvre un nouveau sujet pour obtenir de l'aide sur cette nouvelle question.

Merci tout de même de votre aide qui m'a beaucoup avancé.
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 440
Membres
103 209
dernier inscrit
MIKA33260