MFC en fin de VBA sur case mouvante

Résolu
FGIO51 Messages postés 29 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 17 janvier 2014 - 17 janv. 2014 à 16:06
FGIO51 Messages postés 29 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 17 janvier 2014 - 17 janv. 2014 à 16:37
Bonjour,

J'ai un classeur dans lequel chaque onglet représente un mois, ma macro est lancée lorsque l'onglet de Janvier est complété par l'utilisateur pour lui fournir un nouvel onglet vierge pour Février.
Dans chaque onglet il y a un tableau récapitulatif qui reprend les données des mois passés et affiche le mois en cours.

Ma macro crée l'onglet et je veux que dans la case du cumul du mois en cours, il y ai trois MFC, la première met la case du cumul en rouge si Z24<Y24 ou en orange si Z24=Y24 ou vert si Z24>Y24.
Simple a faire à la main, mais je veux que ce soit la dernière tâche de la macro.

Or la case de cumul est AA24 puis AA25 et les cases de validation sont Z24 puis Z25... je ne veux pas copier la création des trois règles 12 fois, donc je cherche à réduire mon code pour qu'il change la formule en fonction de la case où il se trouve.

Voici le code que j'utilise dans une macro secondaire, pour créer la mise en forme:
    Cells(ligne, 27).Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="Z24 > Y24"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False


Comment rendre Z24 et Y24 variable?
J'ai testé Cells(ligne,colonne), en définissant ligne et colonne dans ma première macro, ou RC[-1], mais ils ne sont pas reconnus dans la fenêtre des MFC.

Merci d'avance de votre aide.

--

1 réponse

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2014 à 16:24
Bonjour,
Dans :
Formula1:="Z24 > Y24"
on voit bien que cet argument est représenté par une chaîne de caractères ("Z24 > Y24" n'est rien d'autre qu'une chaîne de caractères).
Et donc :
soit toto la ligne en cause :
toto= 24
Formula1:="Z" & toto & " > Y" & toto
vaudra
Formula1:="Z24 > Y24"
0
FGIO51 Messages postés 29 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 17 janvier 2014
17 janv. 2014 à 16:37
Merci,

Cela ce rapproche mais c'est pas tout à fait cela.
Dans la fenêtre MFC, la macro met ="Z25 > Y25" et non =Z25 > Y25
Donc j'ai bricolé et il manque un = que j'avais déjà oublié dans mon premier post.
alors la bonne formule cela fait Formula1:="=Z" & ligne & " > Y" & ligne

Bonne soirée et bon we.
0
Rejoignez-nous