cathodique
XLDnaute Barbatruc
Bonsoir,
Ne maitrisant pas très bien le dictionnaire, je trouve des difficultés à parvenir au bout de mon raisonnement.
Je m'explique, sur la feuille BD (col 3, 4 et 5) on trouve les valeurs de la feuille Test F1 correspond à col 3, C2correspond à col 4 et C3 correspond à col 5. sur la feuille BD on les retrouve plusieurs fois.
Alors je voudrais faire un test sur la présence ou non sur la feuille BD par rapport aux cellules F1,C2et C3.
je ne veux pas passer par une colonne intermédiaire. Mon idée est d'utilisé un tableau et un dictionnaire.
J'ai récupéré les données de la feuille BD dans un tableau les valeurs correspondant à F1,C2 et C3 et j'ai concaténé dans un tableau. mon souci est comment récupéré de ce dernier tableau les valeurs sans doublons.
Normalement, il n'en restera qu'une afin que je puisse la comparer à la concaténation de F1,C2 et C3.
En vous remerciant par avance.
Mon objectif est faire un test en mémoire, extraire du tableau RES(4,J) valeur sans doublon ou bien vérifier que la concaténation de F1,C2 et C2 existe dans le dictionnaire pour effectuer tel ou tel autre procédure.
Ne maitrisant pas très bien le dictionnaire, je trouve des difficultés à parvenir au bout de mon raisonnement.
Je m'explique, sur la feuille BD (col 3, 4 et 5) on trouve les valeurs de la feuille Test F1 correspond à col 3, C2correspond à col 4 et C3 correspond à col 5. sur la feuille BD on les retrouve plusieurs fois.
Alors je voudrais faire un test sur la présence ou non sur la feuille BD par rapport aux cellules F1,C2et C3.
je ne veux pas passer par une colonne intermédiaire. Mon idée est d'utilisé un tableau et un dictionnaire.
J'ai récupéré les données de la feuille BD dans un tableau les valeurs correspondant à F1,C2 et C3 et j'ai concaténé dans un tableau. mon souci est comment récupéré de ce dernier tableau les valeurs sans doublons.
Normalement, il n'en restera qu'une afin que je puisse la comparer à la concaténation de F1,C2 et C3.
Code:
'Option Explicit
Sub Test_Critères()
Dim fo As Worksheet, bd As Worksheet, fg As Worksheet
Dim LastLig As Long
Dim Tb, RES(), Ret(), mondico
Dim Val1 As String, Val2 As String, Val3 As String
Dim i As Long, j As Long
'''''''''''''''''''''''''''''''''''''''''''
Set bd = Sheets("BD") 'définit l'onglet bd
Set fo = Sheets("Feuil1") 'juste pour voir resultat
Set fg = Sheets("test") 'où sont les paramètres
'==============================================================================
Application.ScreenUpdating = False
'Dans la variable tableau Tb on récupère toutes les données de la feuille BD
With bd
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
Tb = .Range("C2:E" & LastLig)
End With
Val1 = fg.Range("F1") 'date
Val2 = fg.Range("C2") 'size1
Val3 = fg.Range("C3") 'size
'on parcours le tableau Tb et si la ligne correspond aux 3 critères
For i = 1 To LastLig - 1
'
If Tb(i, 1) = Val1 And Tb(i, 2) = Val2 And Tb(i, 3) = Val3 Then
'on incrémente le compteur j
j = j + 1
'On redimensionne notre tableau Resultat Res
ReDim Preserve RES(1 To 4, 1 To j)
'Le compteur est inscrit en 1ère ligne
'on fait une petite boucle
RES(1, j) = Tb(i, 1) 'date
RES(2, j) = Tb(i, 2) 'size1
RES(3, j) = Tb(i, 3) 'size2
RES(4, j) = Tb(i, 1) & Tb(i, 2) & Tb(i, 3)
End If
Next i
'''''ces 3 lignes juste pour avoir une idée du résultat''''''''''
LastLig = o.Cells(o.Rows.Count, 1).End(xlUp).Row
If LastLig > 1 Then o.Range("A2:L" & LastLig).Clear
If j > 0 Then o.Range("A2").Resize(j, 4) = Application.Transpose(RES)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
Mon objectif est faire un test en mémoire, extraire du tableau RES(4,J) valeur sans doublon ou bien vérifier que la concaténation de F1,C2 et C2 existe dans le dictionnaire pour effectuer tel ou tel autre procédure.