XL 2010 Comparer et colorier les valeur non présente dans la liste

Meloman

XLDnaute Occasionnel
bonjour à tous j'ai essayer bidouiller une macro pour faire apparaitre les valeurs manquante dans ma feuille liste.

le soucis c'est qu'il me fait tout le contraire il me colorie ceux qui sont présent et non la manquante
Code:
Sub Compare()
Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
Dim Lig2 As Long
    Derlig1 = Sheets("Dispo").Range("B65535").End(xlUp).Row
    Derlig2 = Sheets("Liste").Range("A65535").End(xlUp).Row
   
    With Sheets("Liste")
        For Lig1 = 3 To Derlig1
            Cp = Sheets("Dispo").Cells(Lig1, "B")
            For Lig2 = 4 To Derlig2
               ' If Cp = .Cells(Lig2, "A") Then .Cells(Lig2, "A").Interior.ColorIndex = 6
           If .Cells(Lig2, "A") = Cp Then .Cells(Lig2, "A").Interior.ColorIndex = 6
            Next Lig2
        Next Lig1
    End With
End Sub
comment dois je faire svp merci
 

Fichiers joints

Lolote83

XLDnaute Accro
Salut Meloman,
En modifiant ta macro comme ceci peut être
Code:
Sub Compare2()
    Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
    Dim Lig2 As Long
    Dim xTrouve As Boolean
    Derlig1 = Sheets("Dispo").Range("B65535").End(xlUp).Row
    Derlig2 = Sheets("Liste").Range("A65535").End(xlUp).Row
       With Sheets("Liste")
        For Lig2 = 4 To Derlig2
            xListe = .Cells(Lig2, "A")
            For Lig1 = 3 To Derlig1
                xDispo = Sheets("Dispo").Cells(Lig1, "B")
                If xListe = xDispo Then
                    xTrouve = True
                    Exit For
                Else
                    xTrouve = False
                End If
            Next Lig1
            If xTrouve = False Then
                .Cells(Lig2, "A").Interior.ColorIndex = 6
            End If
        Next Lig2
    End With
End Sub
@+ Lolote83
 

Lolote83

XLDnaute Accro
Salut à tous,
Vu que notre ami était parti sur une macro, je suis resté dans son sens, mais la solution de JHA est simplement superbe.
Bravo à toi JHA
@+ Lolote83
 

Paf

XLDnaute Barbatruc
Bonjour Meloman, Lolote83, JHA

une autre solution pour rester proche du code initial : on colore toute la plage au départ, puis on 'décolore' si existe.
VB:
Sub Compare()
Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
Dim Lig2 As Long
Derlig1 = Sheets("Dispo").Range("B65535").End(xlUp).Row
Derlig2 = Sheets("Liste").Range("A65535").End(xlUp).Row
   
With Sheets("Liste")
    .Range("A4:A" & Derlig2).Interior.ColorIndex = 6
    For Lig1 = 3 To Derlig1
        Cp = Sheets("Dispo").Cells(Lig1, "B")
        For Lig2 = 4 To Derlig2
           If .Cells(Lig2, "A") = Cp Then .Cells(Lig2, "A").Interior.ColorIndex = xlNone
        Next Lig2
    Next Lig1
End With
End Sub
A+
 

Meloman

XLDnaute Occasionnel
Bonjour paf et rebonjour jha et lolote

les macro proposer fonctionne tellement bien que je voulais savoir si il y a possibilité de l'amélioré un peu et de faire quelque chose pour remplacer en faite mes deux macro existant que j'ai et un peu lourd.
je m'explique

j'ai une liste en feuille Liste et en colonne A
une liste dans Dispo en Colonne B
et une dernière dans paramètre en colonne J

peut on ajouter dans Liste colonne A si le nom est présent dans dispos et Paramètre

en fait si valeur est présent dans dispos et Paramètre mais non présent dans liste incrémenter le nom manquant dans liste .
et au contraire si dans dispo le nom est pas présent le retiré de la feuille liste (Mais sa lolotte m'avais déja fait)

penser vous ce soit possible svp une forte de bouton de mise à jour en faite
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas