Quand on choisit le format d'affichage pour une mise en forme conditionnelle, certains paramètres ne sont pas accessibles (Police, taille de police, affichage en exposant...) et donc il semble impossible de les utiliser et pourtant il existe une solution !
Il faut que le fichier soit en format standard XLSX (astuce ne fonctionnant pas avec les vieux fichiers XLS).
Attention : la méthode présentée ici est "non conventionnelle". Je ne garantis pas que dans une semaine elle fonctionne encore bien que cela fasse plus de 10 ans qu'elle est disponible, ni que le document ne soit pas endommagé à la suite de cette manipulation (ça ne m'est pas arrivé mais je ne l'ai employée que quelques fois !).
Ce n'est que pour s'amuser à rendre possible l'impossible. 😁
À tester sur une copie du fichier.
Dans cette exemple, je veux que la mise en forme conditionnelle, de la cellule A1 de la feuille "Test", provoque un passage en police Wingding et en taille 20 quand elle est déclenchée (passage de la valeur de la cellule à 0).
Étape 1 : Faire la mise en forme conditionnelle de manière standard
On va créer une mise en forme conditionnelle classique en utilisant un formatage avec les paramètres disponibles.
Pour éviter des erreurs/confusions entre les mises en forme des différentes mises en forme conditionnelles et ainsi se simplifier la tâche pour cette manipulation, on va appliquer un formatage de couleur de police spécifique (couleur non utilisée par une autre mise en forme conditionnelle).
On va devoir retenir quel est le code hexadécimal de la couleur utilisée ce qui nous servira de repère pour la suite. Pour cela, on peut passer par l'onglet Personnalisées de la fenêtre Couleurs (cette astuce n'est qu'un conseil et n'est donc pas obligatoire pour réaliser la manipulation).
De plus il faudra mémoriser le nom de la feuille et la référence à la plage concernée par la mise ne forme conditionnelle.
Étape 2 : Ajout des paramètres interdits !
Maintenant on entre dans les entrailles du fichier Excel ! On va fouiller dans un 1er fichier, puis dans un 2ème , pour enfin modifier un 3ème 😰!
- On enregistre et on ferme le fichier (obligatoire).
- Via l'explorateur de fichier Windows, on ajoute l'extension ".zip" après l'extension ".xlsx" du fichier (ex : MEF1.xlsx.zip) et on valide l'alerte Windows de changement d'extension.
- On va utiliser un logiciel de compression pour ouvrir le fichier (Par exemple Winzip, winrar, 7zip...). => Éviter d'utiliser l'explorateur de fichier Windows qui sera problématique pour la suite de la manipulation lors de la modification l'archive Zip.
- On va chercher/mémoriser l'identifiant de la feuille (id) de la feuille contenant la mise en forme à modifier.
- On ouvre le fichier Xl/workbook.xml et on cherche le nom de la feuille (ici "Test"). On retient la valeur de la balise sheetId (ici "1").
- On ferme le fichier workbook.xml puis on ouvre le fichier Xl/worksheets/sheet#.xml (le # correspond à l'id de l'étape 4).
- Dans les paires de balises "conditionalFormatting", on cherche celles correspondantes à la plage visée (ici sqref="A1"). Les autres valeurs comme type, priority, operator, formula peuvent aussi aider à repérer la bonne paire.
- On retient la valeur de dxfId (ici : 2). Pour information, ces valeurs commencent à 0.
- Remarque : On peut remarquer la balise sheetPr codeName qui correspond au nom interne de la feuille (CodeName en VBA) que l'on peut trouver facilement via l'explorateur de projet de Visual Basic Editor (VBE).
- On ferme le fichier Xl/worksheets/sheet#.xml puis on va extraire et ouvrir le fichier Xl/styles.xml de l'archive.
- Ici ce qui nous intéresse ce sont les paires de balises dxf. La 1ère correspond à dxfId = 0. Dans notre exemple nous devons donc modifier la 3ème paire puisque dxfId = 2 (cf étape 5).
- C'est ici que l'astuce du code couleur Hexadécimal peut nous faciliter la vie via une recherche de cette chaîne.
- On insère dans la paire de balise font les chaînes suivantes (l'ordre n'a pas d'importance) :
- "<name val="Wingdings"/>" pour utiliser la police Wingdings (je ne sais pas pourquoi mais certaine police ne fonctionne pas).
- "<sz val="20"/>" pour passer en taille 20.
- On ferme et on enregistre le fichier styles.xml puis on le replace dans l'archive zip dans son dossier d'origine Xl.
- On renomme le fichier en supprimant l'extension ".zip" afin de retrouver l'extension ".xlsx".
- On ouvre le fichier et on croise les doigts 😁.
Merci pour votre attention bienveillante.