Bonjour à tous,

Je travaille à la réalisation d'un formulaire sur excel en utilisant des userforms (passage d'un Userform à un autre avec des boutons "Next" et "Back").

Sur un des userforms (Userform03), je souhaiterais insérer des comboboxs (au nombre de 9), qui s'alimentent à partir de données dans un onglet de mon fichier excel, à la fois :
- en supprimant les doublons
- et en présentant les données de la combobox par ordre alphabétique (car les données dans la feuille excel ne sont pas triées et ne doivent pas l'être).

Pour remplir ma Combobox1 sur mon Userform03, voici ce que j'ai fait:

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
29
30
31
32
33
34
35
36
Private Sub UserForm_Initialize()
 
Dim sd As Object 
Dim str As Range 
Dim cel As Range 
Dim tbl As Variant 
Dim i As Integer 
Dim j As Integer 
Dim temp As Variant 
 
Set sd = CreateObject("Scripting.Dictionary") 
 
    With Sheets("Entities") 'feuille sur laquelle se trouvent mes données qui permettent d'alimenter ma combobox
        Set str = .Range(Range("C2"), Range("C65536").End(xlUp)) 'définit la plage de données 
    End With
 
        For Each cel In str
            sd(cel.Value) = ""      'alimente la liste sans doublons
        Next cel
        tbl = sd.keys           'définit le tableau des valeurs sans doublons
 
'tri alphabétique
 
For i = 0 To UBound(tbl)            
    For j = 0 To UBound(tbl)        
        If tbl(i) < tbl(j) Then     
            temp = tbl(i)           
            tbl(i) = tbl(j)         
            tbl(j) = temp           
        End If
    Next j
Next i   
 
Me.ComboBox1.List = tbl 
 
End Sub

Cela marche plutôt bien pour une seule combobox. Mais c'est dès que je cherche à remplir les autres Combobox que cela se complique.

J'ai essayé de dupliquer (autant de fois qu'il y a de combobox) la procédure en créant de nouvelles variables (dans le même sub) mais le passage du Userform02 au Userform03 ne marche pas. J'ai le message d'erreur suivant lorsque je tente de passer du Userform02 au Userform03 : "Erreur d'execution '9': l'indice n'appartient pas à la sélection".

Lorsque je clique sur débogage, c'est la ligne suivante ( présente dans le code du Userform2) qui est surlignée en jaune et à la source du bug (en gras et soulignée ci-dessous) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub CommandButton1_Click()

'Passer au UserForm03
    Unload Me
    UserForm03.Show
        
End Sub

Auriez-vous une solution à mon problème, ou une autre alternative afin de remplir plusieurs combobox dans un userform ?

Merci beaucoup pour votre attention.

Sébastien