Bonjour à tous,

J'ai créé il y a peu un Projet VBA dans le but de rechercher des données dans un tableau suivant plusieurs critères de recherche. Le projet en est au début.

Me voici donc avec mon UserForm1 et deux modules.
Je débute en VBA donc le programme peut choquer dans la forme.

Le UseForm:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Public Sub UserForm_Initialize()
 
GenerateurDeComboBox "Bloc", 1
 
End Sub
Le module générateur de ComboBox:

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
Public colLettre As String
 
Public Function GenerateurDeComboBox(NomDeLaColonne, NumeroDeLaComboBox)
 
  recherche NomDeLaColonne
 
  Dim i As Integer
  Dim Collec As Collection 
  Dim cel As Range 
  Dim x As Integer 
  Dim y As String
  Dim z As String
 
  y = colLettre & "2:" & colLettre
 
  z = colLettre & "65536"
 
  Combo = "ComboBox" & NumeroDeLaComboBox
 
  Set Collec = New Collection 'définit la variable Collec
 
  Sheets("Feuil1").Activate
 
  For Each cel In Sheets("Feuil1").Range(y & Sheets("Feuil1").Range(z).End(xlUp).Row)
    On Error Resume Next
 
    Collec.Add cel.Value, CStr(cel.Value)
  Next cel
 
  For x = 1 To Collec.Count
    Combo.AddItem Collec(x)
  Next x
 
End Function
Le module de recherche:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Public Function recherche(ARechercher)
 
    Dim celluletrouvee As Range
    Dim Lig As Integer
    Dim Col As Integer
    Dim ligLettre As String
 
    Sheets("Feuil1").Activate
 
    Set celluletrouvee = Range("1:1").Find(ARechercher, LookAt:=xlPart)
 
    If celluletrouvee Is Nothing Then
    MsgBox ("pas trouvé")
    End
    Else
        Lig = celluletrouvee.Row
        Col = celluletrouvee.Column
    End If
        Select Case Col
            Case 1
                colLettre = "A"
            Case 2
                colLettre = "B"
            Case 3
                colLettre = "C"
            Case 4
                colLettre = "D"
            Case 5
                colLettre = "E"
            Case 6
                colLettre = "F"
            Case 7
                colLettre = "G"
            Case 8
                colLettre = "H"
            Case 9
                colLettre = "I"
            Case 10
                colLettre = "J"
            Case 11
                colLettre = "K"
            Case 12
                colLettre = "L"
            Case 13
                colLettre = "M"
            Case 14
                colLettre = "N"
            Case 15
                colLettre = "O"
            Case 16
                colLettre = "P"
            Case 17
                colLettre = "Q"
            Case 18
                colLettre = "R"
            Case 19
                colLettre = "S"
            Case 20
                colLettre = "T"
            Case 21
                colLettre = "U"
            Case 22
                colLettre = "V"
            Case 23
                colLettre = "W"
            Case 24
                colLettre = "X"
            Case 25
                colLettre = "Y"
            Case 26
                colLettre = "Z"
        End Select
 
End Function
Le programme fonctionne très bien si je place les 2 modules dans le UseForm.

Dans le cas ci-dessus (ou l'ensemble est partitionné) la partie qui bloque est au moment ou le programme sort de la dernière boucle "Du module génerateur de ComboBox" et retourne dans le UseForm.
A ce moment là le programme se lance, le UseForm s'ouvre normalement mais le menu déroulant de la comBoBox est vide comme si la ComBox avait perdu toutes ces entrés lors du retour au UseForm.
Plus clairement c'est ce qui arrive lorsqu'une variable n'est pas déclarée pour l'ensemble d'un projet et qu'on veut la récupèrer dans un module différent du module de déclaration. Pareil ici la ComboBox ne semble exister que dans le module ou elle a été généré.

J'espère que quelqu'un pourra me dire comment rendre la ComboBox dispo en dehors du "module génerateur de ComboBox" ou bien même s'il y a une erreur dans le code.

Merci à tous