Couleur et mise en forme avec macro Excel

Bonsoir,

Novice en macro excel je viens chercher de l’aide !! J’aimerais créer un fichier en utilisant des macros mais je n’ai pas trouvé de réponses dans les forums. En fait, je cherche à pouvoir colorer les cases des colonnes A et B en vert et rouge (après double click) en fonction du constat fait dans la colonne C. Seulement je n’ai pas réussi à trouver le code qui me permettrait de ne pas pouvoir colorer les lignes qui sont bleues ciel si jamais je clique accidentellement dessus (ex lignes 8,13, 16,22…). Essayez, vous verrez qu’elles passent aussi en vert si vous faites un double click et ça je ne veux pas !

Aussi j’aimerais créer un onglet « Récap » qui me permettrait de faire un bilan de toutes les cases de la colonne B qui sont rouges en recopiant la ligne bleue ciel associée + le texte de la colonne C et éventuellement les commentaires mais là je sèche ! Pour que ma question soit plus explicite, je vous ai mis un exemple de ce que j’aimerais obtenir (voir onglet « recap ») !

Avant toute chose, est ce que cela est réalisable avec Excel ? Auriez-vous des pistes et des conseils sur la méthodologie à avoir ?!

Je vous ai mis mon fichier Excel prototype en PJ !

Un grand merci à toutes celles et ceux qui pourront me venir en aide

36fichier-excel.xlsm (28.76 Ko)

J-Baptiste

https://forum.excel-pratique.com/download/file.php?mode=view&id=267417

Bonsoir JeanBaptisteP,

Ci-dessous le code pour changer celui existant dans la feuille gérant l'événement dble-clic.

Le double-clic soit sur colonne A ou colonne B est alternatif. C'est à dire que s'il existe déjà la couleur rouge en colonne B. En double cliquant sur la colonne A. La couleur rouge disparait en B tandis que A devient vert. Et inversement.

Ensuite le code vérifie si les lignes de ces 2 colonnes sont vides sinon ne change aucune couleur. Ce qui évite de toucher au fond bleu-ciel.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column < 3 And Target.Text = "" Then Range("A" & Target.Row & ":B" & Target.Row).Interior.Pattern = xlNone Else Exit Sub
Target.Interior.ColorIndex = IIf(Target.Column = 1 And Target.Column < 3, 43, 3)
Cancel = True

Bons tests, bonne continuation.

Bonjour JeanBaptisteP,

Ci-joint ton fichier en retour avec en plus de la modif sur l'événement Double-clic, une macro dans le module 1 et un bouton Récapitulatif pour la lancer.

Bons tests, bonne continuation.

Bonsoir,

Tout d'abord, merci beaucoup pour votre aide. C'est parfait, c'est exactement ce que je voulais ! Il y a juste un petit bug car je ne peux pas colorer les cases comprises entres les lignes 14 à 17, c'est dû à quoi ?

Je me rajoute une contrainte supplémentaire. Est-il possible d'ajouter dans l'onglet "récap" une colonne (colonne A de préférence et décaler les autres colonnes vers la droite du coup) le champ renseigné dans la cellule fusionnée D3:E5 ? Et j'aimerais que l'onglet "Récap" me serve à faire le récapitulatif de tous les champs en rouge des différents onglets VT que je vais créer dans le style VT1, VT2,VT3...Quelle ligne de code faut-il ajouter dans la macro "Recap" ?

Merci infiniment pour votre aide précieuse !

J-Baptiste

Bonsoir Jean-Baptiste,

Dans les lignes 14 à 17, dans la colonne.

Il faut effacer le chiffre zéro qui est présent sans doute par inadvertance.

La macro compare si la cellule est vide ou non. Lorsque la cellule est vide, une couleur de fond est possible.

Ensuite pour la feuille Recap, il est possible de décaler. Repost un fichier avec un exemple de ce que tu souhaites faire ressortir dans cette feuille. En fonction d'autres données provenant d'autres feuilles. J'adapterai le code.

