Si + Interior.ColorIndex

Résolu/Fermé
mathou - 24 mai 2017 à 16:49
 mathou - 26 mai 2017 à 08:25
Bonjour,

Sous VBA, je voudrais comparer deux colonnes et si les valeurs ne sont pas identiques alors colorier les cases d'une des 2 colonnes.

Voici ce que j'ai écrit mais XL me renvoie un message "erreur 91" et je ne comprends pas d'où est-ce que l'erreur vient...

Voici le code :

Sub FournLVD()

Dim CodeFourn As Range
Dim CodeFournLVD As Range

CodeFourn = Range("CodeFournisseur")
CodeFournLVD = Range("CodeFournisseurLVD")

For Each CodeFournLVD In Range("CodeFournisseurLVD")

If Not IsEmpty(CodeFourn) And CodeFournLVD <> CodeFourn Then
CodeFournLVD.Interior.ColorIndex = 6

End If

Next

End Sub



Merci d'avance pour votre aide !

P.S. je suis novice dans VBA !!

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 mai 2017 à 17:29
Bonjour,

c'est ici que ca coince
CodeFourn = Range("CodeFournisseur")
CodeFournLVD = Range("CodeFournisseurLVD")

Vous declarez ces deux variables en Range, donc pour les affecter
    Set CodeFourn = Range("CodeFournisseur")
    Set CodeFournLVD = Range("CodeFournisseurLVD")

Mais la suite ne va pas du tout

Deux facons de faire:
Sub FournLVD()
    Dim CodeFourn As Range
    Dim CodeFournLVD As Range

    Set CodeFourn = Range("CodeFournisseur")
    Set CodeFournLVD = Range("CodeFournisseurLVD")
    Nb = CodeFourn.Rows.Count
    For n = 1 To Nb
        If Not IsEmpty(CodeFourn(n, 1)) And CodeFournLVD(n, 1) <> CodeFourn(n, 1) Then
            CodeFournLVD(n, 1).Interior.ColorIndex = 6
        Else
            CodeFournLVD(n, 1).Interior.Pattern = xlNone
        End If
    Next n
End Sub

Sub FournLVD_1()
    With Worksheets("feuil1")
        Nb = .Range("CodeFournisseur").Rows.Count
        For n = 1 To Nb
            If Not IsEmpty(.Range("CodeFournisseur").Cells(n, 1)) And .Range("CodeFournisseurLVD").Cells(n, 1) <> .Range("CodeFournisseur").Cells(n, 1) Then
                .Range("CodeFournisseurLVD").Cells(n, 1).Interior.ColorIndex = 6        'jaune
            Else
                .Range("CodeFournisseurLVD").Cells(n, 1).Interior.Pattern = xlNone      'pas de couleur
            End If
        Next n
    End With
End Sub


A dispo pour plus d'explications
0
Bonjour,

Ca marche, c'est super merci beaucoup!!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
24 mai 2017 à 17:31
Bonjour

essaies
CodeFourn = set Range("CodeFournisseur")
CodeFournLVD = set Range("CodeFournisseurLVD")

a l"avenir lorsque tu post des codes, merci de la mette entre balises

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 mai 2017 à 17:34
Bonjour,
T'es sur de ton code?
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
Modifié le 24 mai 2017 à 17:37
Sauf erreur de ma part, le set se trouve en début de ligne, pas après le =, en VBA/VB6.

Et j'ai ajouté la coloration du code dans la question :
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
0
D'accord j'y penserai la prochaine fois, merci du retour en tout cas
0