[VBA] MFC Format Nombre

Bonjour je souhaite mettre une mise en forme conditionnelle par le VBA. J'y arrive pour toutes mes MFC sauf pour celle imposant un format nombre.

L'enregistreur de macro me donne cela :

With Selection
    .NumberFormat = "#,##0.00 $;[Red]-#,##0.00 $;-"
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(A1=""USD"";VRAI;FAUX)"
    .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    ExecuteExcel4Macro "(2,1,""# ##0.00 €;[Rouge]-# ##0.00 €;-"")"
    .FormatConditions(1).StopIfTrue = False
End With

Ne comprenant pas le "ExecuteExcel4Macro" et comme il ne se trouvait pas sur les autres formats conditionnels j'ai mis :

Set temp = Union(ws.Range("Tableau_1[Cout]"), ws.Range("Tableau_2[Cout]"), ws.Range("Tableau_3[Cout]"))
With temp.FormatConditions.Add(Type:=xlExpression, Formula1:="=SI($F1=""USD"";VRAI;FAUX)")
     .NumberFormat = "[$$-en-US]# ##0.00_ ;[Red]-[$$-en-US]# ##0.00 ;-"
     .StopIfTrue = False
End With

Cela ne marche pas. Je voudrais donc savoir comment je pourrais résoudre mon problème ? Si quelqu'un a déjà eu le problème.

Pour ceux qui veulent savoir pourquoi je le fais par le VBA au lieu de faire manuellement je vais anticiper : J'ai un fichier avec des tableaux et MFC mais lorsque les utilisateurs suppriment, ajoutent des lignes au bout d'un moment dans un même tableau j'obtiens une multitudes de fois la même MFC appliqué sur une seule case, etc... Mon VBA permet donc juste de nettoyer l'ensemble des MFC pour mettre propre les MFC 1 MFC par règle.

2test.xlsm (25.46 Ko)

Bonjour,

Ca ne marche pas signifie quoi ?

Ce code fonctionne, mais tout dépend du résultat attendu, couleur, police, etc ...

Sub TEST()
With Selection
    .NumberFormat = "#,##0.00 $;[Red]-#,##0.00 $;-"
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(A1=""USD"";VRAI;FAUX)"
    .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    .FormatConditions(1).NumberFormat = "[$$-en-US]# ##0,00_ ;[Rouge]-[$$-en-US]# ##0,00\ ;-"
    .FormatConditions(1).StopIfTrue = False
End With
End Sub

Cdlt,

Ok merci mon problème était dans le [Red] du NumberFormat.

Quand on modifie un NumberFormat il faut mettre [Red] mais si c'est dans une mise en forme conditionnelle dans ce cas il faut mettre [Rouge].

Du coup mon code

With ThisWorkbook.Worksheets("Sheet1").Range("Tableau_1[Cout]")
    With .FormatConditions.Add(Type:=xlExpression, Formula1:="=SI($A4=""USD"";VRAI;FAUX)")
        .NumberFormat = "[$$-en-US]# ##0,00_ ;[Rouge]-[$$-en-US]# ##0,00\ ;-"
        .StopIfTrue = False
    End With
End With

Bref merci, petite erreur de que je ne voyais pas.

Bonjour,

J'avoue avoir un peu de mal car j'ai testé, je n'ai pas obtenu d'erreur, mais pour autant je n'avais pas de rouge dans ma MEFC ... Du coup c'est pour celà que j'ai demandé le résultat attendu.

De plus, il me semble qu'on ne peux utiliser l'argument NumberFormat que si le format personnalisé existe (je me trompe peut être sur ce point).

Cdlt,

Rechercher des sujets similaires à "vba mfc format nombre"