À suivre...

Bonjour,

Super, j'essaye de faire cela dans la journée !

Merci infiniment pour votre aide précieuse !

Bonne journée

Bonsoir,

Je reviens vers vous avec mon fichier excel !! En fait, j'ai créé un onglet "recap modifié" avec les automatismes que j'aimerais obtenir.

Le texte renseigné dans la colonne D3:E5 devrait être intégrer dans la colonne A du fichier "recap" dans le cas ou la feuille comporterait des cases en rouge.

J'aurais une cinquante de feuilles à créer et j'aimerais avoir un seul onglet "recap" qui sera alimenté par ces 50 feuilles.

Ce que j'aurais aimé créer dans la feuille "recap", c'est un bouton qui permet d'actualiser les infos issues des 50 feuilles. Est-ce que je peux déplacer et du coup utiliser le bouton que vous avez mis dans l'onglet "VT1" ?

Encore merci pour votre aide !

Bonne soirée;

J-Baptiste

https://forum.excel-pratique.com/download/file.php?mode=view&id=267968

Bonjour JeanBaptisteP,

La macro ayant été réalisée pour le 1ier fichier seulement pour 1 feuille. Elle doit être actualisée pour la présence d'autres feuilles.

Donc pour l'instant il n'est pas possible de déplacer le bouton sur le fichier que tu as testé.

J'ai téléchargé ton dernier fichier et le modifie. Note que tes autres feuilles doivent porter un nom cohérent avec la première. Donc la suite logique VT + n° que tu proposes est idéale. Pour le cas ou d'autres feuilles pourraient se rajouter et n'ayant aucun rapport avec un besoin récapitulatif.

A suivre...

A nouveau,

Retour de ton fichier avec les modifications réalisées. Le bouton est maintenant sur la feuille Récap

Bons tests, bonne continuation.

Bonjour,

C'est parfait c'est exactement ce que je voulais ! Par contre je suis embêté avec 2 choses:

La 1ère: lorsque je double clique sur le bandeau jaune, il passe en vert ce que je ne souhaite pas ! Comment le "verrouiller" comme cela a été fait avec les lignes bleues ciel "A", "B"....

Idem avec la case A1:C5. Est-ce possible d'interdire le changement de couleur dans cette case ?

La 2ème: J'aimerais ajouter un calendrier dans la case J3:M5 mais j'ai essayé d'ajouter la fonction depuis le menu "développeur" mais je ne le trouve pas. C'est dû a quoi ? Existe t-il une alternative si jamais je n'ai pas accès à cette fonction ?

En tous cas, merci beaucoup pour votre aide, je n'ai plus qu'à créer mon fichier. Si jamais j'ai d'autres questions au cours de sa création, puis-je revenir vers vous ?

Bien à vous !

J-Baptiste

Bonjour JeanBaptisteP,

Pour la 1ière remarque, je vais adapter concernant le bandeau jaune et les cellules hautes, c'est à dire les 5 premières lignes.

Pour la 2ième remarque, quelle forme de calendrier serait en J3:M5? et pour toutes les feuilles?

Je renvoie en soirée sans doute le fichier pour la remarque 1.

A suivre...

Il faudrait adapter pour les lignes 1 à 6 incluses.

