Couleur et mise en forme avec macro Excel

Bonsoir,

j'étais plus dans la remarque : "pourquoi deux cases?"

En fait si c'est vert ce n'est pas rouge, si c'est rouge, ce n'est pas vert, au "pire" c'est blanc.

Donc blanc - double-clics - rouge - double-clics vert - double-clics blanc

et ceci sur une colonne.

Mais votre fichier fonctionne comme il est , il est donc inutile de partir là dessus, c'était plus une pensée qu'autre chose

Bonne continuation !

@ bientôt

LouReeD

Bonsoir JeanBaptisteP, LouReeD,

Je t'envoie une feuille modèle qui comporte un calendrier pouvant être appelé en cliquant sur le haut gauche de la feuille.

Rajoute ta feuille Recap dans ce classeur et fais des copies de la feuille modèle dans ce même classeur.

J'ai laissé le code Double-clic pour les couleurs vert et rouge. Mais avec l'exemple présenté par LouReeD, en passant plutôt par le code évènementiel SheetBeforeDouble-clic du classeur (Workbook). Tu peux ne pas le reprendre, surtout si par la suite tu souhaites changer ces couleurs.

Bons tests, bonne continuation.

Bonsoir X Cellus,

Merci beaucoup pour ce retour ! Le format du calendrier est parfait ! J'ai adapté le code pour que la date apparaisse dans la case J3:M5

Par contre, je me posais plusieurs questions.

Est-ce possible de déplacer l'objet "calendrier" dans la cellule J3 plutôt qu'en A1 ?

Dans le fichier recap, il y a plusieurs polices différentes et tailles différentes pour le texte qui y est recopié. Est-il possible d'appliquer les mêmes paramètres pour toutes les colonnes ?

Merci de votre aide !

J-Baptiste

Bonsoir JeanBaptisteP,

En retour le fichier modifié pour tes interrogations.

Le calendrier est maintenant dans la colonne J.

Et le tableau de la feuille Recap a la même police dans toutes ses colonnes.

Bons tests, bonne continuation.

Bonjour X Cellus,

C'est parfait, c'est exactement ce que je voulais !

J'ai dupliqué VT2 pour faire toutes mes pages !

Aussi, j'aurais aimé créer une macro avec un bouton "imprimer" présent sur chaque feuille pour imprimer la feuille du classeur. J'ai réussi à créer le bouton mais pas la macro qui permettrait de lancer une impression. J'ai essayé d'enregistrer une macro en effectuant les différentes étapes d'une impression de feuille mais cela ne fonctionne pas. Existe t-il une macro type ?

Merci beaucoup !

J-Baptiste

Bonjour,

J'ai réussi à créer la macro "Impression", tout est ok pour moi. Par contre j'aurais voulu essayer une dernière chose avec EXCEL mais je ne pense pas que cela soit réalisable. En fait, j'aimerais créer une feuille nommée "Sommaire". Dans cette feuille on y retrouverait des boutons qui me permettrait de me rediriger sur une des feuilles du classeur. Et ce que j'aurais souhaité faire avec ce bouton, c'est que celui soit de fond rouge quand les cases des colonnes A et B ne sont pas entièrement colorées ou alors qu'il passe au vert lorsque l'ensemble des cases des colonnes A et B de sa feuille respective sont toutes colorées. Cela me permettrait de voir d'un coup d'oeil depuis la feuille "Sommaire" quelles sont les feuilles qui ne sont pas entièrement remplies. Je vous mets un exemple dans le fichier EXCEL ci-joint.

Peut-être que cela n'est pas réalisable, j'attends vos remarques ou suggestions !

Merci infiniment,

J-Baptiste

5fichier-excel.xlsm (71.77 Ko)

Bonjour JeanBaptisteP,

Je souhaitais dès ce samedi m'occupait de ton souci d'impression après d'autres demandes.

Mais je vois que tu as réussi, donc c'est super. Tu te débrouilles bien.

Par contre, au vu de ton dernier besoin, j'ai préféré le simplifier. En effet si tu n'as que 2 ou 3 ou 4 pages des boutons peuvent suffirent. Mais par exemple environ une dizaine pages. Cela va faire Mercerie.

Donc c'est plus simple de colorer la ligne. Tu as déjà l'habitude. La macro se trouve dans le code Workbook. Elle se déclenche à l'ouverture du classeur en listant les feuilles VT. Ensuite elle compte le nombre de fois ou les colonnes A + B n'ont aucune couleur.

Et si le total est supérieur à zéro alors la ligne du sommaire devient rouge sinon sera verte.

Pour accéder à une page VT directement à partir du sommaire. Il suffit d'un double-clic sur sa ligne.

En souhaitant que cela puisse te convenir.

Bons tests, bonne continuation.

Bonjour X Cellus,

Mon projet arrive en phase finale, enfin !!

Pour tout te dire, j'ai une cinquantaine de feuilles

