[VBA] Xls 2003 à 2000, pb Mise en Forme

Maivas

XLDnaute Junior
Bonjour,

J’ai eu la bonne idée d’écrire mes macros sous Excel 2003 mais au final ces macros doivent pouvoir fonctionner sous Excel 2000.
Cela pose un certain nombre de problème dont un que je n’arrive pas à résoudre.
Je fais une mise en forme conditionnelle :
Code:
    Range("B4:AG300,AI4:AN300").Select
    Range("AI4").Activate
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=SI($B4<>"""",ET(($D4<>$D3),MOD(LIGNE(),2)=1))"
    Selection.FormatConditions(1).Interior.ColorIndex = 15
    With Selection.FormatConditions(1).Borders(xlTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=SI($B4<>"""",MOD(LIGNE(),2)=1)"
    Selection.FormatConditions(2).Interior.ColorIndex = 15
    
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ET($D4<>$D3)"
    With Selection.FormatConditions(3).Borders(xlTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Range("B4").Select

Mais celle ci n’apparaît pas dans la feuille, pour qu’elle fonctionne il faut que j’aille dans la barre des menus puis Format > Mise en Forme Conditionnelle et que je clique sur OK et cette « simple » manip’ fait fonctionner la mise en forme.

Comment puis je faire pour la feuille prenne directement en compte cette Mise en Forme Conditionnelle ?

Merci

Maivas
 
G

Guest

Guest
Re : [VBA] Xls 2003 à 2000, pb Mise en Forme

Bonjour Maivas,

Chez moi (excel 2002) cela fonctionne uniquement si
1:
Code:
Formula1:="=SI($B4<>"""";ET(($D4<>$D3);MOD(LIGNE();2)=1))"

avec des points virgules en lieu et place des virgules.

2:
En rajoutant un
Activesheet.Calculate en fin de macro.
(ActiveSheet étant la feuille d'où je lance la macro).

A bientôt
 

Maivas

XLDnaute Junior
Re : [VBA] Xls 2003 à 2000, pb Mise en Forme

Bonjour Hasco,

A les points virgules;;;; et bien c'est une des particularités d'Excel 2000, moi aussi j'avais mis des ; mais Excel 2000 il veut des , alors...

Activesheet.Calculate n'a malheureusment aucune action sur la mise en forme conditionelle sous Excel 2000

Une autre idée??? (Je sais je vous fais revenir un peu en arrière en parlant d'Excel 2000)

Maivas
 

Maivas

XLDnaute Junior
Re : [VBA] Xls 2003 à 2000, pb Mise en Forme

C'est trop bizarre Excel 2000...

Si j'appelle ma macro avec un Call Module1.Macro dans Workbook_Open la forumule ne peut pas contenir de «;» autrement plantage
Code:
Formula1:="=SI($B4<>"""",ET(($D4<>$D3),MOD(LIGNE(),2)=1))"

Par contre si j'enlève le Call et appel directement la macro avec Alt + F8, cela support les «;» et la mise en forme fonctionne

Code:
Formula1:="=SI($B4<>"""";ET(($D4<>$D3);MOD(LIGNE();2)=1))"

Je résume :
Dans ma version actuelle, j’appelle ma macro de mise en forme dans Workbook_Open il n’y a aucun plantage mais la mise en forme ne fonctionne pas.
La formule conditionnelle passée dans la macro est avec des «,» et non des «;» par contre quand j’ouvre la boite de dialogue Format Conditionnel je constate que les «,» on été remplacés par des «;» et si je clique sur OK la mise en forme apparaît

Dans mon essai, j’appelle directement ma macro avec Alt + F8, il n’y a aucun plantage et la mise en forme fonctionne.
La formule conditionnelle passée dans la macro est avec des «;» par contre c’est du coup pas automatisé à l’ouverture du classeur.

Une petite solution à me proposée? Pleeeeeeeeeaaaaaaaaasssssssse

Maivas
 
G

Guest

Guest
Re : [VBA] Xls 2003 à 2000, pb Mise en Forme

Re,

Il doit y avoir des problèmes de conversion de l'anglais au français.

essaies:
Code:
 Formula1:="=IF($B4<>"""",AND(($D4<>$D3),MOD(ROW(),2)=1))"

sinon je ne vois pas
A bientôt