Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 11h20   #1
Invité régulier
 
veronique guyon
Inscription : mai 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : veronique guyon

Informations forums :
Inscription : mai 2010
Messages : 18
Points : 5
Points : 5
Par défaut Couleurs cellules sur conditions

Bjr,

Je cherche une macro ou une fonction qui dirait la chose suivante :

Dans les colonnes C et E, il y a des dates, si en colonne A, tu vois inscris "CEP" (sa couleur est BLEU) mettre la même couleur que CEP...
"A" en rouge...

A B C D E
CP DU 29/07/11 AU 29/07/11
A DU 29/07/11 AU 29/07/11
J'ai essayé d'enregistrer pour voir son code, mais cela se bloque au moment de mettre la couleur, pas l'accés sur la barre (grisé). Sur ces colonnes, il y a des liste déroulante avec des dates.

Merci de votre aide !

vérolyde
VEROLYDE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h43   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Tu indiques "CEP" et "CP". J'ai utilisé "CP", si c'est "CEP", modifie dans le code. J'ai supposé d'après l'exemple qu'il fallait remplacer "CP" par "A" :


Code :
1
2
3
4
5
6
7
8
9
10
11
Sub test()
    Dim c As Range
    For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
        If c.Value = "CP" Then
            c.Value = "A"
            For i = 0 To 4 Step 2
                Cells(c.Row, 1).Offset(, i).Font.ColorIndex = 3
            Next i
        End If
    Next c
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/09/2011, 16h23   #3
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 597
Points : 1 597
Envoyer un message via MSN à carden752
Bonjour,

Une autre possibilité est d'utiliser de la mise en forme conditionnelle en attribuant une couleur pour une formule.
avec une formule de ce style en A1 et C1 et E1
La même couleur sera attribuée automatiquement aux 3 colonnes
Il suffit de l'appliquer 3 colonnes et la formule testera A1 puis A2, A3, A4... etc
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 16h28   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Je ne suis pas sûr qu'il ne faille pas remplacer "CP" par "A" (d'après l'exemple....
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 23h55   #5
Invité régulier
 
veronique guyon
Inscription : mai 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : veronique guyon

Informations forums :
Inscription : mai 2010
Messages : 18
Points : 5
Points : 5
Bsr,

Daniel a raison, j'ai mal transcrit ma demande :

Sachant que j'ai 4 lignes de A22:A25, choix dans une liste déroulante :
CP est de couleur bleu
A est de couleur rouge
RTT est de couleur vert...

Si en colonne A22 ="CP" mettre la date en colonne C22 & E22 en bleu
Si en colonne A22 ="A" mettre la date en colonne C22 & E22 en rouge
Si en colonne A22 ="RTT" mettre la date en colonne C22 & E22 en vert
etc...

J'ai déjà une macro qui spécifie la couleur de la colonne A selon les différents choix :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "A" Then Target.Interior.ColorIndex = 3
If Target.Value = "CEF" Then Target.Font.ColorIndex = 7
If Target.Value = "CET" Then Target.Font.ColorIndex = 2
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
If Target.Value = "CPE" Then Target.Font.ColorIndex = 9
If Target.Value = "CSS" Then Target.Font.ColorIndex = 8
If Target.Value = "CMAT" And Target.Value <> "CPAT" Then Target.Font.ColorIndex = 46
If Target.Value <> "RTT" And Target.Value <> "RTT½A" And Target.Value <> "RTT½M" _
Then Target.Font.ColorIndex = 10
If Target.Value = "MAL" Then Target.Font.ColorIndex = 1
If Target.Value <> "EMAL" And Target.Value <> "EMAL½A" And Target.Value <> "EMAL½M" _
Then Target.Font.ColorIndex = 1
With Selection.Interior
        .ColorIndex = 7
        .Pattern = xlSolid
    End With
If Target.Value <> "CP" And Target.Value <> "CP½A" And Target.Value <> "CP½M" _
Then Target.Font.ColorIndex = 5
If Target.Value = "RTTE" Then Target.Font.ColorIndex = 7
    With Selection.Interior
        .ColorIndex = 10
        .Pattern = xlSolid
    End With
If Target.Value = "RTTE TRAV" Then Target.Font.ColorIndex = 3
    With Selection.Interior
        .ColorIndex = 10
        .Pattern = xlSolid
    End With
End Sub
Pourrait-on la compléter pour qu'elle applique également les couleurs sur les colonnes C22:C25 et E22:E25 par rapport au choix.

D'autre part, on m'a déjà précisé que l'on ne pouvait pas mettre deux Private Sub Worksheet_Change(ByVal Target As Range)

J'ai également une autre macro que j'utilise pour changer la valeur de la date
Code :
=SI($C24;AUJOURDHUI();"")
en colonne F. Elle marche trés bien seule.