Mais je voulais savoir s'il n'était pas possible d'ajouter un bouton sur la page sommaire du style "voyant" ou "case à cocher" qui est rouge tout pendant que sa feuille respective n'est pas totalement remplie et qui passerait au vert dès lors que toutes les cases des colonnes A ou B sont remplies ! Est-ce possible de faire ça sous EXCEL ?

J'ai essayé ton fichier mais je n'ai pas réussi à faire changer la couleur des cases VT2 et VT3 en remplissant ou non les cases des colonnes A et B

J'en demande beaucoup, je sais !

Merci beaucoup en tous cas !

J-Baptiste

Bonsoir JeanBaptisteP,

Je rappelle, voir mon récent message.

Le dernier fichier posté fonctionne si les lignes des deux colonnes A ou B ont au moins une couleur. Quelle soit rouge ou verte.

Si ces deux colonnes n'ont aucune couleur dans une seule ligne alors dans la feuille Sommaire, le nom de la feuille VTx sera rouge. C'est ce que tu souhaitais selon ci-dessous.

Et ce que j'aurais souhaité faire avec ce bouton, c'est que celui soit de fond rouge quand les cases des colonnes A et B ne sont pas entièrement colorées ou alors qu'il passe au vert lorsque l'ensemble des cases des colonnes A et B de sa feuille respective sont toutes colorées

Note aussi que sur les colonnes A et B les couleurs sont alternatives comme tu le désirais. Si vert (A) alors (B) incolore. Et inversement. Si rouge (B) alors (A) incolore.

A suivre...

Bonjour X Cellus,

Effectivement, tu as bien répondu à ma problématique mais ce que je voulais dire c'est que je n'arrive pas à faire fonctionner la macro sur la "Sommaire" si je remplis ou non les feuilles VT1 et VT2...

J'ai voulu essayer autre chose, plutôt que de colorer une case dans la sommaire afin de savoir si les cases sa feuille respective sont cochées ou non, j'ai ajouté une "case à cocher" devant chaque bouton qui lie une feuille.

J'ai vu que je peux ajouter une macro pour chaque case à cocher, ma question est la suivante:

Puis-je créer une macro qui permettrait de cocher automatiquement si les cases des colonnes A ou B sont colorées et ce pour chaque feuille, donc pour VT1:

Private Sub Workbook_Open()

Lig = 9: Sheets("Sommaire").Activate

For Ong = 1 To Worksheets.Count

If Worksheets(Ong).Name Like "VT1" Then

Lig = Lig + 1: Feuil = Worksheets(Ong).Name

If Range("C" & Lig) = "" Then Range("C" & Lig) = Feuil

Tot = 0

For lin = 9 To 52

If Range(Feuil & "!A" & lin).Interior.ColorIndex = xlNone And Range(Feuil & "!B" & lin).Interior.ColorIndex = xlNone _

And Range(Feuil & "!C" & lin) Like "Constat*" Then Tot = Tot + 1

Next lin

If Tot > 0 Then Range("C" & Lig).Interior.ColorIndex = 3 Else Range("C" & Lig).Interior.ColorIndex = 43

End If

Next Ong

End Sub

Et pour VT2:

Private Sub Workbook_Open()

Lig = 9: Sheets("Sommaire").Activate

For Ong = 1 To Worksheets.Count

If Worksheets(Ong).Name Like "VT2" Then

Lig = Lig + 1: Feuil = Worksheets(Ong).Name

If Range("C" & Lig) = "" Then Range("C" & Lig) = Feuil

Tot = 0

For lin = 9 To 52

If Range(Feuil & "!A" & lin).Interior.ColorIndex = xlNone And Range(Feuil & "!B" & lin).Interior.ColorIndex = xlNone _

And Range(Feuil & "!C" & lin) Like "Constat*" Then Tot = Tot + 1

Next lin

If Tot > 0 Then Range("C" & Lig).Interior.ColorIndex = 3 Else Range("C" & Lig).Interior.ColorIndex = 43

End If

Next Ong

End Sub

Est-ce envisageable ? Je joins mon fichier excel en PJ.

Merci infiniment pour votre aide

J-Baptiste

Bonsoir JeanBaptisteP,

Ton dernier message est paradoxal. Je reposte ci-dessous une de tes lignes.

Pour tout te dire, j'ai une cinquantaine de feuilles

Donc si je suis ton code pour chaque feuille tu risques de le copier 50 fois. Beaucoup trop.

La macro dans le sommaire est automatique. Tu n'as pas à la lancer. Puisque c'est à l'ouverture du classeur qu'elle fonctionne.

Maintenant elle peut être intégrée à la feuille Sommaire. Ainsi pour chaque modif faite dans une feuille VT tu pourras contrôler dans le sommaire si le remplissage est Ok ou non.

J'ai téléchargé le fichier et te le renvoie sous peu.

A suivre...

Bonjour X Cellus,

Effectivement cela risque d'être long mais c'est la seule solution que j'avais vu que je ne m'y connais pas dans vba !

