Macro excel vlookup
Résolu
beckie
-
beckie -
beckie -
Bonjour,
Dans un fichier excel (2007) avec 2 worksheet
- le premier worksheet ("All) j'ai une liste de noms worldwide trié par ordre alphabetique dans une seule colonne
- le deuxième worksheet ("France") j'ai une liste de noms trié par ordre alphabetique dans une seule colonne
ce que je souhaite c'est que chaque fois qu'un nom worldwide est aussi en France je colorie la cellule.
Pour cela j'ai développé la macro suivante, mais cela ne fct pas. Tout aide me serait précieuse. merci beaucoup d'avance
Sub trouver()
Dim cellule As Range
For Each cellule In Sheets("All").Range("A1:A497")
If IsError(Application.VLookup(cellule, Sheets("France").Range("A1:A889"), 1, False)) Then
Rows(cellule.Row).Interior.ColorIndex = -4142
Else
Rows(cellule.Row).Interior.ColorIndex = 6
End If
Next
End Sub
Dans un fichier excel (2007) avec 2 worksheet
- le premier worksheet ("All) j'ai une liste de noms worldwide trié par ordre alphabetique dans une seule colonne
- le deuxième worksheet ("France") j'ai une liste de noms trié par ordre alphabetique dans une seule colonne
ce que je souhaite c'est que chaque fois qu'un nom worldwide est aussi en France je colorie la cellule.
Pour cela j'ai développé la macro suivante, mais cela ne fct pas. Tout aide me serait précieuse. merci beaucoup d'avance
Sub trouver()
Dim cellule As Range
For Each cellule In Sheets("All").Range("A1:A497")
If IsError(Application.VLookup(cellule, Sheets("France").Range("A1:A889"), 1, False)) Then
Rows(cellule.Row).Interior.ColorIndex = -4142
Else
Rows(cellule.Row).Interior.ColorIndex = 6
End If
Next
End Sub
7 réponses
-
Bonjour,
Essaies en remplacantIsError(Application.VLookup(cellule, Sheets("France").Range("A1:A889"), 1, False))
parapplication.countif(Sheets("France").Range("A1:A889"),cellule.value)=0
.value à cellule par prudence (à tester) -
-
Ok, mais quelle est l'erreur? as tu un message d'erreur,si oui lequel et sur quelle ligne?
As tu aucun effet ?
essaies en pas à pas (dans VBE, F8) installes des espions (débogage)...
tu dis, car en lisant ta macro, ca devrait marcher (comme tu t'en ai rendu compte :-)...) -
Bonjour Michel, Non je n'ai pas d'erreur, au contraire j'ai toutes les lignes du worksheet ALL qui se colorie en jaune au lieu d'avoir que les lignes dont le contenu des cellules de la premiere colonne est commune avec le worksheet France.
J'ai réduit la macro à :
--------------
Sub trouver()
Dim cellule As Range
For Each cellule In Sheets("All").Range("A1:A497")
If IsError(Application.VLookup(cellule, Sheets("France").Range("A1:A889"), 1, False)) Then
Rows(cellule.Row).Interior.ColorIndex = 6
End If
Next
End Sub
------------
Cdlt,
beckie -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Encore merci pour votre aide. j'ai trouvé pour quoi cela ne fct pas, il y avait des caratères blanc après chque nom dans une des deux collonnes.
merci encore de votre aide
Cordialement,
Bonne journée.
beckie -
Bonjour,
Regarde si cette macro te convientOption Explicit Sub reperer_francais() Dim Lig_fr As Long, Cptr As Long, Ref As String Dim Dico As Object Dim Lig_all As Long Set Dico = CreateObject("scripting.dictionary") With Sheets("france") Lig_fr = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row For Cptr = 1 To Lig_fr Ref = .Cells(Cptr, 1) Dico.Add Ref, Ref Next End With Application.ScreenUpdating = False With Sheets("all") Lig_all = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row For Cptr = 1 To Lig_all Ref = .Cells(Cptr, 1) If Dico.exists(Ref) Then .Rows(Cptr).Interior.ColorIndex = 6 Next End With End Sub
ci joint maquette
http://www.cijoint.fr/cjlink.php?file=cj201101/cijrlqK0Ks.xls -
Bonjour Michel,
Désolé pour le retard
Merci beaucoup pour cette macro qui fct trés bien!!
Bien cordialement,
beckie