Changer couleur

Résolu
Viperestrike Messages postés 7 Statut Membre -  
Viperestrike Messages postés 7 Statut Membre -
Bonjour,

J'aimerais faire une macro Excel permettant d'alterner la couleur lorsque la valeur change d'une ligne à l'autre dans la colonne A.
J'ai le fichier ci-dessous :



Et j'aimerais que la macro fasse ça :



J'ai essayer de faire une boucle sans succès
Merci de votre aide.

3 réponses

  1. Arkana0 Messages postés 1980 Date d'inscription   Statut Modérateur Dernière intervention   183
     
    Bonjour,

    Ce site peut te débloquer sur plusieurs points :
    https://www.excel-pratique.com/fr/vba.php
    - Leçon sur les boucles
    - Leçon sur les feuilles et cellules pour les couleurs.

    Pour détecter le changement de valeur, tu peux utiliser une variable intermédiaire qui stocke la valeur de la cellule qui passée en revue et qui est gardée telle quelle jusqu'au tour de boucle suivante où elle pourra servir de comparaison.
    0
    1. Viperestrike Messages postés 7 Statut Membre
       
      Bonjour,

      Merci pour votre réponse.
      J'ai déjà été sur ce site, j'avais fait une boucle mais je n'ai pas réussi à colorer toutes les cases ayant le même nom de la même couleur (c'était soit le premier, soit la dernière case qui restait sans couleur)
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Combien de lignes comporte la colonne A?

    --
    0
    1. Viperestrike Messages postés 7 Statut Membre
       
      Bonjour,

      En fait, le nombre de ligne de la colonne A varie. Le nombre de ligne pour un même fournisseur peut aussi varier.
      C'est une extraction hebdomadaire de toutes les nouvelles commandes chez mes fournisseurs.
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > Viperestrike Messages postés 7 Statut Membre
         
        Oui, ok, d'accord. Mais peux tu nous donner un ordre d'idée du nombre maxi de lignes?
        100, 1 000, 10 000, 100 000...
        0
    2. Viperestrike Messages postés 7 Statut Membre
       
      Ha oui, pas de soucis. Un maximum de 400 lignes me semble pas mal.
      0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Voici :
    Adapte ce qui doit l'être...
        Sub Colore()
            Dim Wsh As Worksheet, PremLig As Integer, DrLig As Integer, Col As Integer, DrCol As Integer
            Dim Couleur As Integer, Couleur_1 As Integer, Couleur_2 As Integer
            
            Set Wsh = Worksheets("Feuil1")  'A ADAPTER : Nom de la feuille
            Col = 1                         'A ADAPTER : Numéro de la colonne à traiter  (ici A)
            DrCol = 10                      'A ADAPTER : Numéro de la dernière colonne à colorer
            PremLig = 1                     'A ADAPTER : Numéro de la première ligne traitée (ici 1)
            Couleur_1 = 3                   'A ADAPTER : Couleur n° 1
            Couleur_2 = 27                  'A ADAPTER : Couleur n° 2
            
            Couleur = Couleur_1
            With Wsh
                DrLig = .Columns(Col).Find("*", , , , , xlPrevious).Row
                For Lig = PremLig To DrLig
                    .Range(.Cells(Lig, Col), .Cells(Lig, DrCol)).Interior.ColorIndex = Couleur
                    If .Cells(Lig, Col).Value <> .Cells(Lig + 1, Col).Value Then
                        Couleur = IIf(Couleur = Couleur_1, Couleur_2, Couleur_1)
                    End If
                Next Lig
            End With
        End Sub

    0
    1. Viperestrike Messages postés 7 Statut Membre
       
      Merci beaucoup, ça fonctionne parfaitement !!
      J'aurais jamais réussi à trouver ça tout seul, super ;)
      0