[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.
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
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,