Bonsoir à tous,

J'aimerais comparer une plage à un tableau Tbl.

Je voulais utiliser la fonction InArray, mais ça ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
if cel.Value inarray(tbl) then range("F" & Cel.Row).Value="#" & Strdate & "#"
Alors j'ai ajouté quelques lignes de codes pour remplacer le travail de cette fonction...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sub Comparer()
    Dim WS1 As Worksheet, WS2 As Worksheet
    Dim i As Long, j As Long
    Dim Tbl() As String, Strg As String, Strdate As String
    Dim C As Range, Cel As Range
 
    Set WS1 = Sheets("feuil1")
    Set WS2 = Sheets("feuil2")
    Strdate = Format(Now, "dd/mm/yy")
 
 
    '-- Remplir le tableau Tbl par les valeurs de la colonne A correspondante
    i = 1
    For Each C In WS2.Range("F2:F" & WS2.[F65000].End(xlUp).Row)
        If C.Value = "Done" Then
            ReDim Preserve Tbl(i)
            Tbl(i) = WS2.Range("A" & C.Row)
            i = i + 1
        End If
    Next C
 
    '-- Regrouper les valeurs du Tbl dans la chaine Strg pour faciliter la comparaison avec InStr
    For j = 1 To UBound(Tbl)
        Strg = Strg & Tbl(j) & "|"
    Next j
 
    '-- S'il y a une valeur de la colonne A feuille 1 qui corresponde à une valeur de Tbl
    '-- On écrit la date d'aujourd'hui dans la colonne F
    For Each Cel In WS1.Range("A2:A" & [A65000].End(xlUp).Row)
 
        'if cel.Value inarray(tbl) then range("F" & Cel.Row).Value="#" & Strdate & "#"
        If InStr(Strg, Cel.Value) = 1 Then
            Range("F" & Cel.Row).Value = "#" & Strdate & "#"
        End If
    Next Cel
End Sub
1 - Existe-t-il une fonction similaire pour comparer une valeur à toutes les valeurs d'un tableau en une seule fois ?

2 - Si mon tableau Tbl comporte 4 valeurs, la dernière boucle du code ne considère la comparaison juste avec Instr que pour la première valeur seulement !

3 - Sinon comment réduire ces lignes de codes ?

Merci d'avance.