VBA - colorer ligne selon valeur cellule

guigui -  
 guigui -

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

A voir également:

11 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 

Bonjour,

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


0
guigui
 

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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 

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
guigui
 

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
guigui
 
0
guigui
 

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

0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 

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 12249 Date d'inscription   Statut Contributeur Dernière intervention  
 

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

0
guigui
 

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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 

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
guigui
 

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   Statut Membre Dernière intervention   478
 

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
guigui
 

Super ça marche parfaitement ! merci beaucoup

0
guigui
 

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   Statut Membre Dernière intervention   478 > guigui
 

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   Statut Membre Dernière intervention  
 

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   Statut Membre Dernière intervention   478 > guigui
 

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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 

Bonjour ozone,

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


0