VBA - Ajout d'une condition IF [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
jeudi 28 décembre 2017
Statut
Membre
Dernière intervention
28 décembre 2017
-
Messages postés
2
Date d'inscription
jeudi 28 décembre 2017
Statut
Membre
Dernière intervention
28 décembre 2017
-
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

Messages postés
11710
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 août 2020
670
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
Messages postés
2
Date d'inscription
jeudi 28 décembre 2017
Statut
Membre
Dernière intervention
28 décembre 2017

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