Modifier la mise en forme via une fonction

Bonjour,

je commence mon apprentissage en VBA et je me heurte à un problème depuis quelques jours.

Je souhaite changer dynamiquement la mise en forme d'une cellule selon le contenu d'une autre.

J'ai commencé une macro qui inscrit une formule dans la cellule (my_lign + 21, my_coll).

Cette formule vérifie le contenu de la cellule (my_lign + 4, my_coll), si ce contenu est égal à une valeur elle lance la fonction hachure() qui hachure la cellule (my_lign + 21, my_coll), sinon elle lance la fonction nettoie() qui vide cette même cellule.

Soit la ligne:

Cells(my_lign + 21, my_coll).Formula = "=SI(" & Cells(my_lign + 4, my_coll).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "=""SMS"",hachure(),nettoie())"

J'accède effectivement bien à mes fonctions, et si je change plusieurs fois le contenu de la cellule my_lign+4, les fonctions hachure() et nettoie() sont bien lancés plusieurs fois. Le problème c'est qu'à l'intérieur de mes fonctions je ne peux quasi rien faire, je peux juste lancer une MsgBox et changer la valeur de ma cellule en faisant par exemple nettoie="tralala". Impossible de faire par exemple Cells(34,53) = 45 ou encore hachure.Interior.Pattern = xlUp

Public Function hachure()

hachure = "" ' vide bien la case

MsgBox "hachure" ' affiche bien une box avec le message

hachure.Interior.Pattern = xlUp 'ne fait rien

MsgBox "fin" ' n'apparait même pas

End Function

Bonjour et bienvenu,

Merci de joindre ton fichier avec la macro.

Bonjour,

voila le fichier contenant la macro qui me pose probleme.

9test.xlsm (15.64 Ko)

Bonsoir,

Je pense que la logique est un peu compliquée ...

Une macro qui va écrire une fonction qui elle-même appelle une autre macro, il y a tout pour se perdre.

Solution 1 :

- tout faire en vba, sur l'événement "Private Sub Worksheet_Change(ByVal Target As Range)"

Solution 2 :

- avec une simple mise en forme conditionnelle

Un exemple en PJ de la solution 2 : mise en forme conditionnelle en D5, qui hachure si la valeur en A5 est "SMS".

A tester

Bonne soirée

Bouben

Ha merci pour Worksheet_Change ca fait exactement ce que je veux !

Rechercher des sujets similaires à "modifier mise forme via fonction"