Excel: Problème Vlookup en VBA

Résolu/Fermé
VdM001 Messages postés 20 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 4 juin 2011 - 24 août 2010 à 08:27
VdM001 Messages postés 20 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 4 juin 2011 - 24 août 2010 à 13:12
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

A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 24/08/2010 à 11:06
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
VdM001 Messages postés 20 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 4 juin 2011
24 août 2010 à 13:12
^^ Ca marche parfaitement
Merci beaucoup (je connaissais pas cette formule CountIf)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 24/08/2010 à 09:37
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
VdM001 Messages postés 20 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 4 juin 2011
24 août 2010 à 09:46
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
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 082
Modifié par Mike-31 le 24/08/2010 à 10:58
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