Excel - colorier une cellule selon la couleur d'une autre
ManuLux
Messages postés
5
Statut
Membre
-
ManuLux Messages postés 5 Statut Membre -
ManuLux Messages postés 5 Statut Membre -
Bonjour,
C'est mon premier message, jusqu'ici j'ai toujours trouvé mes réponses dans les forums existants. Ma requête est donc un peu plus corsée... Je vais essayer d'être précis. Avis aux amateurs de challenge !!
je voudrais que le fond d'une cellule se colore si le fond d'une autre cellule sur un autre feuillet est coloriée.
Plus précisément : J'ai un fichier excel de gestion de congé. Il y a un feuillet par personne avec un calendrier sur lequel je colorie les jours ou la personne est en congé.
Je voulais regrouper sur un autre feuillet les congés de tous les membres de l'équipe et que cela se fasse automatiquement avec le même principe de cellules qui se colorise pour chaque jour de congés.
En gros si sur un feuillet 'M.Dupont" je colorise le fond de la cellule B3 en rouge il faudrait que sur un autre feuillet "Global Equipe" lfon de la cellule AM25 se colorise automatiquement en rouge.
C'est possible. Je suis pas contre une macro.
J'espère avoir été clair. N'hésitez pas si vous voulez des précisions.
C'est mon premier message, jusqu'ici j'ai toujours trouvé mes réponses dans les forums existants. Ma requête est donc un peu plus corsée... Je vais essayer d'être précis. Avis aux amateurs de challenge !!
je voudrais que le fond d'une cellule se colore si le fond d'une autre cellule sur un autre feuillet est coloriée.
Plus précisément : J'ai un fichier excel de gestion de congé. Il y a un feuillet par personne avec un calendrier sur lequel je colorie les jours ou la personne est en congé.
Je voulais regrouper sur un autre feuillet les congés de tous les membres de l'équipe et que cela se fasse automatiquement avec le même principe de cellules qui se colorise pour chaque jour de congés.
En gros si sur un feuillet 'M.Dupont" je colorise le fond de la cellule B3 en rouge il faudrait que sur un autre feuillet "Global Equipe" lfon de la cellule AM25 se colorise automatiquement en rouge.
C'est possible. Je suis pas contre une macro.
J'espère avoir été clair. N'hésitez pas si vous voulez des précisions.
9 réponses
-
Bonjour
Je pense qu'il va falloir passer par une macro
Peux tu envoyer une partie de ton fichier au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message (ajoutes y quelques exemple)
Cdlmnt -
Voici : https://www.cjoint.com/?3AfsxoF53jf
Ce document me permet de gérer l'emploi du temps de plusieurs personnes sur l'année.
il y 2 feuillets relatif à une même personne. (personne1 et personne-1). Sur le premier feuillet je gère l'emploi du temps hebdomadaire et le second sa projection sur l'année.
Sur le second feuillet qui gère l'emploi du temps à l'année je note les congés, maladie, heures sup avec une colonne dont je colorie la case du jour concerné. (dans mon document les cases sont bleus ou rouges)
Je voudrais que la mise en forme de cette colonne soit reproduite dans le feuillet "congés global" dans la colonne qui correspond au nom de la personne concernés.
Pas évident d'expliquer très clairement, je m'en excuse. -
Désolé, je ne peux pas l'ouvrir avec excel 2003
Cdlmnt -
Bonjour
Au lieu de colorer les cellules "manuellement" il vaudrait mieux entrer une lettre , C pour congés, M pour maladie par ex et faire colorer les cellules par mise en forme conditionnelle.
Il est aisé ensuite dans le Recap de récuperer les valeurs-lettres dans les cellules et d'appliquer la même MFC pour mettre en couleurs
Néanmoins si les cellules sont colorées "manuellement" il est possible par macro de faire colorer les cellules de Recap à l'identique
Fichier exemple illustrant les 2 possibilités : https://www.cjoint.com/?0AfsPQXOUM2
Cdlmnt
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re
Depuis mon dernier message tu as posté ton fichier qui est plus complexe que prévu
Voilà la macro pour colorer le Recap global à l'aide du bouton Actualiser à droite
https://www.cjoint.com/?0AftqGbKN15
Cdlmnt
-
J'ai fais un test rapide et cela marche !!
Un gros MERCI !
J'ai deux questions. Tout d'abord pour que cela se réactualise je vais dans macro et exécuter. Est ce nécessaire? N'y a t'il pas plus court. Je n'ai pas de bouton réactualiser mais je suppose que c'est un soucis de paramètres dans l'affichage ?
Seconde question. La macro fonctionne mais si je veux ajouter des personnes je dois ajouter des feuillets. Cela veut-il dire que je devrais modifier la macro ?
Est ce compliqué ?
En fait ça fait plus de deux questions mais je suis ravie que vous ayez trouver une solution. Ce fichier va me permettre de gagner beaucoup de temps.
Encore merci !! -
Je viens de voir le bouton "actualiser". Ca fait une question en moins ;)
-
Bonjour,
1) J'ai bien mis un bouton sur la feuille en colonne BJ
Tu peux aussi si tu prefères chosir un raccourci-clavier pour lancer la macro : Onglet Developpeur Macros Options
2) Si tu rajoutes des feuilles et donc des colonnes dans Global il faut modifier en effet dans la macro d'une part la boucle qui décompte les personnes et d'autre part le calcul pour colorer dans Global car le décalage des colonnes dans global va changer
Sub reportconges() 'Boucle sur les personnes de la dernière à la 1ere puisqu'elles sont dans cet ordre dans global For p = 3 To 1 Step -1 ' Boucle sur les colonnes des feuilles personnelles de 5 en 5 (colonne E puis J etc) For colonne = 5 To 30 Step 5 For ligne = 2 To 69 col = Sheets("Personne-" & p).Cells(ligne, colonne).Interior.ColorIndex colonneG = colonne * 2 - 2 + p * -1 + 3 'calcul de la colonne de Global où colorer Sheets("Congés Global").Cells(ligne, colonneG).Interior.ColorIndex = col Next ligne Next colonne Next p End Sub
Pour l'instant le calcul pour la colonne 5 de perso pour personne 3 donne 5*2-2+(3*-1)+3 soit 10-2 -3+3 = 8 soit la colonne H puis pour la colonne 10 donne 18 soit colonne R etc
Si il y a 4 personnes la 1ere colonne sera toujours la colonne H mais la suivante sera la colonne S etc il faut donc rebâtir une formule
La structure de la formule de base est :
colonne*nombre a + nombre b + p *-1 + nombre c
nombre c correspond au nombre de personnes
nombre a est trouvé (par résolution d'un système d'équations)en faisant le calcul : (2eme colonne de Global- 1ere colonne de Global)/2eme colonne de feuille perso - 1ere colonne de feuille perso)
(dans le cas présent: (18-8)/(10-5) = 10/5 =2
dans le cas de 4 personnes: (19-8)/(10-5)= 11/5)
nombre b est trouvé en faisant le calcul : 1ere colonne de global - (1ere colonne perso * nombre b)
(dans le cas présent: 8-(5*2) = 8-10= -2
dans le cas de 4 personnes: 8-(5*11/5) =8-11=-3)
La formule pour ' personnes sera donc :
colonneG = colonne * 11/5 - 3 + p * -1 + 4
On peut automatiser ce calcul dans la macro
A ce moment il faut remplacer la 1ere par celle ciSub reportconges() pers = 3 ' nombre de personnes nba = (7 + pers) / 5 nbb = 8 - 5 * nba For p = pers To 1 Step -1 For colonne = 5 To 30 Step 5 For ligne = 2 To 69 col = Sheets("Personne-" & p).Cells(ligne, colonne).Interior.ColorIndex colonneG = colonne * nba + nbb + p * -1 + pers Sheets("Congés Global").Cells(ligne, colonneG).Interior.ColorIndex = col Next ligne Next colonne Next p End Sub
Il te suffiras alors simplement de changer le nombre de personnes dans la 1ere ligne pour que la macro s'adapte
Cdlmnt
-
Merci de toutes ces infos.
C'est tout neuf pour moi. Je comprends le principe dans les grosses lignes mais mes premières tentatives de modifications sont des échecs..
Je vais essayer de m'y pencher avec plus de temps et éventuellement revenir avec des questions précises. Pour le moment je rame !!