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

11 réponses

  1. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    Bonjour,

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


    0
  2. 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
  3. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. guigui
     

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

    0
    1. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
       

      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
      1. guigui > Le Pingou Messages postés 12276 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
  7. 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
  8. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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
  9. 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
  10. ozone_ Messages postés 1823 Statut Membre 511
     

    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
    1. guigui
       

      Super ça marche parfaitement ! merci beaucoup

      0
    2. 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
    3. ozone_ Messages postés 1823 Statut Membre 511 > 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
    4. guigui > ozone_ Messages postés 1823 Statut Membre
       

      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
    5. ozone_ Messages postés 1823 Statut Membre 511 > 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
  11. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    Bonjour ozone,

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


    0