Excel: Problème Vlookup en VBA

Résolu
VdM001 Messages postés 21 Statut Membre -  
VdM001 Messages postés 21 Statut Membre -
Bonjour,

Je suis en train d'écrire une nouvelle macro qui comparerait deux fichiers et qui colorerait les éléments identiques aux deux fichiers. J'ai j'ai un souci avec mon Vlookup. J'obtiens tout le temps l'erreur: "Unable to get the Vlookup property of the WorksheetFunction class".
Apparemment ce serait un problème lorsque le Vlookup ne trouve pas la valeur cherchée; mais il devrait renvoyer False à ce moment là et mon code devrait marcher...

Pour l'instant j'essaye juste de comparer deux colonnes de nombres.

Voici ce que j'ai déjà écrit:
Sub Trouver()

For Each Cell In Range("B3:B202").Cells

If Application.WorksheetFunction.VLookup(Cell.Value, Workbooks("Book1(4).xls").Sheets("1").Range("B3:B22"), 1, False) = "False" Then
Cell.EntireRow.Interior.ColorIndex = -4142

ElseIf Application.WorksheetFunction.VLookup(Cell.Value, Workbooks("Book1(4).xls").Sheets("1").Range("B3:B22"), 1, False) = Cell.Value Then
Cell.EntireRow.Interior.ColorIndex = 6

End If
Next
End Sub

Merci d'avance pour votre aide

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,salut Mike

    essaies cette autre méthode:

    Dim cellule As Range 
    For Each cellule In Range("B3:B202") 
    If Application.CountIf(Workbooks("Book1(4).xls").Sheets("1").Range("B3:B22"), cellule) = 0 Then 
    Rows(cellule.Row).Interior.ColorIndex = -4142 
    Else 
    Rows(cellule.Row).Interior.ColorIndex = 6 
    End If
    next


    edit: ajouté oubli next
    :-x
    1
    1. VdM001 Messages postés 21 Statut Membre 1
       
      ^^ Ca marche parfaitement
      Merci beaucoup (je connaissais pas cette formule CountIf)
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    la foncction rechercheV renvoie "erreur" et non FALSE

    essaies (non testé)

    Dim cell As Range  
    For Each cell In Range("B3:B202")  
        If IsError(Application.VLookup(cell, Workbooks("Book1(4).xls").Sheets("1").Range("B3:B22"), 1, False)) Then  
            cell.EntireRow.Interior.ColorIndex = -4142  
        Else  
            cell.EntireRow.Interior.ColorIndex = 6  
        End If  
    Next


    question à creuser:
    sheets("1") correspond t il à la première feuille ou à une feuille nommée 1
    si 1° feuille: sheets(1)

    :-x
    0
    1. VdM001 Messages postés 21 Statut Membre 1
       
      Ca ne marche pas... Encore la même erreur.
      Merci quand même d'avoir essayé ^^

      Pour votre question, sheets("1") correspond à une feuille nommée 1
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Colle ce code dans le module du premier fichier (autre que Book1(4).xls associe le à un bouton.
    les deux fichiers doivent être ouvert ou il faudra modifier le code pour avoir l'ouverture automatique ou travailler en fichier fermé

    Sub test()
    Set Fich1 = ActiveWorkbook
    Set Fich2 = Workbooks("Book1(4).xls")
    coul = 3
    For n = 2 To Fich1.Sheets("Feuil1").Range("B65536").End(xlUp).Row
    For m = 2 To Fich2.Sheets("Feuil1").Range("B65536").End(xlUp).Row
    If InStr(Fich2.Sheets("Feuil1").Range("B" & m), Fich1.Sheets("Feuil1").Range("B" & n)) <> 0 Then
    Fich1.Sheets("Feuil1").Range("B" & n).Interior.ColorIndex = coul
    Fich2.Sheets("Feuil1").Range("B" & m).Interior.ColorIndex = coul
    coul = coul + 1
    If coul > 56 Then coul = 3
    End If
    Next m
    Next n
    End Sub
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0