Mise à jour non dynamique du résultat d'une macro

Bonjour à tous,

Je suis tout nouveau sur le forum (et dans le monde excel d'ailleurs). J'ai un fichier qui me permet de gérer les formations de tous les agents de mon service. Pour planifier les formations de l'année prochaine, j'ai des colonnes pour chaque stage et pour chaque agent concerné, la cellule est rose. J'ai trouvé une macro VB qui me permet de renvoyer le code couleur d'une cellule

La voici

Function getRGB1(FCell As Range) As String
'UpdatebyExtendoffice20170714
Dim xColor As String
xColor = CStr(FCell.Interior.Color)
xColor = Right("000000" & Hex(xColor), 6)
getRGB1 = Right(xColor, 2) & Mid(xColor, 3, 2) & Left(xColor, 2)
End Function

Cela fonctionne bien et donc je peux ainsi compter toutes les cellules roses d'un stage donné. Cependant, si je supprime une cellule rose, cela ne se répercute pas sur le calcul de façon dynamique en temps réel et je ne comprends pas pourquoi.

Voici un extrait de mon fichier. J'applique la fonction getrgb1 dans la cellule CY76 et cela m'inscrit "1" car CX76 est rose. Mais si je repasse la cellule CX76 en blanc par exemple, le "1" reste dans CY76.

capture

Merci de votre aide. J'espère avoir été clair

Bonjour

Utiliser la couleur comme information n'est pas une bonne pratique : elle doit mettre en évidence et non remplacer l'information

La changement de couleur (ou de tout autre format) n'est pas considéré comme un événement important pour Excel qui ne régit donc pas par un calcul.

Il y a dans le pack https://www.excel-pratique.com/fr/fonctions-complementaires des possibilités de gérer les couleurs

Bonjour Alain41500,

colorer votre cellule ne change pas le contenu de la cellule et ne cause pas excel à récalculer tout ce qui concerne cette cellule, il faut ajouter application.volatile à la macro et il faut récalculer (si nécessaire taper F9)

Function getRGB1(FCell As Range) As String
     'UpdatebyExtendoffice20170714
     Dim xColor As String
     Application.Volatile    '>>> Nouveau
     xColor = CStr(FCell.Interior.Color)
     xColor = Right("000000" & Hex(xColor), 6)
     getRGB1 = Right(xColor, 2) & Mid(xColor, 3, 2) & Left(xColor, 2)
End Function
Rechercher des sujets similaires à "mise jour dynamique resultat macro"