Colorier une ligne sur deux tableau VBA

Bonjour, je cherche à colorier automatiquement un tableau excel dont la dimension varie en fonction des extractions.

J'ai essayé de faire avec ce code mais j'ai une erreur l'indice n'appartient pas à la sélection. Pourtant j'ai bien vérifié le nom de ma feuille et vérifiait qu'il n'y est pas d'espace à "Feuil4".
Auriez-vous une idée merci !

Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A1").CurrentRegion

If tableau.Rows.Count > 1 Then
 For Each ligne In tableau.Rows
  If ligne.Row Mod 2 = 0 And ligne.Row <> tableau.Cells(1, 1).Row Then
   ligne.Interior.ThemeColor = RGB(223, 218, 213)
   Else
   ligne.Interior.ThemeColor = RGB(236, 234, 230)
  End If
 Next ligne
 End If
End Sub

Bonjour carla3111,

A tester :

Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A1").CurrentRegion

If tableau.Rows.Count > 1 Then
 For Each ligne In tableau.Rows
  If ligne.Row Mod 2 = 0 And ligne.Row <> tableau.Cells(1, 1).Row Then
   ligne.Interior.Color = RGB(223, 218, 213)
   Else
   ligne.Interior.Color = RGB(236, 234, 230)
  End If
 Next ligne
End If
End Sub

J'espere que cela vous aidera !

Bonjour, à tous les deux,
nos propositions se croisent.
Plutôt que d'avoir "en dur" A1 pourquoi ne pas utiliser le nom de votre tableau.
avec CurrentRegion, si une ligne ou une colonne est vide alors que les suivantes sont remplies, le coloriage s'arrêtera à la première ligne / colonne vide.
Mais c'est peut-être votre choix

Bonjour, merci beaucoup en effet ça marche parfaitement, mais comment faire pour éviter que l'en-tête de mon tableau soit concerné ?

J'ai essayé de modifier la sélection du tableau en mettant A2 à la place de A1 mais ça ne fonctionne pas.

Merci

Re bonjour,

A tester :

Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A2").CurrentRegion
Set tableau = tableau.Resize(tableau.Rows.Count - 1)

If tableau.Rows.Count >= 1 Then
 For Each ligne In tableau.Rows
  If ligne.Row Mod 2 = 0 Then
   ligne.Interior.Color = RGB(223, 218, 213)
   Else
   ligne.Interior.Color = RGB(236, 234, 230)
  End If
 Next ligne
End If
End Sub
Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A1").CurrentRegion

If tableau.Rows.Count > 1 Then
 For Each ligne In tableau.Rows
    If ligne.Row <> tableau.Cells(1, 1).Row Then
        If ligne.Row Mod 2 = 0 Then
            ligne.Interior.Color = RGB(223, 218, 213)
         Else
            ligne.Interior.Color = RGB(236, 234, 230)
        End If
    End If
 Next ligne
End If
End Sub

Bonjour j'ai essayé votre code et l'en-tête est toujours modifié de la couleur impair.

Bonjour

je cherche à colorier automatiquement un tableau excel dont la dimension varie en fonction des extractions.

Je n'ai peut être pas compris la finalité mais pourquoi utiliser et se compliquer avec un code ?
Si vous sélectionnez votre tableau puis vous faites un MFC en choisissant l'option "Utiliser une Formule...."
Dans la rubrique "Modifier la description de la règle" mettez cette formule -> =MOD(LIGNE();2)

Ensuite cliquez sur Format --> remplissage pour choisir la couleur

Crdlt

Re bonjour,

J'ai ajouté un compteur au code qui incrémente cette valeur à chaque tour de boucle (est-ce possible d'avoir accès au fichier si possible). A tester :

Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Dim compteur As Integer
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A2").CurrentRegion
Set tableau = tableau.Resize(tableau.Rows.Count - 1)

compteur = 1

If tableau.Rows.Count >= 1 Then
 For Each ligne In tableau.Rows
  If compteur Mod 2 = 0 Then
   ligne.Interior.Color = RGB(223, 218, 213)
   Else
   ligne.Interior.Color = RGB(236, 234, 230)
  End If
  compteur = compteur + 1
 Next ligne
End If
End Sub

Merci pour toutes vos réponses, j'ai trouvé une solution pour empêcher de prendre l'en-tête en utilisant offset.

Private Sub colorier()
Dim tableau As Range
Dim ligne As Range
Set tableau = ThisWorkbook.Sheets("Feuil4").Range("A2").CurrentRegion
Set tableau = tableau.Resize(tableau.Rows.Count - 1)

If tableau.Rows.Count > 1 Then
 For Each ligne In tableau.Offset(1).Rows
  If ligne.Row Mod 2 = 0 Then
   ligne.Interior.Color = RGB(223, 218, 213)
   Else
   ligne.Interior.Color = RGB(236, 234, 230)
  End If
 Next ligne
End If
End Sub

Bonjour le fil,

Dan vous donnait une solution simple en MFC, pourquoi ne pas l'utiliser

De plus, la transformation de votre plage de données en tableau (2 clics) le permet également

Il est vrai, pourquoi faire simple...quand on veut faire compliquer

Bonjour,

je prends en compte toutes les solutions qu'on me propose et remercie de nouveau Dan pour s'être penché sur mon problème et m'avoir proposé une solution adéquate :)

Cependant, ce code s'implémente dans un code beaucoup plus long, qui filtre/extrait des données, les trie, enlève les doublons, effectue des calculs complexes, adapte la longueur de colonne, etc... Ce code est destiné à créer un outil de suivi actualisé en un clic et en effet 50% des actions effectuées par ce code sont produites "en 2 clics" manuellement. Mais pourquoi perdre "2 clics" multipliés par 100 actions du même genre quand je peux tout automatiser et être tranquille par la suite. C'est ma faute de ne pas avoir expliqué ma problématique plus en détails.

Merci encore pour le souci que vous vous faites pour ma problématique réglée.

Bonne journée !

Re,

Navré que vous n'ayez pas compris ce que je vous disais.. ce n'est pas 2x100 clics

1 clic sur le menu "Mettre sous forme de tableau"
1 clic sur le choix de la couleur

Mais que dire à part bonne continuation.

Bonsoir,

Je ne devrais pas prendre le temps de vous répondre car ce n’est pas le lieu pour ce genre de conversation inutile.

100 actions simples qui peuvent de fait être réalisées en 2 clics font d’après des lois mathématiques obscures 100x2 car comme je l’ai précisé précédemment ce code s’inscrit dans un plus long projet.

En effet, je ne suis pas à l’aise sur excel et en VBA mais du moins j’essaye et profite de ce forum bienveillant donc l’objectif est bien d’aider des personnes qui ne maîtrisent pas parfaitement excel.

Bonne continuation ;)

Rechercher des sujets similaires à "colorier ligne deux tableau vba"