[Excel] : Macro pour modifier format cell en fonction d'une autr

[Résolu/Fermé]
Signaler
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016
-
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016
-
Bonjour,

Sous Excel, j'avais créé un document exploitant les mises en formes conditionnelles avec des formules qui fonctionnaient parfaitement. Malheureusement, les mises en formes conditionnelles avec formules ne fonctionnent pas sur la version d'excel de la personne à qui j'ai envoyé le fichier.

Je voudrais donc automatiser cette mise en forme avec une macro.

J'ai pour cela créer un onglet supplémentaire, qui transforme chaque condition en chiffre avec des formules, sur lesquelles les mises en formes conditionnelles fonctionnent bien.

J'ai donc un onglet avec du texte dans les cellules, que je veux conserver, et un autre onglet dans lequel j'ai des chiffres, avec les mises en forme que je veux appliquer aux cellule de l'onglet précédent.

La macro devrait donc appliquer sur la cellule du premier onglet la mise en forme de la cellule équivalente dans l'onglet précédent, sans en copier le contenu.

J'espère que je suis clair dans mes explications, sinon n'hésitez pas à me solliciter sur des points qui vous paraissent obscurs.

En tout cas, je vous remercie de l'aide que vous pourrez m'apporter !

Bonne journée.

Greg

3 réponses

Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
536
Bonjour Greg,

Tu ne dis pas pourquoi les mises en forme conditionnelles avec formules ne fonctionnent pas sur la version d’Excel de la personne à qui tu as envoyé le fichier.

Si tu automatises cette mise en forme avec une macro, je ne vois pas pourquoi tu utilises un onglet supplémentaire.

Un classeur pour exemple serait le bienvenu.
Pour joindre un fichier, tu peux utiliser https://www.cjoint.com/

A+
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Bonjour Gyrus,

Les mises en forme conditionnelles ne s'affichent même pas quand le destinataire ouvre le fichier. Je pense que le problème vient de nos versions Excel, puisque ma version est plus récente que la sienne.

L'onglet supplémentaire n'est effectivement pas obligatoire, mais permet à mon sens de rendre la macro plus compréhensible pour des non-initiés (ce qui est le cas du destinataire du fichier).
J'ai en effet tenté de créer une macro qui copie le format de la cellule qui possède la mise en forme vers la cellule correspondante dans l'autre onglet. le problème c'est que la macro ne considère pas la forme de la cellule comme un format puisqu'elle vient de la MFC, et ne la copie donc pas ...

Si tu penses qu'une autre méthode fonctionne je prend :)

le fichier actuel (modifié pour des raisons de confidentialité) : http://www.cjoint.com/c/FAwnzFoXyMX

Merci :)
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
536
Je vois bien la structure de la feuille "MFC Tot" et les mises en forme conditionnelles associées.

Je comprends moins bien la feuille "MFC" où il semble qu'une relation soit faite entre couleur, activité et valeur (mais pourquoi 2 tableaux séparés ?). Comme il n'y a aucun lien avec les autre feuilles, je ne vois pas d'intérêt autre que celui d'indiquer cette relation Valeur <=> Activité <=> Couleur.

Et je comprends encore moins bien l'utilité de la feuille "Janvier Decembre" qui semble reproduire la feuille "MFC Tot". Tu dis vouloir y intégrer une mise en forme en fonction de l'onglet "MFC Tot". J'ai du mal à saisir ...

J'aurais mieux compris si tu disais vouloir intégrer des MFC dans la feuille "Janvier Decembre" en suivant la codification placée dans la feuille MFC.
Exemple : si valeur 1 en E3, alors appliquer le format correspondant indiqué en feuille MFC, soit 1 <=> Activité 1 <=> rose bonbon.
Mais si c'est cela, je ne vois pas du tout l'intérêt de la feuille MFC Tot.

A+
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Hello Gyrus,

"J'aurais mieux compris si tu disais vouloir intégrer des MFC dans la feuille "Janvier Decembre" en suivant la codification placée dans la feuille MFC.
Exemple : si valeur 1 en E3, alors appliquer le format correspondant indiqué en feuille MFC, soit 1 <=> Activité 1 <=> rose bonbon. "

C'est exactement ça, l'onglet MFC TOT n'est qu'un reliquat d'une ancienne version, dans laquelle j'essayais de ne pas utiliser de Macro.

Mais comme c'est le cas aujourd'hui, la solution que tu préconises dans le passage que j'ai cité précédemment est exactement celle qu'il me faut. Si tu as un code vba à me proposer en exemple je suis preneur !! :)

Merci de ton aide en tout cas !
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
536 >
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Bonjour,

Voici un exemple qui illustre la solution préconisée
https://www.cjoint.com/c/FAAjxsuyQEC

