Changement de couleurs dans excel

Résolu
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   -  
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
encore un tableau tarabiscoté !!!
Je dois gerer un circuit de formation et chaque fois que j'avance dans la procédure le titre doit changer de couleur . Comment faut il faire ?
Je joins le fichier demo
https://www.cjoint.com/?0bFpxpOSpgQ

Merci de votre aide

A voir également:

12 réponses

blablablu Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
mise en forme conditionnelle.
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
Le problème de la mise en forme conditionnelle, c'est que mon tableau doit se derouler progressivement : je m'explique.
1. je réalise donc une croix
2. je facture une autre croix et la premiere case doit changer de couleur sans que j'enlève la première croix
3. je conteste (meme chose)
4. tout est ok
Donc a chaque fois il faut changer la couleur sans enlever la croix
Y a t-il une solution miracle ?
Merci d'avance
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
et en plus je n'ai que trois possibilités de couleurs et il m'en faut quatre
Faut il passer par une macro et alors là je ne suis pas forte du tout
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
A force de bidouiller j'ai trouvé quelque chose : en mettant les mises en formes conditionnelles dans le sens inverse, les couleurs changent. Mais je n'ai que 3 solutions et il m'en faut 4
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

une proposition :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim col As Long, couleurs As Variant
    couleurs = Array(vbBlue, vbRed, vbGreen, vbYellow)
    If Target.Column < 2 Or Target.Column > 5 Then Exit Sub
    For col = 5 To 2 Step -1
        If LCase(Cells(Target.Row, col)) = "x" Then
            Cells(Target.Row, 1).Interior.Color = couleurs(col - 2)
            Exit For
        End If
    Next col
    If col = 1 Then Cells(Target.Row, 1).Interior.ColorIndex = 0
End Sub


eric
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
Super ta macro ça marche, mais il faut que je la comprenne pour l'adapter à un tableau qui fait une 50ène de colonnes et ou quand on arrive à certaine colonne le titre change de colonne. Meme tableau que dans l'exemple mais avec des colonnes entre. De toute manière il va bien falloir que je comprenne les macros un peu mieux que ça.
Enfin si je n'y arrive pas ou si tu as un tuyau merci d'avance et merci encore.
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai vraiment besoin d'un coup de main, car ce n'est pas simple du tout pour moi. Donc comment adapter la macro pour un tableau + grand avec des colonnes entre.
Merci d'avance
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
 
Bonsoir,

J'ai modifié pour que ce soit plus simple pour toi :
- au début du code tu saisis dans les arrays() les colonnes titres, et celles de début et fin de tes plages. Ici 2 plages de définies, tu peux en ajouter d'autres.
- les couleurs ne sont plus en dur dans le code mais récupérées dans les en-têtes des colonnes. Plus visuel pour choisir et plus simple pour modifier ces couleurs (il faudra revalider les x finaux concernés si tu modifies les couleurs après saisie).

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cTitres, cdebuts, cfins
    Dim pl As Long, col As Long, ok As Boolean
    ' saisir les n° des colonnes des plages à contrôler
    cTitres = Array(1, 8) 'colonnes titre
    cdebuts = Array(2, 9) ' colonnes début des plages
    cfins = Array(5, 12) ' colonnes fin des plages
    
    ' détection si dans plages
    For pl = 0 To UBound(cTitres)
        If Target.Column >= cdebuts(pl) And Target.Column <= cfins(pl) Then Exit For
    Next pl
    If pl > UBound(cTitres) Then Exit Sub
    
    ' recherche "x"
    For col = cfins(pl) To cdebuts(pl) Step -1
        If LCase(Cells(Target.Row, col)) = "x" Then
            Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = Cells(1, col).Interior.ColorIndex
            ok = True
            Exit For
        End If
    Next col
    If Not ok Then Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = xlNone
End Sub

couleurTitre.xls

eric
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
bonjour,
le fichier que tu m'as envoyé marche super mais comme je suis difficile !!! c'est encore plus compliqué !! Dans mon tableau on a une colonne de titre et de temps en temps une colonne qui lorsque l'on met une croix dessus change la couleur du titre....
Je met le fichier joint
Merci
https://www.cjoint.com/?0ciifBnURBkci d'avance
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
mes excuses mais le fichier c'est mélangé...
https://www.cjoint.com/?0ciifBnURBk
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
c'est sûr que c'est embêtant...
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,
Y a t-il une solution à mon problème ou cela est il impossible à faire ?
Merci
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

et de temps en temps une colonne ...
Laquelle? Si il y a un problème il faut que ce soit reproductible et que tu donnes les manip pour pour le reproduire.
De plus ton tableau ne correspond pas à celui du début, et il n'y pas de code dedans.
Désolé, je ne peux pas tout deviner...

eric
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
Toute mes excuses si je ne suis pas très claire mais il est difficile d'expliquer quelque chose que l'on voit evident puisque on l'a mis en piste.
Je vais tenter d'etre compréhensible.
Mon tableau est le meme que le premier sauf que j'ai rajouté des colonnes entre les colonnes ou la croix change la couleur du titre. Dans ces colonnes entre des données n'ayant aucune incidence sur la couleur du titre. Dans la macro que tu m'as fait les colonnes se suivent, effectivement c'est le premier modèle que j'avais envoyé, mais je pensais que les plages apparaitraient séparées dans la macro et que je pourrais adapter à mon modèle.
Donc pour plus de précision, les plages qui doivent changer la couleur du titre sont les plages qui ont un titre avec une couleur entre parenthèse.
Merci d'avance
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Ce sont les colonnes 4, 7, 10 et 14 avec leur titre en colonne 1.
Il suffit donc de saisir ces paramètres :
    ' saisir les n° des colonnes des plages à contrôler 
    cTitres = Array(1, 1, 1, 1) 'colonnes titre 
    cdebuts = Array(4, 7, 10, 14) ' colonnes début des plages 
    cfins = Array(4, 7, 10, 14) ' colonnes fin des plages 

A moins que j'ai mal compris qcq chose ?

eric
0
AMISDAL Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   2
 
Super, ça marche génial, merci beaucoup
0