Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fonction qui insère des points séparateurs de milliers dans une chaîne de caractères

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai une chaîne de caractères qui ne contient que des chiffres.
Pour des raisons techniques ce sera toujours une chaìne de caractères (sinon ça aurait été simple).
Je voudrais, via une fonction, insérer dans cette chaîne des points séparateurs de milliers.
Ex : 100 --> 100
1589 --> 1.589
10000000000 --> 10.000.000.000

Merci d'avance pour tout coup de main.
 
Dernière édition:
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Bonsour®

heu ... ??? limité à 15 chiffres significatifs et sans gestion d'erreur


VB:
Function Sep_Mil(target As String) As String
Sep_Mil = Replace(Format(CDbl(target), "#,###"), Chr(160), ".")
End Function
 

Pièces jointes

  • Capture.JPG
    67.9 KB · Affichages: 43
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Bonsour®
autre proposition limitée à chaine de 60 caractères (sans contrôle que ce soit des chiffres)

VB:
Function Sep_Bis(target As String) As String
Dim x As Integer, tmp As String
tmp = Right(String(20, "   ") & target, 60)
x = 3
Sep_Bis = Right(tmp, x)
While Left(Right(tmp, x + 3), 3) <> "   "
Sep_Bis = Left(Right(tmp, x + 3), 3) & "." & Sep_Bis
x = x + 3
Wend
End Function
 

Pièces jointes

  • Capture.jpg
    47.5 KB · Affichages: 76
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Bonjour à tous,

Une autre proposition:
VB:
Function Millier$(x)
Dim T, s$, i&, k&
  Millier = Trim(x)
  If Len(Millier) > 3 Then
    s = StrReverse(Millier)
    k = Int(Len(s) / 3) - (Len(s) \ 3 <> 0): ReDim T(1 To k)
    For i = 1 To k: T(k + 1 - i) = StrReverse(Mid(s, 1 + 3 * (i - 1), 3)): Next i
    Millier = Join(T, ".")
    Millier = IIf(Left(Millier, 1) = ".", Mid(Millier, 2), Millier)
  End If
End Function
 

Pièces jointes

Dernière édition:
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Bonjour Magic_Doctor, Modeste geedee, mapomme, le forum,

Dans un module standard :

Code:
Function SepareMilliers$(t$, sep$)
Dim i%
For i = Len(t) - 3 To 1 Step -3
  t = Left(t, i) & sep & Mid(t, i + 1)
Next
SepareMilliers = t
End Function
C'est quand même plus simple en commençant par la droite...

A utiliser dans une cellule :

Code:
=SepareMilliers(A1;".")
Bonne journée.
 
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Re,

Si l'on tient absolument (?) à commencer par la gauche :

Code:
Function SepareMilliers$(t$, sep$)
Dim i&
i = (Len(t) - 1) Mod 3 + 1
While i < Len(t)
  t = Left(t, i) & sep & Mid(t, i + 1)
  i = i + 4
Wend
SepareMilliers = t
End Function
A+
 
Re : Fonction qui insère des points séparateurs de milliers dans une chaîne de caract

Re,

Pour finir, si le "nombre" peut comporter des décimales :

Code:
Function SepareMilliers$(t$, sep$)
Dim sepdec$, i%
sepdec = Mid(1 / 10, 2, 1) 'séparateur décimal de l'ordi
t = t & sepdec
For i = InStr(t, sepdec) - 4 To 1 Step -3
  t = Left(t, i) & sep & Mid(t, i + 1)
Next
SepareMilliers = Left(t, Len(t) - 1)
End Function
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…