Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Je suis à la recherche d'une FONCTION qui permettrait de délimiter les milliers. Je m'explique :
1000 ---> 1.000
10000 ---> 10.000
100000 ---> 100.000
1000000 ---> 1.000.000
etc.
A ma connaissance ce n'est faisable qu'en personnalisant le symbole de groupement des chiffres sous les Options régionales et linguistiques du menu Démarrer - Panneau de configuration.
Je savais qu'il existe plusieurs moyens pour délimiter les milliers, y compris via "format personnalisé" (#.#00).
L'avantage de vos solutions est que le résultat est TOUJOURS un chiffre.
Ce que je voudrais, c'est en fait récupérer une chaîne de caractères, que je pourrai mettre en forme par la suite. Le résultat ne sera en aucune façon utilisé dans des calculs.
Supposons que cette fonction s'intitule "DelMil" :
J'ai, dans la cellule A1 un résultat NUMÉRIQUE : 200000
Dans la cellule A2 j'écris : = DelMil(A1), j'obtiendrai alors la CHAÎNE : 200.000
Buenas notches Doctor, salut Hoerwind et Jean-Bernard ,
Vois la pièce jointe. Mais à priori, je n'ai pas pu dépasser les 15 décimales (j'espère que ça te suffira ).
Asta la vista Ajout : bonsoir Tibo
La solution de JNP fait parfaitement l'affaire en dépit de sa "limitation" que je ne franchirai jamais dans mes calculs.
Certainement en faisant une boucle on pourrait aller jusqu'à l'infini... Le problème n'est pas dénué d'intérêt, du moins pour l'esprit.
Function Milliers(Nombre As Double) As String
Dim i As Integer
Application.Volatile
Milliers = Int(CDec(Nombre)) 'partie entière
For i = Len(Milliers) - 2 To 2 [COLOR="Red"]- (Nombre < 0)[/COLOR] Step -3
Milliers = Application.Replace(Milliers, i, 0, ".")
Next
End Function
Edit : ajouté le code en rouge pour traiter correctement les nombres négatifs.
Bonjour le fil ,
Merci, Job75, tu m'as obligé a une reflexion très positive . Je n'avais jamais utilisé un Replace pour insérer des valeurs (généralement, je passe par une concaténation de la chaine de départ), et j'ai cherché un moment pour comprendre que tu utilisais le Replace des WorksheetFunction, et non le Replace VBA ... Je me le garde sous le coude, c'est plutôt sympa .
Au début, j'étais parti sur la solution de Tibo, mais via VBA, et ça ne marchait pas . D'où ma surprise que par formule, celle de Tibo fonctionne parfaitement ...
Un peu tétu (comme d'autres sur ce forum ), j'ai repris le système, et finalement j'ai trouvé où étaient les problèmes :
1) La fonction Format n'attends pas "# ##0" en VBA, mais "#,##0"...
2) Elle ne renvoie pas des blancs normaux (Chr(32)), mais des blancs insécables (Chr(160))...
D'où une traduction de la formule de Tibo, mais en fonction VBA, et sans la limite des 15
Code:
Function Milliers(Nombre As Double) As String
Application.Volatile
Milliers = Replace(Format(Nombre, "#,##0"), Chr(160), ".")
End Function
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.