Macro ou Données Validation

Bonjour, et merci à tous les pros qui pourront me renseigner

J'ai créé une feuille de calcul excel me permettant de suivre l'avancement des travaux que j'ai a faire pour mes clients (je suis comptalbe). Elle se présente comme ça :

TVA SALAIRES CHARGES SOC SAISIE .....
CLIENT 1 OUI NON NON SALARIE 1
CLIENT 2 NON OUI NON SALARIE 2
CLIENT 3 N/A N/A N/A SALARIE 3
CLIENT 4 OUI OUI OUI SALARIE 3
CLIENT 5 CLIENT CLIENT NON SALARIE 1
...

Mon soucis : chaque choix provient d'une liste de données, mais les couleurs associées ne suivent pas. Et par une macro j'ai réussi à associer chaque choix à une couleur (oui : Vert - non : rouge - n/a : bleu - etc...).

Mais quand je modifie une cellule je dois relancer la macro.

Quelqu'un aurait-il la solution pour que ce soit automatique?

Merci d'avance
Configuration: Windows VISTA
Internet Explorer 7.0
EXCEL 2003

14 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonsoir,

    Oui, menu 'format / mise en forme conditionnelle'.
    Tu sélectionnes toutes les cellules ayant le même rôle, tu choisis tes conditions (jusqu'à 3 pour excel 2003) et le format à appliquer.
    Pour toi ça pourrait être
    'La valeur de la cellule est' 'égale à' "oui"
    Format... onglet 'motif', vert

    eric
    1. Merci Eriic, mais je connais la mise en forme conditionnelle, le problème c'est que j'ai plus de 3 choix (OUI,NON,N/A,CLIENT,SALARIE1,SALARIE2, ...)

      Une autre solution?
      1. Contributeur
        Ah oui, j'avais lu un peu vite...

        tu peux mettre ta macro dans l'evenement Change de ta feuille (il faudra une saisie pour qu'elle se lance) ou dans SelectionChange (comme son nom l'indique il faudra changer la selection de la cellule active)
        Ou dans Workbook_SheetCalculate de thisworkbook ?
        eric
        1. Merci, mais comment faut-il faire pour mettre la macro dans l'évènement Change? Désolée, je suis débutante dans les macros.
          1. Contributeur
            Quand tu es dans le code de ta feuille, au-dessus tu as 2 listes déroulantes.
            Dans celle de gauche tu choisis 'worksheet', dans celle de droite l'evenement que tu veux.
            eric
            1. Je dois être "miro", mais je ne trouve pas. C'est dans OUTIL/MACRO/VBA ?
              1. Modérateur
                Bonsoir chriscece,

                Le plus simple : tu fais un clic droit sur l'onglet de la feuille et tu choisis "Visualiser le code"
                Tu te trouves dans une feuille blanche avec en haut les listes déroulantes.
                Dans celle de gauche où tu vois "Général", tu choisis "Worksheet".

                Mais en fait, tu peux utiliser cette macro :
                http://www.excelabo.net/excel/conditionformat.php#mefca12couleurs

                en mettant tes propres critères, bien entendu ! ;)

                m@rina
                1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                  Sub Test()
                  'Déclaration des variables -------------------------
                  Dim Cel As Range
                  Dim F As Worksheet
                  'MEI ----------------------------
                  Application.ScreenUpdating = False
                  'Blocage ragraîchissement écran
                  'Traitement------------------------
                  For Each F In Worksheets
                  'Pour chaque feuille du classeur
                  For Each Cel In F.UsedRange
                  'Pour chaque cellule de la plage utilisée de la feuille
                  Select Case Cel.Value
                  'définir case = valeur de cel
                  Case "OUI"
                  Cel.Interior.ColorIndex = 4
                  Case "NON"
                  Cel.Interior.ColorIndex = 3
                  Case "N/A"
                  Cel.Interior.ColorIndex = 8
                  Case "CLIENT"
                  Cel.Interior.ColorIndex = 17
                  Case "AVOCAT"
                  Cel.Interior.ColorIndex = 46
                  Case "TRIM"
                  Cel.Interior.ColorIndex = 39
                  Case "CAB. FAUX"
                  Cel.Interior.ColorIndex = 7
                  Case "8"
                  Cel.Interior.ColorIndex = 8
                  Case "A FAIRE"
                  Cel.Interior.ColorIndex = 3
                  Case "FAIT"
                  Case Else
                  Cel.Interior.ColorIndex = xlNone
                  End Select
                  Next Cel
                  Next F
                  Application.ScreenUpdating = True
                  End Sub
                  End Sub

                  Elle marchait très bien dans l'onglet général et maintenant ça beugue. Pourquoi?
                  1. Pour que ce soit plus simple, je joint le lien de mon fichier

                    http://www.cijoint.fr/cjlink.php?file=cj200807/cij6m0qwfN.xls
                    1. Contributeur
                      ça marche pas... ça bugue...
                      Dans ce cas c'est toujours la 3ème ligne
                      1. Contributeur
                        Pas d'utilisation de SelectionChange dans le fichier que tu as mis en ligne.
                        Mais vu la vitesse d'execution de ta macro oublie cette idée, à chaque fois que tu voudras saisir qcq chose il faudra attendre 3s, ça deviendra vite insupportable.
                        Optimise plus ta macro avant
                        1. Merci beaucoup pour votre aide à tous.

                          Eriic, je vois pas comment je peux optimiser, peux-tu m'aider? Et effectivement j'ai envoyé le fichier ou j'ai annulé la macro dans Worksheet.
                          1. Contributeur
                            ben déjà supprime toutes tes colonnes vides et fais :
                            For Each Cel In F.Range("A2").CurrentRegion
                            au lieu de For Each Cel In F.UsedRange
                            Tu balaieras 500 cellules au lieu 16000
                            1. Alors, j'ai essayé de supprimer les colonnes vides, j'ai beau faire clic droit / supprimer, ça marche pas.

                              Et si je mets ta formule et que je lance ma macro, ça ne fait plus rien.

                              AU SECOURS