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
| Private Sub listepiece_Change()
Dim vlistepiece As Range
'je met à zéro ma combo
Me.listecote.Clear
With Sheets("cote")
'je recherche dans la colonne 1 la valeur choisie dans la combo listepiece
Set vlistepiece = .Columns(1).Find(Me.listepiece.Value)
'si cette valeur existe alors
If Not vlistepiece Is Nothing Then
'je vais boucler sur les cellules à partir de la ligne trouvée
'jusqu'à la dernière ligne non vide de la colonne B
For i = vlistepiece.Row To .Range("B65536").End(xlUp).Row
'si la valeur de la cellule en A est égale à la valeur choisie dans la combo listepiece
'ou si la valeur en A est null alors
If .Range("A" & i) = Me.listepiece.Value Or .Range("A" & i) = "" Then
'si la valeur dans la cellule voisine "B" est non null alors
If .Range("B" & i) <> "" Then
'je met la valeur trouvée en B dans la combo listecote
Me.listecote.AddItem (.Range("B" & i).Value)
End If
'si je ne trouve pas la valeur alors
Else
'je sors de la procédure
Exit Sub
End If
Next i
End If
End With
End Sub
Private Sub UserForm_Initialize()
Dim i As Long, derlign As Long
With Sheets("Cote")
'je récupère le n° de la dernière ligne utilisée de la colonne A
derlign = .Range("A65536").End(xlUp).Row
'je boucle à partir de la 1ere ligne jusqu'a la dernière ligne
For i = 1 To derlign
'si la valeur en A est différente de null alors
If .Range("A" & i) <> "" Then
' je met dans la combo listepiece la valeur de la cellule A
Me.listepiece.AddItem (.Range("A" & i).Value)
End If
Next i
End With
End Sub |