Excel: Problème Vlookup en VBA
Résolu
VdM001
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
VdM001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
VdM001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Excel: Problème Vlookup en VBA
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
3 réponses
Re,salut Mike
essaies cette autre méthode:
edit: ajouté oubli next
:-x
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
Bonjour,
la foncction rechercheV renvoie "erreur" et non FALSE
essaies (non testé)
question à creuser:
sheets("1") correspond t il à la première feuille ou à une feuille nommée 1
si 1° feuille: sheets(1)
:-x
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
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.
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.
Merci beaucoup (je connaissais pas cette formule CountIf)