Colorer une ligne suivant valeur VBA EXCEL

Résolu
tito23 Messages postés 318 Statut Membre -  
tito23 Messages postés 318 Statut Membre -
Bonjour,

Je voudrais colorer une ligne ou bien un ensemble de cellules d'une ligne suivant la valeur d'une cellule d'un colonne, j'ai fait ceci
Private Sub colorer()
Dim i As Integer
Dim plage As Range
Set plage = Range(Cells(lig, 2), Cells(lig, 5))
i = 6
While Cells(5, i) <> ""
Select Case Range("E" & i)
    Case Is = "Sandbox"
        plage.Interior.ColorIndex = 19 'Jaune pâle pour "En attente"
     Case Is = "Delivery"
        plage.Interior.ColorIndex = 27 'Jaune foncé pour "Déclinée"
    Case Is = "Factory"
      plage.Interior.ColorIndex = 3 'Rouge pour "Perdue"
    Case Else
        plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select

i = i + 1

Wend


End Sub

Lorsque je clique sur "exécuter", j'ai l'erreur d'exécution 1004 'Erreur définie par l'application ou par l'objet',

Et merci d'avance



--
Merci de changer le problème en résolu quand vous trouvez une solution

3 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Un peu optimiser..
    Private Sub colorer() 
    Dim lig As Long, N As Integer 
        With Sheets("Feuil1") 
            For lig = 6 To .Range("E6").End(xlDown).Row 
                Select Case .Range("E" & lig) 
                    Case Is = "Sandbox": N = 19 'Jaune pâle pour "En attente" 
                    Case Is = "Delivery": N = 27 'Jaune foncé pour "Déclinée" 
                    Case Is = "Factory": N = 3 'Rouge pour "Perdue" 
                    Case Else: N = -4142 ' enlève la couleur 
                End Select 
                .Range(Cells(lig, 2), Cells(lig, 5)).Interior.ColorIndex = N 
            Next lig 
        End With 
    End Sub

    A+
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    pas de valeur donnée à la variable "lig"
    0
    1. tito23 Messages postés 318 Statut Membre 4
       
      Merci de ta réponse, j'ai fait comme ceci, pas d'erreur mais pas de coloration pour les lignes
      Private Sub colorer()
      ThisWorkbook.Activate
      Dim i As Integer
      Dim plage As Range
      Dim lig As Byte
      With Sheets("Feuil1")
      
      i = 6
      While Cells(5, i) <> ""
      lig = Cells(5, i).Row
      Set plage = .Range(Cells(lig, 2), Cells(lig, 5))
      Select Case .Range("E" & i)
          Case Is = "Sandbox"
              plage.Interior.ColorIndex = 19 'Jaune pâle pour "En attente"
           Case Is = "Delivery"
              plage.Interior.ColorIndex = 27 'Jaune foncé pour "Déclinée"
          Case Is = "Factory"
            plage.Interior.ColorIndex = 3 'Rouge pour "Perdue"
          Case Else
              plage.Interior.ColorIndex = -4142 ' enlève la couleur
      End Select
      
      i = i + 1
      
      Wend
      End With
      End Sub
      
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      actuellement tu inplémentes les colonnes et non les lignes?
      While Cells(5, i) <> ""
      tu t'arretes à la 1° colonne vide à partir de la col E
      0
    3. tito23 Messages postés 318 Statut Membre 4
       
      Cells(5,i) c'est pas la cellule qui est à la colonne E et la ligne i?
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      non
      la syntaxe est cells(ligne,colonne)

      si c'est ton erreur tu n'as pas besoin d'une double définition "i" et "lig" garde en 1 seule
      0
  3. tito23 Messages postés 318 Statut Membre 4
     
    Merci pour ton aide, le problème est résolu, j'ai comme ça
    Sub Worksheet_Change(ByVal Target As Range) 
    
    Dim i As Integer 
    Dim plage As Range 
    Dim lig As Byte 
    With Sheets("Feuil1") 
    
    i = 6 
    While i < 50  'Cells(5, i) <> "" And 
    lig = i 
    Set plage = .Range(Cells(lig, 2), Cells(lig, 5)) 
    Select Case .Range("E" & i).Value 
        Case Is = "Sandbox" 
            plage.Interior.ColorIndex = 19 'Jaune pâle pour "En attente" 
         Case Is = "Delivery" 
            plage.Interior.ColorIndex = 27 'Jaune foncé pour "Déclinée" 
        Case Is = "Factory" 
          plage.Interior.ColorIndex = 3 'Rouge pour "Perdue" 
        Case Else 
            plage.Interior.ColorIndex = -4142 ' enlève la couleur 
    End Select 
    
    i = i + 1 
    
    Wend 
    End With 
    End sub
    

    Merci de changer le problème en résolu quand vous trouvez une solution
    0