Si + Interior.ColorIndex

Résolu
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

  1. 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
    1. Bonjour,

      Ca marche, c'est super merci beaucoup!!!
  2. Contributeur
    Bonjour

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

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

    1. Bonjour,
      T'es sur de ton code?
    2. Modérateur
      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.
    3. D'accord j'y penserai la prochaine fois, merci du retour en tout cas