Si + Interior.ColorIndex

Résolu
mathou -  
 mathou -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. mathou
       
      Bonjour,

      Ca marche, c'est super merci beaucoup!!!
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      T'es sur de ton code?
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      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
    3. mathou
       
      D'accord j'y penserai la prochaine fois, merci du retour en tout cas
      0