Séparateur ultime 1000 utilisant VBA
J'ai essayé d'obtenir une solution VBA pour séparateur 1000 car dans mon cas, il n'est pas possible d'utiliser la formule et devrait être fait avec un code personnalisé. La solution actuelle est tirée du format numérique de réponse avec séparateur de milliers et décimal si nécessaire
Voici le code:
Function CustomFormat(InputValue As Double) As String
CustomFormat = Format(InputValue, "# ###")
If (Right(CustomFormat, 1) = ".") Then
CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
End If
End Function
Cela fonctionne pour des nombres comme 1000, mais cela ne fonctionne pas pour 1000000. De plus, 1000000000 ne fonctionnera pas. Je travaille actuellement sur une solution, mais si quelqu'un a quelque chose à partager, ce serait apprécié.
En cas d'utilisation de la solution d'origine:
Function CustomFormat(InputValue As Double) As String
CustomFormat = Format(InputValue, "#,###.##")
If (Right(CustomFormat, 1) = ".") Then
CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
End If
End Function
Réponses
Je pense que vba a besoin du séparateur de milliers défini dans vos paramètres régionaux. Comme il s'agit d'une virgule dans votre cas, vous pouvez faire quelque chose comme ça
Function CustomFormat(InputValue As Double) As String
CustomFormat = Format(InputValue, "#,###")
If (Right(CustomFormat, 1) = ".") Then
CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
End If
CustomFormat = Replace(CustomFormat, ",", " ")
End Function
Une autre approche consiste à lire le séparateur du registre. Cela devrait fonctionner dans différents contextes régionaux.
Function CustomFormat(InputValue As Double) As String
Dim sThousandsSep As String
Dim sDecimalSep As String
Dim sFormat As String
sThousandsSep = Application.International(xlThousandsSeparator)
sDecimalSep = Application.International(xlDecimalSeparator)
' Up to 6 decimal places
sFormat = "#" & sThousandsSep & "###" & sDecimalSep & "######"
CustomFormat = Format(InputValue, sFormat)
If (Right$(CustomFormat, 1) = sDecimalSep) Then CustomFormat = Left$(CustomFormat, Len(CustomFormat) - 1)
End If
' Replace the thousands separator with a space
' or any other character
CustomFormat = Replace(CustomFormat, sThousandsSep, " ")
End Function
Modifier Fonction Application.International
modifiée à utiliser comme suggéré par @RonRosenfeld.
Vous devez étendre votre format de nombre pour inclure les plus grands nombres.
### ### ## 0 ","