Macro ou Données Validation

chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
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

14 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
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?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
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.
0

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

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
Je dois être "miro", mais je ne trouve pas. C'est dans OUTIL/MACRO/VBA ?
0
m@rina Messages postés 23933 Date d'inscription   Statut Contributeur Dernière intervention   11 465
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
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?
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
Pour que ce soit plus simple, je joint le lien de mon fichier


http://www.cijoint.fr/cjlink.php?file=cj200807/cij6m0qwfN.xls
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
ça marche pas... ça bugue...
Dans ce cas c'est toujours la 3ème ligne
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
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.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
chriscece Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   14
 
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
0