[vba excel] Mise en forme

cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 24 mai 2008 à 14:58
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 26 mai 2008 à 11:33
Bonjour,

Dans mon code j'impose une mise en forme conditionnelle du genre:
Si valeur de la cellule est différente de valeur de la cellule colonne D alors police en gras et fond de la cellule ne jaune.

Voici mon code:
    Range("I19").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
        Formula1:="=D19"
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
    End With
    Selection.FormatConditions(1).Interior.ColorIndex = 36

Le problème c'est qu'une fois la macro lancée si je vais dans Format> mise en forme conditionnelle la formule est ="D19".
Donc si je tire la mise en forme vers les cellule du bas la référence reste D19 or je voudrais incrémenter.

Comment faire?
Merci de votre aide,

Liro

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 mai 2008 à 17:38
Je n'ai pas bien compris. Comment applique-tu ta mise en forme ?

Le fait tu à travers un code VBA, ou le fais-tu manuellement sur ta cellule par les menus et fonctions classique d'Excel.

Si tu le fais de manière classique, il faut que tu fasse attention à ce qu'Excel ne t'enregistre pas une référence de cellule absolue dans la formule comm il le fait par défaut. Si dans la formule Excel te met $D$19, lorsque tu fera glisser ta formule, cette référence ne sera pas changée. Par contre si tu modifie pour que ce soitD19, lorsque tu glissera ta formule, cette référence sera automatiquement incrémentée.

Par contre, si tu le fais par code, ça va etre à toi d'incrémenter manuellement la cellule dans ta formule.

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 mai 2008 à 19:22
Salut,

attention, une mise en forme conditionnelle n'est pas une fonction et ne peut donc pas s'incrémenter.
dans tes cellules, il y a des valeurs, pas de =machin(bidule;trucc), mais du texte ou un nombre.

Donc comme le dit Casy,
si tu le fais par code, ça va etre à toi d'incrémenter manuellement la cellule dans ta formule
(par formule il faut comprendre Mise en forme conditionnelle)

Par contre, en mode NON code, en le faisant manuellement pour un fichier du boulot, il me semble avoir vu que l'on était limité à 3 mises en forme conditionnelles, donc je ne sais pas comment va réagir le code si tu en fais plus

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 mai 2008 à 20:32
"...une mise en forme conditionnelle n'est pas une fonction et ne peut donc pas s'incrémenter...."
C'est pourtant ce qu'elle fait correctement dans les conditions que j'ai indiquer quand on clique sur le petit carré dans l'angle de la cellule et que l'on glisse la slélection sur d'autres cellules comme lors de la propagation d'une formule ou d'une valeur.
Bien sur que ce n'est pas une formule, mais il ya bien un "= machin". Il apparait dans la condition de test de la mise en forme (zone de droite dans l'assistant d'Excel2003).

" ...limité à 3 mises en forme conditionnelles... "
C'est par cellule ou sur une feuille ????
Par cellule je pense. Mais ici, si j'ai bien compris le code de Liro, il n'aura qu'une mise en forme par cellule, par contre il souhaite propager cette mise en forme sur un ceratin nombres de cellules.

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011
24 mai 2008 à 23:03
J'ai l'impression que nous partons sur une mauvaise piste...

J'ajoute via mon code une mise en forme conditionnelle (donc en vba).
Bienque en vba je mette une référence relative du type "=D19" et non pas "=$D$19" lorsque je recopie la mise en forme de cette cellule la valeur enregistrée est et reste "=$D$19".

C'est très bizard, je suis sous excel 2000 (si ça peut avoir une influence...).

Liro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011
25 mai 2008 à 01:16
Erratum c'est ="D19" qui apparaît au lieu de =D19 et non pas avec les $

Il semblerait que ce problème n'apparraisse plus sous Excel 2003, possible?
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 mai 2008 à 11:33
J'ai essayé ton bout de code et ça fonctionne bien sous Excel 2000

La formule de la mise en forme n'est pas ="D19", mais bien =D19, sans aucun guillemets... (?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous