Bug à l'exécution d'une macro - Couleur de fond

Bonjour à toutes et tous !

J'utilise un fichier Excel relativement complet pour l'édition de rapports spécifiques depuis 7 ans maintenant. Toutes mes macros fonctionnaient parfaitement jusque aujourd'hui où ma macro permettant de définir une couleur de fond se met à buguer. Je n'ai fais aucune modification dessus (j'ai mon rapport sur une trame de base que je ne modifie jamais).

En gros, quand le résultat est inférieur à l'objectif, le fond se met en vert dégradé, quand le résultat est supérieur à l'objectif le fond se met en rouge dégradé. La macro me permet également de déplacer les étiquettes "Objectif" et "Résultat" automatique sur une échelle. Le problème est que maintenant le fond se met dans tous les cas en bleu dégradé.

J'ai testé la macro ligne par ligne, elle fonctionne parfaitement bien, la couleur se met correctement (vert ou rouge), mais le fond devient bleu à la ligne "End With", je ne comprend pas pourquoi !

Ci-joint un fichier excel avec le problème :)

Merci pour votre aide !

12classeur1.xlsm (23.11 Ko)

Salut

essaye ça :

11classeur1.xlsm (22.37 Ko)

Merci Amir pour ta réponse ! Je n'arrive pas à lancer la macro par contre (je ne connais pas cette fonction privateSub), comment as-tu fais ?

D'ailleurs j'ai testé mon rapport sur un autre PC avec une ancienne version d'Excel, tout fonctionne parfaitement. je viens de voir qu'excel a été mis à jour le 04/11 dernier sur mon PC, le bug viendrait donc d'une MàJ d'Excel ?

Edit : Ce code n'est qu'une partie de ma macro, la macro globale gère plusieurs feuilles en passant de l'une à l'autre.

je suppose que tu sais comment autoriser les macros

Oui quand même :D Mais au bouton "Play" comme je fais d'habitude (ou en affectant une forme à une macro), il ne trouve pas la tienne.

Edit : je viens de comprendre que ton code était automatique en modifiant les valeurs. Cela ne fonctionne pas, l'étiquette redevient bleue.

Si les macros sont activées sur ton version d'excel ( j ai testé sur 2007 fr) et tu a testé le rapport sur un autre PC avec une ancienne version d'Excel et tout a fonctionné parfaitement, alors le problème ne vient pas du code , mais soit de la version d'excel utilisé ou un problème du tableur.

Je n'arrive pas à lancer la macro par contre (je ne connais pas cette fonction privateSub), comment as-tu fais ?

c'est une autre façons de suivre le changement des valeurs sur les cellules ; et comme j ai dit le problème ne vient pas du ton code !

Ok, c'est bien ce qu'il me semblait. Entre temps j'ai de toute façon pu essayer mon rapport sur plusieurs autres versions d'excel (2007, 2013 etc..) il fonctionne parfaitement (et fonctionnait sur 2019 avant la mise à jour).

Par curiosité j'ai également repise un rapport que j'avais réalisé la semaine dernière avant la mise à jour, j'ai relancé le calcul et le bug est apparu. Donc c'est clairement la MàJ qui engendre ce soucis.

Du coup je ne sais pas trop comment m'en sortir... Y a-t-il une solution ou suis-je condamner à faire cette fonction manuellement ? je ne sais pas, en annulant la MàJ ou en ouvrant le fichier sous une version antérieure d'excel ?

perso je travailles à l'aise avec la version 2007 :) , si tu n a pas besoin de MSJ tu peux l 'annuler si possible ; au moins pour l’instant :)

Très sincèrement j'ai plutôt l'habitude de désactiver les MàJ, j'e n'ai eu aucun problème pendant 7ans sur excel avec la 2010 mais là j'ai du changer de PC donc nouvelle version d'Office et je n'ai pas pensé de désactiver les MàJ automatiques... Première MàJ et ça bug !

Par contre je ne trouve pas la solution pour supprimer une MàJ dans Excel 2019, je ne suis pas certain que ce soit possible...

perso je ne sais pas :) , tu peux reposter un nouveau sujet si tu veux ! mais moi je n ai pas fasse a ce problème !

Alors je viens de trouver une solution en modifiant le code ! La partie problématique était :

.Range(Array("Resultat2")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = CoulFore
.BackColor.RGB = CoulBack
.TwoColorGradient msoGradientVertical, 1
End With

En faisant un copié collé de l'étiquette manuellement et en voulant changer la couleur de fond manuellement, en cliquant sur "dégradé" cela me la passait en bleu.

Du coup j'ai tenté d'inverser les ligne de code :

.Range(Array("Resultat2")).Select
With Selection.ShapeRange.Fill
.TwoColorGradient msoGradientVertical, 1
.ForeColor.RGB = CoulFore
.BackColor.RGB = CoulBack
End With

Cela introduit, si je ne me trompe pas, les couleur après le dégradé de couleur. Et oh miracle cela fonctionne, je ne comprend pas bien pourquoi mais bon...

Rechercher des sujets similaires à "bug execution macro couleur fond"