Boucle sur Vlookup génération d'erreur

Bonjour à tous,

Je souhaite effectuer un Vlookup sur chaque nombres d'une cellule qui contient plusieurs nombres séparés par un ";" ex : ( 165;164;204 ) pour voir si chaque nombres est bien présent dans une liste de nombre que j'ai dans une autre feuille.

J'effectue au préalable un split de cette cellule (B2 dans le code) pour pouvoir séparer les nombres des ";" ils sont alors dans un tableau puis je lance une boucle Vlookup sur les nombres afin de savoir si ils sont bien présent dans la liste (en feuil2).

Au final mon objectif est juste de savoir si les nombres dans cette cellule sont bien présent dans ma liste et si non que cela me sorte une erreur.

Actuellement avec le code ci dessous j'ai bien une boucle sur le vlookup qui s'effectue mais peu importe que le nombre soit dans la liste de nombre en Feuil 2 il compte tout comme une erreur.

Pourriez vous m'aider sur le sujet ?

Dim s As String
Dim a1() As String
Dim a2() As Variant
Dim t As Integer

                If Sheets("Feuil1").Range("A2") = "Supervisor" Then
                    If IsEmpty(Sheets("Feuil1").Range("B2")) Then
                        Sheets("Feuil1").Range("B2").Borders.ColorIndex = 3
                        count = count + 1 'décompte d'erreur qui est présent sur d'autre ligne de code'
                    Else
                        s = Sheets("Feuil1").Range("B2").Value
                        a1 = Split(s, ";")
                    ReDim a2(LBound(a1) To UBound(a1))
                        For t = LBound(a1) To UBound(a1)
                         a2(t) = Application.VLookup(Trim(a1(t)), Sheets("Feuil2").Range("A2:A107"), 1, False)
                           If IsError(a2(t)) Then
                           MsgBox Err.Number
                            Sheets(nomTrigger).Range(Letter & y).Borders.ColorIndex = 3
                            count = count + 1
                           Else
                            Sheets(nomTrigger).Range(Letter & y).Borders.LineStyle = xlLineStyleNone
                            End If
                    Next
                    End If
                End If

Bonjour

Peut être un problème de type, si d'un coté on a des string et de l'autre des double?

Sinon :

Sub verifPresence()
  Dim tb()
  Dim dc As Object
  Dim i!
  Set dc = CreateObject("Scripting.Dictionary")
  tb = Application.Transpose(Array(Split(Sheets("Feuil1").Range("B2").Value, ";")))
  For i = 2 To 108
    dc(CStr(Sheets("Feuil2").Range("A" & i).Value)) = ""
  Next i
  ReDim Preserve tb(1 To UBound(tb), 1 To 2)
  For i = 1 To UBound(tb)
    If dc.exists(CStr(tb(i, 1))) Then tb(i, 2) = 1 Else tb(i, 2) = 0
  Next i
  Sheets("Feuil1").Range("D2").Resize(UBound(tb, 1), 2) = tb
End Sub

Bonjour yal_excel,

En effet le problème concernait les types.

Merci beaucoup pour la proposition elle m'a été utile !

Rechercher des sujets similaires à "boucle vlookup generation erreur"