Si il n'y a pas de solution ce n'est pas grave je me débrouillerai autrement, j’insérai des cases a cocher mais sans macro !

Merci pour tout !

J-Baptiste

Bonsoir JeanBaptisteP,

En retour ton fichier modifié. Voir notes sur la feuille Sommaire. Puis colore ensuite sur VT2, VT3...etc...

Bons tests, bonne continuation.

Bonsoir X Cellus,

Merci pour votre retour, ça fonctionne très bien ! Par contre, mon souci, c'est que je n'ai pas le même nombre de lignes sur chaque feuille. Le code étant défini pour les lignes 9 à 52, ça pose problème. Sinon est-ce possible d'adapter le code pour chaque feuille et je créerai autant de "macro" que de feuilles, ça ne me gêne pas! Si ce n'est pas possible, ce n'est pas grave j'insérerai juste des cases à cocher en face des boutons situés sur la feuille "sommaire" et je viendrai les cocher manuellement !

Merci encore!

J-Baptiste

Bonsoir Jean-BaptisteP,

Oui, on peut adapter la macro selon le nombre de lignes existant sur la feuille..

Repose un fichier avec 4 ou 5 feuilles VT différentes en lignes pour que je vois leur type. Je pourrais rajouter des lignes à celles que j'ai.

Mais peut être un peu trop logiquement. Donc il est préférable que ce soit un fichier posté selon ton besoin réel.

À suivre...

Bonsoir,

Les feuilles VT sont identiques entre elles et le fonctionnement est le même. Dans certaines feuilles il y a plus de 200 lignes et dans d'autres que 52. Par contre, j'ai une cinquantaine de feuilles donc cela risque de faire beaucoup de travail. Existe t-il un code type qu'il faudrait adapter au nom de chaque feuille et avec les nombre de lignes associées ?

Si c'est trop complexe, on laisse tomber, je mettrai des "cases à cocher" de formulaire devant chaque bouton sur ma page Sommaire !

Merci !

J-Baptiste

A nouveau,

Donc si le cadre est identique pour l'ensemble des feuilles. Je vais en faire une copie en 3 ou 4 exemplaires en modulant le nombre de lignes.

Puis te le reposte demain. La macro sera adaptée à chaque feuille.

A suivre...

Bonjour Jean-BaptisteP,

J'ai testé après avoir modifié le fichier en ajoutant des feuilles de différentes lignes.

Donc adapte la macro présente dans le workbooks:

...... 
For Lin = 9 to 300
......
......
If Tot > 0 Then Lin = 300
Next Lin

Ainsi cela permettra de pouvoir fonctionner jusqu'à 300 lignes sur une feuille. Et si exceptionnellement tu dépasses augmente ce nombre.

Le code est aussi optimisé afin de ne pas vérifier l'ensemble des lignes s'il trouve une première ligne sans couleurs. Donc plus rapide sur de nombreuses feuilles.

Si souci reviens sur le sujet.

Bonjour @ vous deux !

Deus petites choses :

la première assez simple :

...... 
For Lin = 9 to 300
......
......
If Tot > 0 Then Lin = 300
Next Lin

Dans une boucle, si l'on veut sortir avant la fin il est "plus propre" d'utiliser "Exit For" que de dire que le compteur est "arrivé au bout" :

...... 
For Lin = 9 to 300
......
......
If Tot > 0 Then Exit For
Next Lin

Comme on utiliserait "Exit Do" pour sortir d'une boucle Do Loop !

la deuxième est une réflexion sur le fait que la feuille "sommaire" voit ses couleurs changer lorsque des informations sont modifiées sur les feuilles VT. Ces informations ne sont donc changées que feuille après feuille, et la feuille sommaire serait à mettre à jour que lorsque l'on quitte la feuille "modifiée", donc pourquoi utiliser Workbook_SheetActivate sur "Sommaire" ?

En utilisant Workbook_SheetDeactivate on met à jour la feuille sommaire uniquement en fonction de la feuille que l'on vient de quitter... du coup une seule feuille à tester, plutôt que toutes les feuilles...

Mais c'est juste une réflexion !

@ bientôt

LouReeD

Un exemple :

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Left(Sh.Name, 2) <> "VT" Then Exit Sub
    Dim Lig As Long, Tot As Boolean, Lin As Integer
    With Sh
        For Lin = 9 To 300
            If .Range("A" & Lin & ":B" & Lin).Interior.ColorIndex = xlNone And .Range("C" & Lin) Like "Constat*" Then Tot = True: Exit For
        Next Lin
        Lig = Val(Mid(Sh.Name, 3, Len(Sh.Name))) + 8
        If Tot = True Then Feuil7.Range("C" & Lig).Interior.ColorIndex = 3 Else Feuil7.Range("C" & Lig).Interior.ColorIndex = 43
    End With
End Sub

@ bientôt

LouReeD

Rechercher des sujets similaires à "couleur mise forme macro"