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

zekehel 2 Messages postés jeudi 28 décembre 2017Date d'inscription 28 décembre 2017 Dernière intervention - 28 déc. 2017 à 15:16 - Dernière réponse : zekehel 2 Messages postés jeudi 28 décembre 2017Date d'inscription 28 décembre 2017 Dernière intervention
- 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 ?
Afficher la suite 

2 réponses

Répondre au sujet
yg_be 4391 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - Modifié par yg_be le 28/12/2017 à 16:27
0
Utile
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
Commenter la réponse de yg_be
zekehel 2 Messages postés jeudi 28 décembre 2017Date d'inscription 28 décembre 2017 Dernière intervention - 28 déc. 2017 à 16:40
0
Utile
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
Commenter la réponse de zekehel