Bonsoir !
Je commence par me présenter simplement : newbie dans le domaine du VBA, étudiant en Genie Mécanique, on nous apprend quelques rudiments du VBA en cour, ce qui explique ma présence sur ce forum, qui m'as déjà beaucoup aidé jusqu'ici !
Je travail sur un petit projet de "bibliothèque", qui pour l'instant se limite à un userform rechercher qui permet d'aller chercher les livres qui m'interesse dans la feuille de base et de les renvoyer dans une autre feuille. Enfin bref, passons plutôt au problème.
Alors je cherche a créer ce qui se présente dans le menu déroulant de ma combobox de manière automatique. Pour la première, aucun problème (plutôt simple), mais la deuxième me pose un peu plus de problèmes...
Je m'explique : il me faut récupérer dans la colonne "C" tout les genres de documents auxquels je peut etre confronté (Roman, BD, Manga...)
Le problème cest que cela m'affiche donc 30 000 fois la meme chose avec ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Private Sub UserForm_Initialize() 'Initialisation du menu déroulant de la ComboBox1 Dim VarDerColonne, i As Integer CategorieBox.Clear VarDerColonne = Worksheets("params").Range("Z1").End(xlToLeft).Column 'On ajoute la possibilité de pouvoir rechercher dans toutes les categories CategorieBox.AddItem ("TOUT") For i = 1 To (VarDerColonne - 1) CategorieBox.AddItem (Cells(1, i).Value) Next i CategorieBox.ListIndex = 0 Dim VarDerLigne As Integer GenreBox.AddItem ("TOUT") MsgBox "b" VarDerLigne = Worksheets("params").Range("C65536").End(xlUp).Row 'VarPlage = Sheets("params").Range("C2:C" & VarDerLigne).Address GenreBox.RowSource = "params!" & VarPlage GenreBox.ColumnHeads = False GenreBox.ListIndex = 0 End Sub
C'est une réutilisation du code que notre professeur nous avais donné.
J'ai donc tenté quelque chose : (pour la seconde combobox, sois GenreBox, la première étant CategorieBox)
Mais cela ne fonctionne malheureusement pas "erreur de type"... je suppose que c'est du au "new_cat" mais je ne vois vraiment pas comment faire autrement !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Dim VarDerLigne, new_cat As Integer GenreBox.AddItem ("TOUT") MsgBox "b" VarDerLigne = Worksheets("params").Range("C65536").End(xlUp).Row new_cat = Worksheets("params").Range("C1").Value GenreBox.AddItem (new_cat) For i = 1 To VarDerLigne If Worksheets("params").Range("C" & i).Value <> new_cat Then new_cat = Range("C" & i).Value GenreBox.AddItem (new_cat) End If Next i End Sub
En espérant avoir été assez clair(et ne pas avoir fait trop de fautes)
Merci d'avance !!
Shady
Partager