VBA - Ajout d'une condition IF

Résolu/Fermé
zekehel Messages postés 2 Date d'inscription jeudi 28 décembre 2017 Statut Membre Dernière intervention 28 décembre 2017 - 28 déc. 2017 à 15:16
zekehel Messages postés 2 Date d'inscription jeudi 28 décembre 2017 Statut Membre Dernière intervention 28 décembre 2017 - 28 déc. 2017 à 16:40
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

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 28 déc. 2017 à 16:27
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
zekehel Messages postés 2 Date d'inscription jeudi 28 décembre 2017 Statut Membre Dernière intervention 28 décembre 2017
28 déc. 2017 à 16:40
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