Formater les éléments d'un tableau

Bonjour à tous,

Pour accélérer le traitement sur une plage "B8:AF12", j'affecte le contenu de celle-ci à un tableau "Tablo()"

Au cours de ce traitement, j'aimerais formater le contenu des éléments du tableau "Tablo()" répondants à certaines conditions en attribuant une couleur rouge à la police par exemple.

Comment peut-on réaliser cela ?

Merci d'avance.

Bonjour,

Tu ne peux pas formater un tableau puisqu'il na rien de visuel, il est chargé en mémoire et le travail fait sur lui est bien plus rapide que sur un range. Ce que tu peux faire, c'est un tableau à 3 dimensions, dans la seconde partie de la dimension "z" (vers l'arrière pour imager, la première étant occupée par tes valeurs) tu entre les valeurs de ton formatage mais ça va être lourd à gérer. Sinon, tu accouple à tes valeurs les valeurs de formatage que tu extrais ensuite mais là non plus, c'est pas top. Le formatage étant visuel, il te faux travailler sur ton range, 155 cellules ce n'est pas gigantesque !

Hervé.

Bonjour Theze,

Voila le bout de code utilisé :

        Jd = 1: Jf = 31    ' Jour départ=1, Jour Fin = 31 pour le mois de Mai
        Tablo = .Range("B6:AF11")

        'Parcourir le tableau par colonne
        For Ct = 2 To UBound(mTab, 2)   ' - 1
            Select Case Ct
            Case 2: Tt = "P"
            Case 3: Tt = "G"
            Case 4: Tt = "N"
            End Select
            For I = Jd To Jf
                Tablo(mTab(I, Ct), I) = Tt

                'Marquage d'une police rouge toute journée
                'correspondante avec un WE ou un jour férié
                If Weekday(mTab(I, 1), vbSunday) > 5 Or _
                   Application.CountIf([Fériés], mTab(I, 1)) Then  ' Si c'est Week-End ou férié
                    'Mettre en couleur la police
                End If

            Next I
        Next Ct
        .Range("B6:AF11") = Tablo

Bonjour,

Rien pu tester vue l'absence de fichier de test...

Au 294ème post ça serait bien d'avoir compris que c'est intéressant pour nous d'avoir un fichier.

Ton tablo n'a que des valeurs, il faut un 2ème tableau pour les couleurs et en fin de macro le balayer pour les appliquer.

Si ça bugue de partout tant pis. Tu as le principe, il faudra corriger au niveau des indices.

    Dim couleur() As Long, lig As Long, col As Long
    Jd = 1: Jf = 31    ' Jour départ=1, Jour Fin = 31 pour le mois de Mai
    tablo = .Range("B6:AF11")
    ReDim couleur(1 To UBound(tablo, 1), 1 To UBound(tablo, 2))
    'Parcourir le tableau par colonne
    For Ct = 2 To UBound(mTab, 2)   ' - 1
        Select Case Ct
        Case 2: Tt = "P"
        Case 3: Tt = "G"
        Case 4: Tt = "N"
        End Select
        For I = Jd To Jf
            tablo(mTab(I, Ct), I) = Tt

            'Marquage d'une police rouge toute journée
            'correspondante avec un WE ou un jour férié
            If Weekday(mTab(I, 1), vbSunday) > 5 Or _
               Application.CountIf([Fériés], mTab(I, 1)) Then  ' Si c'est Week-End ou férié
                'Mettre en couleur la police
                couleur(mTab(I, Ct), I) = 3
            End If

        Next I
    Next Ct
    .Range("B6:AF11") = tablo
    For lig = 1 To UBound(tablo, 1)
        For col = 1 To UBound(tablo, 1)
            If couleur(lig, col) > 0 Then [B6].Offset(lig - 1, col - 1).Interior.ColorIndex = couleur(lig, col)
        Next col
    Next lig

Bonjour eriiic,

Merci pour le code

Le résultat en pièce jointe

Rechercher des sujets similaires à "formater elements tableau"