VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule générée

fiorenzo

XLDnaute Nouveau
Bonjour à tous,

Je sollicite l'aide collective pour un problème en VBA que je n'arrive à résoudre.

J'ai développé une macro qui écrit des données dans plusieurs onglets, et qui procède à des mises en forme conditionnelles pour certaines cellules. Ces cellules doivent prendre le formatage (couleur) approprié en fonction de la valeur de la cellule :
- 0.3 > Valeur : Rouge
- 0.3<Valeur<0.4 : Jaune
- Valeur>0.4 : Vert

Jusque là, rien de très complexe.

J'ai donc une fonction qui permet d'effectuer la mise en forme conditionnelle, prenant en paramètre le Range de la cellule cible. Cette fonction est appelée lors de l'exécution de la macro, et fonctionne parfaitement, en tout cas en apparence.

En effet, à l'issue de l'exécution de la macro, plusieurs cellules auront la mise en forme appliquée, ainsi qu'une valeur générée. La mise en forme pour la valeur générée est correcte. MAIS, si l'on modifie la valeur de la cellule, la mise en forme ne s'ajuste plus selon les règles qu'elle est censée suivre. Décrit comme cela, cela ressemble à un problème dans les règles générées. Pourtant, si je contrôle les règles manuellement via l'interface graphique Excel pour chaque cellule cible, elles sont systématiquement correctes.

Encore plus fort, si j'édite (via l'interface graphique) une de ces règles générée automatiquement par la macro, sans la modifier, et juste en appuyant sur OK. Cette fois, elle va s'appliquer de façon nominale. Comme si il y avait un problème de "rafraîchissement"...


J'ai donc tenté d'isoler uniquement la fonction liée à la génération de la mise en forme conditionnelle dans un fichier test (qui est en pièce jointe). Mais, lorsque j'exécute ce fichier test, tout marche de façon nominale, pas de problème de "rafraîchissement" de mes cellules cibles. Pourtant tout est identique à ce qui se passe lors de l'exécution de ma macro. Celle-ci ne fait que traiter beaucoup plus de données, dans plusieurs onglets, etc.

Je suis certain qu'il n'y a pas d'erreur de ma part sur la référence des cellules cibles, d'autant plus les règles leurs ont bien été affectées.

A ce stade, je n'arrive pas à comprendre quelle différence il peut y avoir entre la macro et ce fichier d'exemple, pour que l'un fonctionne et l'autre partiellement.


Merci par avance pour toute lumière sur ce problème assez déroutant.

Salutations.

Florent
 

Pièces jointes

  • Exemple.xlsm
    19.1 KB · Affichages: 109
  • Exemple.xlsm
    19.1 KB · Affichages: 117
  • Exemple.xlsm
    19.1 KB · Affichages: 113
Dernière édition:

JNP

XLDnaute Barbatruc
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

Bonjour Fiorenzo et bienvenue :),
Comment veux-tu qu'on t'éclaire si tu nous fourni le fichier qui fonctionne au lieu de celui qui ne fonctionne pas :rolleyes:...
Tout ce que je peux dire, c'est confirmer que celui là marche, mais ça ne nous avance pas à grand chose :eek:...
Bonne soirée :cool:
 

fiorenzo

XLDnaute Nouveau
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

Bonjour JNP,

Merci de ta réponse.

Tu as évidemment raison, mais le fichier macro en question est d'abord confidentiel, et de surcroît assez complexe (2 userforms, 6 modules, 38 classes), ce qui ne faciliterai pas la compréhension de ce problème d'affichage "mineur".

Je tiens à préciser qu'il s'agit d'une macro que j'ai développée à l'origine sous Office 2011 MAC, et que je teste sous Office 2010 WINDOWS. Il est intéressant de préciser que la version Mac ne présente pas ce "bug", ce qui est d'autant plus frustrant pour moi.

D'ailleurs, les seuls problèmes de compatibilité que j'ai rencontré d'une plateforme à l'autre sont d'ordre visuels sur les UserForms. La macro Windows fonctionne donc à l'identique de celle pour Mac, sauf pour ce problème précis.


Pour essayer d'expliquer grossièrement ce que fait cette macro :

- l'utilisateur sélectionne un certain nombre de produits dans un UserForm.
- La selection de produits est sauvegardée dans un onglet
- 6 onglets sont ensuites générés automatiquement à partir des données sélectionnées par l'utilisateur

Lors de la génération de ces onglets, la macro écrit séquentiellement dans des cellules, applique des formules à certaines cellules, et applique des mise en formes conditionnelles, en faisant appel à la fameuse fonction.

C'est à peu près tout. Le problème est celui qui est décrit dans mon premier message.

Il est possible que je n'ai pas compris certaines subtilités de l'automatisation pour la mise en forme conditionnelle de cellule.

En espérant que cela aide à la compréhension du contexte. Merci pour toute aide.

Florent
 

fiorenzo

XLDnaute Nouveau
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

Voici le même fichier, avec le module qui traite les fonctions génériques de traitement de cellules: ExcelLibrary.bas

Je pense que le reste de la macro n'apporte pas de valeur ajoutée sur le problème. L'appel à la fonction est fait de la manière suivante :

Call SetCellConditionalFormat(ws.Cells(param_iRowIndex, param_iColumnIndex), "0,335", "0,395", Red, Yellow, Green)
ws est un objet de type Worksheet qui a été affecté.

En espérant que ces éléments supplémentaires puissent aider à l'identification du problème.

Merci.

Florent
 

Pièces jointes

  • Exemple.xlsm
    36.7 KB · Affichages: 95
  • Exemple.xlsm
    36.7 KB · Affichages: 111
  • Exemple.xlsm
    36.7 KB · Affichages: 102

fiorenzo

XLDnaute Nouveau
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

J'avance dans l'identification du problème.

Lorsque j'applique la fonction de SetCellConditionalFormat sur un feuille "vierge", le comportement est normal.

Lorsque j'applique la fonction sur l'onglet déjà "pré-travaillé" pour les colonnes et les intitulés de tableaux, le comportement est anormal.

J'ai essayé la fonction "Effacer les règles de la feuille entière" pour éviter tout conflit de règles, mais çà ne résout pas le problème.

Je n'arrive pas à comprendre pourquoi...
 

JNP

XLDnaute Barbatruc
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

Re :),
Voici le même fichier, avec le module qui traite les fonctions génériques de traitement de cellules: ExcelLibrary.bas
Même combat que précédemment, il fonctionne :p...
Comment veus-tu qu'on t'aide à trouver la panne si tu nous donnes une voiture en état de marche :rolleyes:...
Tu peux très bien anonymiser les données, aussi bien en sélectionnant toutes tes cellules de calculs, en tapant = ALEA() et en validant avec Ctrl+Enter, mais sans le fichier fautif, je ne vois pas comment on pourra t'aider :confused:...
Bonne soirée :cool:
 

fiorenzo

XLDnaute Nouveau
Re : VBA EXCEL: PB de rafraichissement Mise en forme conditionnelle de cellule génér

Re,

Je viens de trouver une solution au problème, sans avoir compris réellement ce qui se passait...

J'ai créé une copie de l'onglet, supprimé l'ancien. Et tout marche normalement.... Je n'ai donc pas touché au code :)

Merci pour ton aide et bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 276
Messages
2 086 711
Membres
103 377
dernier inscrit
fredy45