Code :
1
2
3
4
5
6
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$22" Then If Not (IsEmpty(Target.Value)) Then Range("F22").Value = Now Else Range("F22").ClearContents
If Target.Address = "$C$23" Then If Not (IsEmpty(Target.Value)) Then Range("F23").Value = Now Else Range("F23").ClearContents
If Target.Address = "$C$24" Then If Not (IsEmpty(Target.Value)) Then Range("F24").Value = Now Else Range("F24").ClearContents
If Target.Address = "$C$25" Then If Not (IsEmpty(Target.Value)) Then Range("F25").Value = Now Else Range("F25").ClearContents
End Sub
Je souhaiterai imbriquer tout cela dans un seule et même code, mais malgré plusieurs propositions et votre aide, rien ne marche ensemble.

Merci de vos réflexions.

Verolyde
VEROLYDE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 07h18   #6
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Avec quelle version travailles-tu?

A partir de la 2007, tu peux utiliser 64 formats conditionnels et il me semble que tu pourras alors te passer de VBA et utiliser la technique préconisée par Carden752.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h28   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Juste une petite remarque en attendant que tu répondes sur ta version d'Excel. Dans le premier code, on trouve plusieurs fois les lignes :

Citation:
Code :
1
2
3
4
With Selection.Interior
        .ColorIndex = 10
        .Pattern = xlSolid
    End With
ColorIndex ayant diverses valeurs. Comme il n'y a pas de condition, le fond de la cellule prend toujours la couleur de le dernière instruction (ColorIndex = 10). Soit tu rends cette coloration conditionnelle, soit tu ne conserves que la dernière coloration (celle citée ci-dessus.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h33   #8
Invité régulier
 
veronique guyon
Inscription : mai 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : veronique guyon

Informations forums :
Inscription : mai 2010
Messages : 18
Points : 5
Points : 5
Bjr à tous,

Ma version au travail est 2003 et à la maison 2007.

Ce travail est à faire en 2003. Sur 2007, cela est plus facile et j'avais en effet créé des formats conditionnels, mais cela bien-sûr ne marche plus sur 2003, d'où une recherche de macro.

Encore merci pour l'info concernant la prise en compte de ma dernière couleur. Je pensais que je devais à chaque fois indiquer la couleur de la police + couleur de fond, (s'il y a) et non pas que cela reprenait la dernière couleur.

Je comprends mieux le pb et il faut que je retravaille cela.

Je reconnais que je suis nouvelle et pratique comme on me l'a si bien précisé... à tâton. Je recherche puis teste, jusqu'à ce je trouve ce qui correspond au mieux à mon pb.

J'adore cela ! C'est devenu une passion le VBA. Je vais en formation lundi et mardi et espère comprendre enfin mieux toutes ces explications et découvrir les macros déjà créées des astuces pour mes futurs projets.

Je me suis lancée, il y environ 2 ans, mais tout en tatonnant, j'ai réussi à avancer, mais j'avoue sans toujours comprendre le fond, C'est pourquoi, il est important de faire une formation avec de bonnes bases pour gagner du temps et ne pas en perdre autant que moi.

Encore merci de toute l'aide que vous pourrez encore m'apporter.

Vérolyde
VEROLYDE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h35   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Essaie la macro suivante. Elle colorie les trois colonnes A, C et E. Il y a 3 bémols. Regarde les lignes commentées. Qu'est-ce que tu veux obtenir avec ces inégalités; il y a des chances pour que deux (au moins) des conditions soient réalisés. Que faire ? Il reste aussi le problème des couleurs de fond de cellules. Quoi mettre ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
Select Case Target.Value
    Case "A", "RTTE TRAV": Target.Font.ColorIndex = 3
    Case "CEF": Target.Font.ColorIndex = 7
    Case "CET": Target.Font.ColorIndex = 2
    Case "CPE": Target.Font.ColorIndex = 9
    Case "CSS": Target.Font.ColorIndex = 8
    Case "CMAT": Target.Font.ColorIndex = 46
    Case "MAL": Target.Font.ColorIndex = 1
    Case "RTTE": Target.Font.ColorIndex = 7
    Case Else
'        If Target.Value <> "RTT" And Target.Value <> "RTT½A" And Target.Value <> "RTT½M" Then
'            Target.Font.ColorIndex = 10
'        ElseIf Target.Value <> "EMAL" And Target.Value <> "EMAL½A" And Target.Value <> "EMAL½M" Then
'            Target.Font.ColorIndex = 1
'        ElseIf Target.Value <> "CP" And Target.Value <> "CP½A" And Target.Value <> "CP½M" Then
'            Target.Font.ColorIndex = 5
'        End If
End Select
Target.Offset(, 2).Font.ColorIndex = Target.Font.ColorIndex
Target.Offset(, 4).Font.ColorIndex = Target.Font.ColorIndex
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h31.


 
 
 
 
Partenaires

Hébergement Web