MEC colorer colonne en fonction d'une cellule

Bonjour,

Voilà j’ai un petit problème que je n’arrive pas à résoudre.

J’ai sur toute la ligne 3 une liste de choix.

J’aimerai que si sur la ligne 3 le mot en dessous apparait, la colonne (et que cette colonne) auxquelles le mot est dessus change de couleur.

Sur ligne 3 « toto » : La colonne de la ligne 3 à 10 en rouge

Sur ligne 3« tutu » : La colonne de la ligne 3 à 10 en bleu

Sur ligne 3« yoyo » : La colonne de la ligne 3 à 10 en vert

Etc…

J’ai cherché à faire une MEC mais elle n’affecte qu’une seule ligne, j’ai cherché sur le net, mais pas moyen de trouver ce que je cherche exactement. J’ai testé plusieurs choses en MEC, mais je n’arrive qu’à colorer qu’une cellule . C’est très rageant car je sais que la solution est très simple…

Pouvez-vous me dire si une MEC suffit ou s’il faut faire une formule en VBA ?

Merci de votre aide et désolé en avance pour cette question "simple".

Bonjour,

Une MFC devrait satisfaire votre besoin

Formule de la MFC :

=$A$3="toto"

S'applique à

=$A$3:$A$10

Mettre en rouge

Agir ainsi pour les autres possibilités.

NB : Si nécessaire......poster un fichier ! C'est un gain de temps pour vous et pour nous !!!

Bonjour,

Merci de votre réponse.

Disons que mon fichier (en pièce jointe) est pas simple

