La ComboBox est vide au retour dans le UseForm
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:
1 2 3 4 5
| Public Sub UserForm_Initialize()
GenerateurDeComboBox "Bloc", 1
End Sub |
Le module générateur de ComboBox:
Code:
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:
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