Private Sub UserForm_Initialize()
ComboBox1.AddItem "Carte 1"
ComboBox1.AddItem "Carte 2"
ComboBox1.AddItem "Carte 3"
ComboBox1.AddItem "Carte 4"
End Sub
'lorsque le combobox "Carte" change
Private Sub ComboBox1_Change()
Dim cellFind As Range, firstAddress As String, cellNum As Range
'recherche la Carte (choisie dans le combobox) dans la ligne 4 de la feuille
Set cellFind = ThisWorkbook.Sheets("Feuil1").Cells.Find(ComboBox1.Text, , xlValues, xlWhole)
'si rien n'est trouvé (ça ne devrai pas arriver), quitter la macro
If cellFind Is Nothing Then Exit Sub
'RAZ du combobox "Numéro" et des labels "boitiers"
ComboBox2.Clear
Boitier1.Caption = ""
Boitier2.Caption = ""
firstAddress = cellFind.Address 'mémoriser l'adresse de la première cellule (contenant la "carte" choisie) trouvée
Do 'boucler
'saisir les numéros dans le combobox "Numéro"
Set cellNum = cellFind.Offset(2, 0) 'décaler cellFind de 2 lignes (on se situe sur le premier numéro)
While cellNum.Text <> "" 'tant qu'il y a du texte dans la cellule
ComboBox2.AddItem cellNum.Text 'ajouter le numéro
Set cellNum = cellNum.Offset(1, 0) 'décaler la cellule d'une ligne
Wend
Set cellFind = ThisWorkbook.Sheets("Feuil1").Cells.FindNext(cellFind) 'rechercher la cellule suivante sur la ligne (contenant la "carte" choisie)
Loop Until cellFind.Address = firstAddress 's'arrêter lorsqu'on revien à la première cellule trouvée
End Sub
'lorsque le combobox "Numéro" change
Private Sub ComboBox2_Change()
Dim cellFind As Range, firstAddress As String, cellNum As Range, zoneNum As Range
'RAZ des labels "boitiers"
Boitier1.Caption = ""
Boitier1.BackColor = &H8000000F
Boitier2.Caption = ""
Boitier2.BackColor = &H8000000F
If ComboBox2.Text = "" Then Exit Sub
'recherche la Carte (choisie dans le combobox) dans la ligne 4 de la feuille
Set cellFind = ThisWorkbook.Sheets("Feuil1").Cells.Find(ComboBox1.Text, , xlValues, xlWhole)
'si rien n'est trouvé (ça ne devrai pas arriver), quitter la macro
If cellFind Is Nothing Then Exit Sub
firstAddress = cellFind.Address 'mémoriser l'adresse de la première cellule (contenant la "carte" choisie) trouvée
Do 'boucler
Set zoneNum = cellFind.Offset(2, 0) 'définir la zone des numéros
For Each cellNum In Range(zoneNum, zoneNum.End(xlDown)).Cells
If cellNum = ComboBox2.Text Then
'afficher les valeurs dans les labels "boitiers"
Boitier1.Caption = cellNum.Offset(0, 1) 'Boitier1 --> 1 cellule à droite de cellFind
Boitier1.BackColor = cellNum.Offset(0, 1).Interior.Color
Boitier2.Caption = cellNum.Offset(0, 2) 'Boitier2 --> 2 cellules à droite de cellFind
Boitier2.BackColor = cellNum.Offset(0, 2).Interior.Color
Exit Do
End If
Next cellNum
Set cellFind = ThisWorkbook.Sheets("Feuil1").Cells.FindNext(cellFind) 'rechercher la cellule suivante (contenant la "carte" choisie)
Loop Until cellFind.Address = firstAddress 's'arrêter lorsqu'on revien à la première cellule trouvée
If cellNum Is Nothing Then Exit Sub 'si rien n'est trouvé (ça ne devrai pas arriver), quitter la macro
End Sub