Mise en forme de cellule selon des conditions

Bonsoir,

un test en fusionnant les deux codes :

Sub LouReeD()
    'Déclaration des types de variables
    Dim Derligne As Long, I As Long, J As Integer, Tablo, Tablo2(), LigComp As Boolean
    'Création de la variable qui donne la dernière ligne du tableau
    Derligne = Range("D2").End(xlDown).Row

    ' les chiffres dans tablo repésente les numéros de colonnes a controler
    Tablo = Array(13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 71, 73, 75, 76, 77, 78, 80, 82, 83, 88, 90, 91, 93, 94, 96, 101, 103, 107, 109, 111, 113, 114, 116, 117, 119, 120, 121, 122)
    ' création d'un deuxième tablo afin de mettre en mémoire l'état de la cellule testé : 0 = vide, 1 = non vide
    ReDim Tablo2(0 To UBound(Tablo) - 1)

    'I représente la cellule de départ de la boucle jusqu'a la derniere cellule de la derniere ligne du tableau
    For I = 2 To Derligne
        'Verifie Si dans la colonne numéro 8(H) la valeur et "A chaud" si non stop si oui on continue
        If Cells(I, 8).Value = "A chaud" Then
            ' on part du principe que la ligne est complète
            LigComp = True
            ' on boucle les cellules de la ligne en cours
            For J = 0 To UBound(Tablo)
                'Si la cellule est "vide" on le met en mémoire
                If Cells(I, Tablo(J)).Value = "" Then
                    ' cette cellule (j) de cette ligne (i) est vide
                    Tablo2(J) = 0
                    ' cette ligne est incomplète
                    LigComp = False
                Else
                    ' sinon la cellule est pleine et on ne touche pas à LigComp
                    Tablo2(J) = 1
                End If
            Next J
            ' on met en couleur en fonction du résultat de la variable LigComp
            ' si la ligne est complète
            If LigComp Then
                ' on boucle sur le tablo pour trouver les cellules pleines
                For J = 0 To UBound(Tablo)
                    Cells(I, Tablo(J)).Interior.Color = RGB(0, 255, 128)
                Next J
                Cells(I, 1).Interior.Color = RGB(0, 255, 128)
                Cells(I, 2).Interior.Color = RGB(0, 255, 128)
                Cells(I, 123).Interior.Color = RGB(0, 255, 128)
                Cells(I, 123) = "Complet"
            ' ce n'est pas complet
            Else
                ' on boucle sur le tablo2
                For J = 0 To UBound(Tablo2)
                    ' si Tablo2 = 0 alors la cellule colonne Tablo passe en rouge
                    If Tablo2(J) = 0 Then Cells(I, Tablo(J)).Interior.Color = RGB(255, 198, 140)
                Next J
                Cells(I, 1).Interior.Color = RGB(255, 198, 140)
                Cells(I, 2).Interior.Color = RGB(255, 198, 140)
                Cells(I, 123).Interior.Color = RGB(255, 198, 140)
                Cells(I, 123) = "Partiel"
            End If
        End If
    Next I
End Sub

Une boucle sur les lignes.
On affirma que la ligne est complète.
Pour chaque ligne on boucle sur les cellules déterminées par Tablo.
Pour chaque cellule on teste si elle est vide.
Si oui alors on rempli un deuxième tableau afin de mettre son état en mémoire (0) ET on passe la ligne comme incomplète.
Sinon on met 1, et la ligne "reste" complète

Une fois ceci fait on teste la variable de complétude.
Si elle est complète, on reboucle sur les cellules pour les passer au vert et inscrire Complet.
Si elle n'est pas complète, on reboucle sur les cellules pour les passer au rouge si son état est à 0 et on inscrit Partiel.

@ bientôt

LouReeD

Bonjour LouReed,

Merci pour l'attention que tu apporte à mon problème. J'ai testé le code que tu as fourni et j'ai à l'exécution du code "erreur 9, l'indice n'appartient pas à la sélection". Ci-dessous une capture du point d'arrêt :

image

J'ai commenté les deux lignes comprennant :

"Tablo2(J) = 0 et Tablo2(J) = 1"

Du coup le code fonctionne...Mais je ne sais pas vraiment pourquoi

image

Bonjour,

Enlevez le -1 au dim de Tablo2.

@ bientôt

LouReeD

Bonjour LouReed,

ça fonctionne parfaitement ! Merci beaucoup

Bonjour,

merci pour votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "mise forme conditions"