En double cliquant sur les titres, les colonnes se déplace en C. En double cliquant sur A37, une nouvelle colonne est créée. Et A38, une nouvelle page (ne fonctionnera pas ici car je n'ai pas ajouté le Template).

Mon but est que sur la ligne 3, si dans une colonne le mot est "gelé" ou "à clôturer", ce n'est pas que la case de la ligne 3 qui soit grise ou violette, mais de la ligne 3 à 35.

Dans la solution que tu m'as proposé, je vois $A$3. Faut il que je fasse une MEC pour chaque colonne? Car j'en ai jusqu'à Z!

Merci encore pour ton aide!

22exemplemef.xlsm (21.95 Ko)

Bonjour à tous

Un exemple concret à tester.

Bye !

42pool-1-v1.xlsm (46.55 Ko)

En fonction de mon fichier envoyé dans mon message précédent:

Formule de la MFC :

=$A$3="Gelé"

S'applique à

=$C$3:$Z$35

en gris

mais... rien ne se passe

J'ai testé de mettre =$A3="Gelé" comme l'a fait gmb (bonjour et merci de ton aide), même résultat, la colonne de ne colore pas en gris.

La question est: oukeujéfé la boulette?

Il serait utile que tu reformules ta demande en l'adaptant précisément au fichier que tu as joint...

Bye !

Aucun problème je reprends depuis le début avec le fichier en pièce jointe.

Sur la ligne 3, vous avez un choix d’action.

J’aimerai que si l’utilisateur sélectionne « gelé », la colonne (de la ligne 3 à 35) se grise.

J’aimerai que si l’utilisateur sélectionne « à clôturer », la colonne (de la ligne 3 à 35) soit violette.

Pour l’instant, il y a juste la cellule de la ligne 3 qui se colore. Il faudrait que ce soit la colonne.

Il n'y a que quelques colonnes dans ce fichier, mais il peut en avoir une quarantaine habituellement.

Est ce clair pour vous?

Merci encore pour votre aide.

11exemplemef.xlsm (21.95 Ko)

Re,

A tester !

20exemplemef.xlsm (20.28 Ko)

Un autre essai.

Bye !

22exemplemef-v1.xlsm (28.71 Ko)

Bonjour,

Merci de vos deux solutions, je les ai testées mais pas tout à fait approuvées.

Pour le tableau de JFL, le problème est qu’il faudra une ligne MEF par ligne (jusqu’à Z). De plus, avec la fonction double clique qui décale les colonnes sur la colonne C, j’ai remarqué que chaque mise en forme se décale.

Pour le tableau de gmb, c’est la création du tableau qui m’embête, j’aimerai éviter au maximum la création d’une en-tête avec des nombres (si deux colonnes « gelé », la première est « gelé » la seconde « gelé2 »).

Bref, je vais du coup me pencher sur la solution VBA, pour avoir des mises en forme conditionnelles figées.

Je ne vais pas vous embêter, je vais chercher dans un premier temps par moi-même, je reviendrai vers vous si j’ai des problèmes.

Merci encore pour votre aide

Bonjour,

Je reviens vers vous après avoir essayé de progresser dans ma demande mais en VBA.

Pour l'instant j'ai ça:

Sub couleur()
    If Range("B3,Z3").Value = "Gelé" Then 
    Target.Row("3,35").Interior.PatternColor = 48 
    End If
End Sub

Bien évidement... ça ne marche pas. Je sais que le problème est sur le "Target".

Je n'arrive pas à trouver comment Excel interprète la colonne auquel le mot "gelé" est présent.

Faut il déclarer une variable pour qu'il garde le numéro de la colonne?

Pouvez vous l'éclairer s'il vous plait.

Merci.

Bonjour

La macro "Sub couleur" que tu nous montre est très courte mais pleine d'incohérence.

La plage de cellules que tu définie par Range("B3,Z3")est incorrecte.

Si tu veux désigner la plage de cellules qui va de la cellule B3 à la cellule Z3, il te faut la définir par :

Range("B3:Z3")

Quant à l'instruction :

Target.Row("3,35").Interior.PatternColor = 48

Elle cumule les erreurs.

* Target est un mot réservé de VBA qui est utilisé dans les macro événementielle pour représenter la cellule à l'origine du déclenchement de cette macro : cellule qu'on valide, celle où on fait un double clic, celle qu'on sélectionne etc...

Or, tu utilises Target dans une macro qui n'est pas événementielle...

* Rows("3,35") n'a aucun sens. S'il s'agit de désigner les lignes 3 à 35, il faut écrire : Rows("3:35"). Et tu intéressera ainsi les lignes complètes de la 3 à la 35.

* Mais n'est-ce pas une colonne dont tu veux modifier la couleur ? Il te faudrait alors quelque chose comme : range("B3:B35") pour intéresser la plage de la colonne B, de la cellule B3 à la cellule B35

Ok ?

Bye !

Merci gmb pour ton aide!

En effet, il y a plus d'erreurs que de mots dans mon micro code

Pour les ":" au lieu des "," ... je ne comprends pas pourquoi j'ai mis des virgules, j'ai un code d'une trentaines de lignes et j'ai toujours mis deux points. Une belle erreur d’inattention.

J'ai remis la patte sur la mise en forme conditionnelle, j'ai fini par trouver la solution

=B$3= "Gelé"

S'applique à

=$B$3:$Z$35

Il fallait juste à la solution de gmb enlever le $ devant le B...

Au final j'ai ma solution, même si je reste curieux de voir comment le faire en VBA.

J'ai retesté le code VBA, mais je n'y arrive toujours pas

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("B$3").Value = "" Then
            Range("$b$3:$Q$23").Interior.ColorIndex = 0
                End If
    If Range("B$3").Value = "Gelé" Then
        Range("$b$3:$Q$23").Interior.ColorIndex = 3
    End If
End Sub

Pour l'instant, seule la cellule B3 fonctionne et surligne l'intégralité des cellules de B3 à Q23. (mais c'est déjà un premier pas).

Il me reste à la propager sur toute la ligne 3, et surligner uniquement la colonne.

Je continue à creuser

Merci encore pour votre aide, c'est vraiment super de votre part d'aider des "amateurs" d'Excel qui veulent quand même avoir un fichier pas trop moche.

Bonjour

Essaie ça :

Private Sub Worksheet_Change(ByVal Target As Range)
'Sub essai()
    If Not Intersect(Target, Range("B3:H3")) Is Nothing Then
        If Target = "" Then
            Range(Cells(3, Target.Column), Cells(23, Target.Column)).Interior.Color = xlNone
        ElseIf Target = "Gelé" Then
            Range(Cells(3, Target.Column), Cells(23, Target.Column)).Interior.Color = RGB(166, 166, 166)  
        'Elseif ... etc

        End If

    End If
End Sub

Bye !

Merci beaucoup!! C'est exactement ce que je voulais!

Juste une dernière chose, je l'ai modifié à ma sauce pour coller à mon fichier.

Pour "Gelé" et "A clôturer" j'ai des couleurs différentes, pour le reste il faudrait reproduire la mise en forme d'avant. Du coup j'aimerai "copier/coller" la mise en forme de la colonne B

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Sub essai()
       If Not Intersect(Target, Range("B3:H3")) Is Nothing Then

             If Target = "Gelé" Then
                Range(Cells(3, Target.Column), Cells(23, Target.Column)).Interior.Color = RGB(166, 166, 166)
            ElseIf Target = "A clôturer" Then
                Range(Cells(3, Target.Column), Cells(23, Target.Column)).Interior.Color = RGB(205, 0, 205)
            Else
                Range("B3:B35").Copy
                Range(Cells(3, Target.Column), Cells(23, Target.Column)).PasteSpecial Paste:=xlPasteFormats
            'Elseif ... etc
            End If
        End If
        Application.CutCopyMode = False
    End Sub

Tout est bon (dans le jambon), mais il n'apprécie pas la ligne

                Range(Cells(3, Target.Column), Cells(23, Target.Column)).PasteSpecial Paste:=xlPasteFormats

Il fait bien le collage, mais m'indique une erreur "incompatibilité de type"

Pourtant il s'agit bien d'un collage spécial? Je n'arrive pas à trouver l'erreur.

Merci encore gmb pour ton aide

Bonjour

Zarkoft a écrit :

pour le reste il faudrait reproduire la mise en forme d'avant. Du coup j'aimerai "copier/coller" la mise en forme de la colonne B

Si tu veux que la modif ne s'applique qu'aux conditions "Gélé" et "A cloturer", ce que tu as modifié est correct, sauf qu'il ne faut pas s’occuper de la colonne B.

Il te faut ensuite sélectionner tout ton tableau (C3 :H23) et supprimer dans la fenêtre ‘’Mise en forme conditionnelle ‘’ les conditions relatives à « Contient Gelé » et « Contient A Cloturer »

Et les autres conditions de la mise en forme conditionnelle continueront à s'appliquer.

OK ?

Bye !

Bonjour gmb,

Très bien je vais regarder ça dans mon coin.

Je passe le sujet en résolu.

Merci encore pour votre aide.

Rechercher des sujets similaires à "mec colorer colonne fonction"