Un calendrier comme celui qui est proposé dans le menu développeur en temps normal ! (enfin si c'est possible!). J'ai mis un exemple en PJ.

Par contre je n'ai pas fait attention à une chose mais j'aurais aimé apporter des modifications sur la couleur des cases. C'est à dire que par défaut les cases sont vertes et j'aurais aimé qu'elles restent vides. C'est uniquement lors du double click qu'elles devraient passer en vert ou en rouge...est-ce possible ?

Merci beaucoup !

7b3f1415 c985 4f40 ac16 8981a0401da8

A nouveau,

Pour le calendrier clic sur le lien ci-dessous pour télécharger le fichier présent

https://forum.excel-pratique.com/viewtopic.php?f=2&t=136545&p=838621#p838621

En colonne A et B, le double-clic donne la couleur. Donc vert pour colonne A et rouge pour colonne B.

La couleur par défaut en colonne A peut être verte ou incolore. Cela ne change rien quand au double clic.

Je renvoie le fichier modifié.

Bons tests, bonne continuation.

Merci pour ce retour RAPIDE !!

Le fichier excel semble avoir un souci, je n'ai pas réussi à passer en incolore les cases des colonnes A et B . :/

Pour le calendrier, ce n'est pas exactement cela, j'aurais aimé avoir accès à un genre de liste déroulante avec un calendrier lorsque je clique dans la case. (j'en demande beaucoup je sais!)

Bien à vous.

J-Baptiste

Suite,

Pour que les colonnes A et B soient incolores. Il suffit de les sélectionner puis d'utiliser dans le menu général d'Excel le menu format fond incolore. Voire par clic droit tu as aussi le menu format.

Ensuite le calendrier peut être appelé soit par un bouton qui lance le formulaire. Soit être lancer par une ou certaines cellules distinctes qui en retour après clic sur le calendrier garde la date dans la cellule appelant.

Parfait, merci pour l'astuce !!! Je vais essayer ça.

Par contre, j'ai "encore" un nouveau service à vous demander. Est-il possible de commencer le récap à partir de la ligne 3 ?

Dois-je modifier le code comme ceci:

Range("Recap!A2:E1000").Clear par Range("Recap!A3:E1000").Clear

J'ai essayé mais ça ne semble pas fonctionner

Merci à vous !

Bonjour JeanBaptisteP,

Range("Recap!A3:E1000").Clear sert à effacer les lignes 3 à 1000 (max estimé). Donc effectivement cette ligne de code devra être écrite ainsi quand tu souhaiteras commencer à la ligne 3.

Pour débuter à la ligne 3. Il faudra juste en dessous de cette ligne de code Range(....).Clear mettre la variable Dep à 2. Elle est à 1 actuellement. Ainsi tu commenceras ta récap à la ligne 3 souhaitée.

A suivre...

Bonsoir !

Parfait je vais essayer cela demain ! Je vous tiens informé !

Merci beaucoup !

J-Baptiste

Bonsoir,

petite contribution pour éviter d'avoir X code à modifier lors du changement éventuel de couleur.

En effet sur le module ThisWorkBook, vous pouvez attribuer des codes qui fonctionnent pour toutes les feuilles.

Je parle du code de changement de couleur en colonne A et B, voici le code à mettre dans ThisWorkBook :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Left(ActiveSheet.Name, 2) = "VT" Then
        If Target.Column < 3 And Target.Row > 7 And Target.Text = "" Then Range("A" & Target.Row & ":B" & Target.Row).Interior.Pattern = xlNone Else Exit Sub
        Target.Interior.ColorIndex = IIf(Target.Column = 1 And Target.Column < 3, 43, 3)
        Cancel = True
    End If
End Sub

Il y a juste un test sur les deux premières lettre du nom de la feuille afin de ne cibler que celles-ci.

Les codes présent sur les différentes feuilles peuvent être mis en commentaire pour l'essai, puis supprimés.

Une question me vient : si on clic en A, ça passe vert et on efface B qui était rouge, et inversement.

Alors pourquoi pas une seule colonne qui serait rouge ou verte ?

@ bientôt

LouReeD

Bonjour LouReeD,

Effectivement on pourrait optimiser cela. L'idéal serait de pouvoir passer une case de la colonne A en vert si on double click dessus, si on refait un double click ça repasse en incolore. Pareil pour la colonne B. Par contre, si jamais une case est en vert et que l'on vient cliquer sur sa voisine de droite, le rouge apparaît en colonne B et le vert disparaît en A. Est-ce possible ?

X Cellus: Ton conseil a bien fonctionné ! Ma feuille "recap" est désormais parfaite !

Merci beaucoup !

J-Baptiste

Rechercher des sujets similaires à "couleur mise forme macro"