La modification d'une cellule dans la plage E3:JD30 est détectée avec l'évènement Worksheet.Change. La procédure cherche le code dans la feuille MFC et affecte les style et couleur de motif correspondant à ce code.
Dis-moi si tu as besoin d'explications complémentaires.

A+
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016
>
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

Hello Gyrus,

En fait, l'onglet MFC Tot servait à déterminer le nombre qui permet d'avoir la bonne mise en forme. Et c'est ensuite cette mise en forme qui doit être copiée sur l'onglet Janv-Decembre.

Dit autrement, la mise en forme des cellules de l'onglet "janv-decembre" ne dépend pas du contenu des cellules dudit onglet, mais bien du contenu des cellules de l'onglet MFC tot.

Je ne sais pas si c'est clair, le fait de bosser sur des onglets anonymisés fait que je peux avoir tendance à m'embrouiller dans mes explications :)

Vraiment, merci beaucoup pour ton aide sur ce sujet !

Greg
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
536
Bonjour,

Si je comprends bien (et c'est pas gagné), lorsque l'opérateur saisit un nombre dans la feuille "janv-decembre", il faut rechercher ce nombre dans la feuille "MFC Tot" et affecter la couleur de remplissage de la cellule trouvée à celle de la saisie.
En clair, cette fois c'est la feuille MFC qui ne sert plus à rien.
J'ai bon ?

A+
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Hello Gyrus,

En fait, pas vraiment :) je comprends que ce soit un peu compliqué, vu qu'en plus j'ai modifié le fichier pour le rendre anonyme (pour des raisons de confidentialité, tout ça).

En gros, l'utilisateur saisie des infos dans des onglets. Ces infos sont déversées pour une partie dans l'onglet janv-decembre directement (au format texte) et les autres sont traitées par l'onglet MFC tot sous format numérique. C'est dans cet onglet qu'il y a une mise en forme conditionnelle en fonction du résultat obtenu dans la cellule (par exemple, si condition 1 et condition 2 remplie, alors résultat = 3 et donc mise en forme conditionnelle de case jaune à pois bleus)

Jusque là, tout va bien et mon fichier fonctionne.

Ma difficulté, c'est que je n'arrive pas à faire une macro qui permette de faire en sorte que les cellules de l'onglet janv-decembre prennent le format des cellules correspondantes dans l'onglet MFC tot sans se soucier de leur propre contenu de cellule.

Par exemple, considérons la cellule A3 de l'onglet Janv-Decembre:
comme c'est une case particulière, une information au format texte est présente dans cette cellule, suite aux données rentrées par l'opérateur dans les onglets de saisie.
Il se trouve également que la cellule A3 de l'onglet MFC tot a pour résultat 2, suite à d'autres infos rentrées dans les onglets de saisie.
La cellule A3 doit donc devenir blanche à pois rouges, comme déterminer dans l'onglet MFC.
Et la cellule A3 de l'oonglet janv-decembre doit copier cette mise en forme.

Il faut donc que la macro fonctionne en 3 étape:
- donner un format à la cellule A3 de l'onglet MFC Tot en fonction du résultat
- copier ce format à la cellule A3 de l'onglet janv-décembre (toujours sans prendre en compte les infos présentes dans cette cellule)
- pouvoir se mettre à jour automatiquement en fonction des changements de saisie (donc si le format de la cellule A3 de l'onglet MFC tot change, le format de la cellule A3 de l'onglet janv-decembre change automatiquement).

J'espère que c'est plus clair comme ça Gyrus :) moi aussi, quand on m'a expliqué le pourquoi du comment, il m'a fallu du temps pour rendre la demande claire.

En tout cas merci beaucoup pour ton aide !
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
536 >
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Bonjour,

Tu peux faire en sorte que le format des cellules de la feuille "MFC Tot" et celui des cellules correspondantes de la feuille "Janvier Decembre" soit identique.
Cela peut se faire automatiquement en fonction des changements de saisie des cellules de la feuille "MFC Tot" en utilisant l'évènement Worksheet.Change.

Pour cela, tu n'as pas besoin d'utiliser les MFC d'Excel. Il suffit que tu établisses la correspondance entre valeur et format dans la feuille "MFC". Ensuite, sur un changement de valeur dans la feuille "MFC Tot", la procédure effectue la copie du format correspondant à cette valeur dans la feuille "MFC" et colle le format dans les 2 feuilles "MFC Tot" et "Janvier Decembre".

A+
Messages postés
8
Date d'inscription
vendredi 22 janvier 2016
Statut
Membre
Dernière intervention
7 mars 2016

Hello Gyrus,

Nickel, cela marche parfaitement !

Merci beaucoup du temps que tu as pris pour m'aider,

A charge de revanche,

A+