J'ai besoin de colorer une cellule à partir d'une fonction VBA.
Je m'explique :
Il s'agit d'un tableau de calcul. Selon le cas, l'utilsateur n'a à remplir que certaines colonnes. Dans certains cas, une colonne doit être remplie mais pas dans d'autre (par exemple, si le temps est à la pluie, il me faut la mesure des précipitations).
Je veux pouvoir colorer les colonnes necessaires et non remplie dans un cas spécifique. les contraintes sont trops complexes pour un formating automatique, aussi je voudrais pouvoir faire le coloriage depuis ma fonction.
apparement le colorindex est inopérant dans le cadre d'une fonction. Malgré mes recherches, je n'ai pas trouvé de solution
Je ne sais pas si tu peux inclure le code dans ta fonction, mais tu peux peut-être, dans ta fonction, appeler une procédure.
Sinon, tu peux gérer cela indépendamment de ta fonction.
pour résumer mon objectif, je dois calculer un résultat numérique en fonction d'un grand nombre de paramètres. Chaque ligne correspond à un cas à calculer. J'ai donc une colonne résultat du genre =calculeResult()
La fonction calculeResult vas chercher sur la même ligne les paramètres(A,B, C...). La logique est du genre :
si A>3 et B renseigné et positif, alors résultat= C/B
si A>3 et B non renseigné alors resultat=D
si A=2 et B non renseigné => ERREUR
je veux colorier en rouge la case 'cause' de l'erreur (ici B).
Je ne 'sais' donc s'il faut colorier B qu'au moment du calcul.
Les parametres étant assez nombreux, un formatage conditionnel est très compliqué. De plus, la fonction est en cours 'd'élaboration'. Je voudrais donc avoir la coloration dans la fonction pour garder une cohérence en cas d'évolution.
Si je change un seul parametre d'une seule ligne, je ne veux pas tout recalculer. Cela me semble interdire de faire réaliser le calcul par une macro de la feuille, non ?
Code:
Sub colorsub()
Range('B11').Interior.ColorIndex = 3
End Sub
permet de colorer une case. Par contre le même code dans ma fonction ne fait rien !
Code:
Call colorsub
ne donne pas non plus de résultat
je me sens perdu !
toute suggestion sera la bienvenue !
Si c'est seulement la cellule Bx qui peut être source d'erreur et uniquement lorsque vide et Ax=2, alors utilise la mise en forme conditionnelle.
Menu 'Format/Mise en forme conditionnelle ...'.
Dans la première fenêtre (à gauche) choisi 'La formule est' et dans la fenêtre de droite, inscrit '=SI(ET(A2=2);B2='')'. Les données étant sur la ligne 2. Puis clique le bouton 'Format ..' et va chercher le motif rouge.
Enfin, valide.
Cette mise en forme conditionnelle peut être recopiée en recopiant le format.