VBA - Ajout d'une condition IF

Résolu
Bonjour à tous,

J'ai récupéré des bouts de codes un peu partout afin de constituer une macro qui me convienne.
Découvrant ainsi ce monde vaste de Virtual Basic, je dois faire face à une colle.
J'ai un fichier de +- 700 lignes dans lequel je met en couleur des cases fusionnées sur une seule colonne en fonction d'un code couleur fixe.

Seulement, il se peut que nous rencontrions la même valeur d'une cellule à l'autre, et je souhaiterais ne pas incrémenter la couleur actuelle.

Alors j'ai pensé au rajout d'une condition IF :
"si la valeur de la case précédente est la même que l'actuelle, alors même couleur, sinon on continue le code couleur."
Tout cela sans modifier la mise en forme de la cellule.

Mais j'ai du mal à interpréter ce morceau de code pour en faire ce que j'en veux :

'mettre des couleurs dans la colonne de droite
'compteur2 servira à compter le nombre de cases où on en est
'stock servira à garder en mémoire le nom de la cellule
compteur2 = 0
stock = ""
For i = 4 To 723
    If Not (Split(pep.Cells(i, 6).MergeArea.Address, ":")(0) = stock) Then
        stock = Split(pep.Cells(i, 6).MergeArea.Address, ":")(0)
        If compteur2 = 12 Then
            comtpeur2 = 1
        Else
            compteur2 = compteur2 + 1
        End If
        pep.Range(Split(pep.Cells(i, 6).MergeArea.Address, ":")(0)).Interior.Color = choisir_couleur_modulo(compteur2)
    End If
Next i


Auriez vous une idée ?

2 réponses

  1. Bien vu, ca marche niquel :)

    je pensais bien devoir ajouter un if, mais sans réellement savoir à quel endroit, ni comment l'écrire =/

    Reste du chemin avant d'écrire un code

    Merci infiniment
    0
    1. Contributeur
      bonjour, en ligne 7, tu testes si tu restes ou pas dans la même case fusionnée.
      je pense qu'il te suffit de tester ensuite si la valeur de la case est différente de la valeur de la case précédente, et ne modifier compteur2 que si la valeur a changé.
      exemple:
      compteur2 = 0
      stock = ""
      ancienne=""
      For i = 4 To 723
          If pep.Cells(i, 6).MergeArea.Address <> stock Then
              stock = pep.Cells(i, 6).MergeArea.Address
              if ancienne <> pep.Cells(i, 6).MergeArea.Cells(1, 1).Value then 
                  If compteur2 = 12 Then
                      comtpeur2 = 1
                 Else
                     compteur2 = compteur2 + 1
                 End If
                 ancienne=pep.Cells(i, 6).MergeArea.Cells(1, 1).Value
              end if
              pep.Cells(i, 6).MergeArea.Interior.Color = choisir_couleur_modulo(compteur2)
          End If
      Next i
      0