VBA - colorer ligne selon valeur cellule

Fermé
guigui - 18 août 2022 à 16:49
 guigui - 19 août 2022 à 09:32

Bonjour, 

J'ai un tableau Excel avec une feuille par semaine. 

Sur chaque feuille,

Une demande de travaux est faite par mon service : Chaque ligne décrit une des taches à réaliser dans la semaine, différentes informations sont complétées dans les colonnes C à I. 

Puis, quand le travail est effectué par un autre service, les colonnes K à N sont complétées. En colonne L, les cellules sont initialement vides. Puis quand les travaux sont réalisés, on écrit "Fait" dans cette colonne. 

Je souhaiterais implanter un code VBA qui permettrait de colorer les colonnes C à N en vert, quand la cellule L de cette même ligne est remplie en "Fait". 

Je souhaiterais que ce code se fasse automatiquement sur toutes les feuilles de mon classeur. 

Je ne sais pas si je suis très claire... Je peux envoyer mon fichier Excel si besoin. 

J'ai fais du VBA, il y a longtemps, et je n'y arrive plus :( 

Merci pour votre aide

11 réponses

Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024 1 452
18 août 2022 à 16:57

Bonjour,

Pas besoin de VBA, le réaliser par la MFC, voir image:


0

Bonjour, en effet je l'avais initialement fait avec la mise en forme conditionnelle. 

Mais le problème est que le fichier est utilisé par de nombreuses personnes. A chaque fois qu'une nouvelle feuille est créée, c'est une duplication d'une autre feuille. Puis tous le monde fait tout un tas de copier coller dans tous les sens, ce qui change la MFC, et il faut donc chaque semaine que je refasse les règles de MFC. 

Je souhaiterais passer par le VBA pour éviter d'avoir à refaire cette tache tout le temps...

0
Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024 1 452
Modifié le 18 août 2022 à 17:27

Bonjour,

Donc si c'est une duplication de la feuille avec MFC la copie aura aussi la MFC ,!

Vous avez certainement créer une feuille modèle que les gens puissent copier...!


0

Bonjour, 

En fait, selon les semaines et la complexité des taches, il y aura parfois 3 lignes pour les taches du lundi, 2 lignes pour les taches du mardi, 4 lignes pour les taches du mercredi, etc. Ce pour une semaine. 

Mais la semaine suivante, il n'y aura peut être qu'une ligne pour la tache du lundi, 3 pour le mardi et 3 pour le mercredi. 

De plus, ce planning est constamment remanié, suite à des modifications, problèmes de transports, etc. 

Alors, les cellules de la demande de travaux du lundi S35 seront copié collé sur la S36 (autre feuille), et ça met alors tout un bazar ... :(

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
0

vVoici la MFC que j'avais associé à cette page

0
Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024 1 452
18 août 2022 à 18:15

Bonjour,

Vous devez réaliser la formule pour toutes les lignes de la colonne (L) comme je l'ai mis dans mon exemple:

=$L1="Fait"   et non pas  =$L$  et ensuite s'applique à     =$C:$N

Salutations.
Le Pingou

0
guigui > Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024
18 août 2022 à 18:32

ah oui, super!! merci beaucoup ça fonctionne. A voir à l'usage du document, mais ça semble parfait! merci beaucoup

0

Alors, la feuille d'après créée différemment, avec beaucoup de manipulation de tout le monde (document accessible par 150 personnes), la MFC est complètement changée...

0
Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024 1 452
18 août 2022 à 18:03

Bonjour,

A voir vos différentes images, il semble que vous avez des cellules fusionnées, ce qui n'est pas compatible avec la MFC!

Sans avoir un exemple à disposition , je ne peux pas en faire plus (surtout si il faut passer par VBA).


0

Oui en colonne A et B j'ai des cellules fusionnées. Mais je ne colore qu'à partir de la cellule C. 

Du coup il n'y a pas de souci? 

J'ai essayé de joindre mon fichier Excel sur le forum, mais ça ne semble pas fonctionner... Savez vous si c'est normal?

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 18 août 2022 à 18:36

Et pourquoi pas mettre dans l'event Workbook_Open, une macro qui efface toutes les MFC puis applique sur chaque onglet la mise en forme voulue ?

Exemple :

Private Sub Workbook_Open()

    Dim ws As Worksheet
    
    For Each ws In Worksheets
    
        ws.Cells.FormatConditions.Delete
        
        With ws.Range("C:N")
                .FormatConditions.Add xlExpression, , "=$L1=""Fait"""
                .FormatConditions(1).Interior.Color = vbGreen
                .FormatConditions(1).StopIfTrue = False
        End With
        
    Next ws
End Sub

0

Super ça marche parfaitement ! merci beaucoup

0

Est-ce que je pourrais ajouter une autre condition de with, pour quoi si la personne écrit "fait " (fait suivi d'un espace), la coloration en vert se fasse aussi? 

Merci pour votre aide! 

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478 > guigui
Modifié le 19 août 2022 à 09:10

Bonjour,

Je pense que ceci devrait fonctionner et sera valable à la fois avec et sans espace :

Private Sub Workbook_Open()

    Dim ws As Worksheet
    
    For Each ws In Worksheets
    
        ws.Cells.FormatConditions.Delete
        
        With ws.Range("C:N")
                .FormatConditions.Add xlExpression, , "=SUPPRESPACE($L1)=""Fait"""
                .FormatConditions(1).Interior.Color = vbGreen
                .FormatConditions(1).StopIfTrue = False
        End With
        
    Next ws
End Sub

Si ça ne fonctionne pas je regarderai ça dans l'après midi

0
guigui > ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023
19 août 2022 à 09:13

Merci pour votre retour, mais ça ne fonctionne pas en effet, j'ai ce message qui apparait : 

pas de problème pour une aide plus tard! Merci

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478 > guigui
Modifié le 19 août 2022 à 09:19

Entre temps j'ai modifié mon post, je me suis mélangé les pinceaux entre Excel et VBA :)

Il faut ressayer avec l'autre version et sinon effectivement je regarderai ça un peu plus tard 

1
Le Pingou Messages postés 12206 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 novembre 2024 1 452
18 août 2022 à 20:11

Bonjour ozone,

Merci pour la solution par VBA , je la met de côté pour mon savoir.


0