Tableau excel en liste dans UserForm

Résolu/Fermé
cestsupergenial Messages postés 17 Date d'inscription mercredi 25 mai 2016 Statut Membre Dernière intervention 13 février 2017 - 13 févr. 2017 à 09:19
cestsupergenial Messages postés 17 Date d'inscription mercredi 25 mai 2016 Statut Membre Dernière intervention 13 février 2017 - 13 févr. 2017 à 12:07
Bonjour,


Je suis en train de réaliser un outil permettant de sélectionner des informations dans un tableur excel à la manière d'un tableau mais via un UserForm, et je galère un peu. Si vous aviez des idées, je suis preneur !

Je m'explique:
Je rentre des informations dans ma feuille, qui sont converties en tableau grâce à un code. Jusque là, tout roule.

Ces informations concernent l'état de stock a une date d'un produit, qui appartient à differentes catégories (Ici groupe, marque, modèle, date et l'information de sortie nb commandes). Par exemple, on peut avoir en groupe avion, voiture, dans les marques correspondant au groupe voiture Citroen, Peugeot, dans les modèles correspondant à peugeot 205, 106...

J'aimerai pouvoir avoir un UserForm avec listes déroulantes se coportant comme un tableau: dans un liste je choisit le groupe qui m'intéresse (sans doublon), puis dans la liste marque ça me chargerait toutes les marques appartenant à ce groupe, et ainsi de suite, jusqu'à obtenir le nb commandé à une date précise.

Avez vous des pistes ?

ICi, mon code tel qu'il est actuellement !
http://www.cjoint.com/c/GBniiZR0XQ0

Merci d'avance =)
A voir également:

3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 févr. 2017 à 11:29
Bonjour CSG, bonjour le forum,

Essaie avec le code ci-dessous :
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Tableau des Valeurs)

Set O = Worksheets("BD") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les valeur des données en comlonne 1 de TV
Next I 'prochaine ligne de la boucle
'alimente la ComboBox [champ_groupe] avec la liste des éléments du dictionnaire D sans doublon
Me.champ_groupe.List = D.keys
End Sub

Private Sub champ_groupe_Change()
Dim D As Object
Dim I As Integer

Me.champ_marque.Clear
Me.champ_modele.Clear
Me.champ_date.Clear
Me.champ_stock.Clear
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.champ_groupe Then D(TV(I, 2)) = ""
Next I
Me.champ_marque.List = D.keys
End Sub

Private Sub champ_marque_Change()
Dim D As Object
Dim I As Integer

Me.champ_modele.Clear
Me.champ_date.Clear
Me.champ_stock.Clear
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.champ_groupe And Me.champ_marque = TV(I, 2) Then D(TV(I, 3)) = ""
Next I
Me.champ_modele.List = D.keys
End Sub

Private Sub champ_modele_Change()
Dim D As Object
Dim I As Integer

Me.champ_date.Clear
Me.champ_stock.Clear
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.champ_groupe And Me.champ_marque = TV(I, 2) _
       And Me.champ_modele = TV(I, 3) Then D(TV(I, 5)) = ""
Next I
Me.champ_date.List = D.keys
End Sub

Private Sub champ_date_Change()
Dim D As Object
Dim I As Integer

Me.champ_stock.Clear
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.champ_groupe And Me.champ_marque = TV(I, 2) _
       And Me.champ_modele = TV(I, 3) And Me.champ_date = CStr(TV(I, 5)) Then Me.champ_stock.AddItem TV(I, 4)
Next I
End Sub

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 févr. 2017 à 11:33
Bonjour a tous,

Fichier sans dictionary, avec subroutines de recherche fonction objet

https://www.cjoint.com/c/GBnkGNoCgRf
0
cestsupergenial Messages postés 17 Date d'inscription mercredi 25 mai 2016 Statut Membre Dernière intervention 13 février 2017
13 févr. 2017 à 12:01
Merci à tous les deux !

@f894009, ta solution est pile poil ce que je cherchais, merci bien !
Par contre, pour que je comprenne, à quoi sert ColCrit dans ce que tu as fait ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 févr. 2017 à 12:07
Re,
Ben, c'est la colonne ou il y a la valeur de la combobox selectionnee!!!
0
cestsupergenial Messages postés 17 Date d'inscription mercredi 25 mai 2016 Statut Membre Dernière intervention 13 février 2017 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
13 févr. 2017 à 12:07
super merci !
0