Dim S As Worksheet
Dim R As Range
Dim var As Variant
Dim i&
Dim j&
Dim cpt&
Dim T() 'tableau dynamique
Set S = Sheets("table equipement adresse") 'la feuille dans une variable objet Worksheet
Set R = S.[a1].CurrentRegion 'la plage entourant la cellule A1 (A1:C8 dans cet exemple)
var = R 'transfère toutes les données de la plage dans un Variant (cela donne l'équivalent d'un tableau bidimensionné)
For i& = 1 To UBound(var, 1) 'pour toutes les lignes du Variant
If var(i&, 3) = Var_ID_Client Then 'si équivalence trouvée (i& est la ligne, 3 correspond à la 3ème colonne)
cpt& = cpt& + 1 'on incrémente le compteur de 1
ReDim Preserve T(1 To cpt&) 'on redimensionne le tableau tout en préservant les données déjà inscrites
T(cpt&) = var(i&, 2) 'on affecte la valeur dans le tableau dynamique
End If
Next i&
'#####################################################################
'### modification 16/05/2012 : (s'il n'y a pas de marque associée) ###
If cpt& > 0 Then '@@@ si le compteur est >0 (on a trouvé au moins une équivalence
Me.MP1.Value = 1 'change la page du MultiPage
Set S = Sheets("table equipement actif") 'MEME CHOSE QUE BOUCLE PRECEDENTE
Set R = S.[a1].CurrentRegion 'on obtient la plage A1:A8 car la colonne B est vide
Set R = R.Resize(R.Rows.Count, R.Columns.Count + 2) 'on étend la plage pour inclure les colonnes B et C
var = R
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(T)
If var(i&, 1) = T(j&) Then
T(j&) = var(i&, 3)
End If
Next j&
Next i&
Nmarque.List = T
Else '@@@ sinon
MsgBox "Pas de marque associée"
End If
'#####################################################################