Macro excel vlookup

Résolu/Fermé
beckie - 7 janv. 2011 à 16:28
 beckie - 12 janv. 2011 à 06:32
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




A voir également:

7 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 310
7 janv. 2011 à 16:45
Bonjour,

Essaies en remplacant
IsError(Application.VLookup(cellule, Sheets("France").Range("A1:A889"), 1, False))

par
application.countif(Sheets("France").Range("A1:A889"),cellule.value)=0

.value à cellule par prudence (à tester)
0
Merci michel, mais cela n'a rien changer :(
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
7 janv. 2011 à 17:43
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 :-)...)
0
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
0

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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 janv. 2011 à 10:09
Bonjour,

Regarde si cette macro te convient
Option 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
0
Bonjour Michel,
Désolé pour le retard

Merci beaucoup pour cette macro qui fct trés bien!!
Bien cordialement,
beckie
0