Excel - colorier une cellule selon la couleur d'une autre

Fermé
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015 - 5 janv. 2015 à 17:18
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015 - 7 janv. 2015 à 13:02
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.
A voir également:

9 réponses

ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
5 janv. 2015 à 17:48
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
0
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015
5 janv. 2015 à 18:23
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.
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
5 janv. 2015 à 18:30
Désolé, je ne peux pas l'ouvrir avec excel 2003


Cdlmnt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 738
5 janv. 2015 à 18:33
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
0

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

Posez votre question
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 738
5 janv. 2015 à 19:09
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
0
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015
6 janv. 2015 à 15:29
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 !!
0
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015
6 janv. 2015 à 15:55
Je viens de voir le bouton "actualiser". Ca fait une question en moins ;)
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 738
6 janv. 2015 à 16:48
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 ci
Sub 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









0
ManuLux Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015
7 janv. 2015 à 13:02
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 !!
0