colorer une cellule à partir d'une fonction

  • Initiateur de la discussion tniu
  • Date de début
T

tniu

Guest
Bonjour à tous

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 :(

Merci de votre aide !

Tniu
 

Abel

XLDnaute Accro
Bonjour tniu, JCA06, mutzik,

En attendant de plus amples informations test la pièce jointe et dis nous si cela te convient.

En espérant que cela te dépanne.

Abel. [file name=Exemple_tniu.zip size=8211]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_tniu.zip[/file]
 

Pièces jointes

  • Exemple_tniu.zip
    8 KB · Affichages: 295
T

Tniu

Guest
Bonjour et merci à tous,

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 ! :eek:
toute suggestion sera la bienvenue !

Merci de votre aide !


Tniu, reconnaissant
 

Abel

XLDnaute Accro
Bonjour Tniu, le fil,

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.


Abel.
 

Discussions similaires

Statistiques des forums

Discussions
313 061
Messages
2 094 928
Membres
106 129
dernier inscrit
Kami_54