Chiffre String ajouter des espaces pour lisibilité

Bonjour,

Je calcule présentement une somme en VBA puis la transfère en String pour l'afficher dans un shape.

Tout fonctionne, par contre je me demande comment on pourrait ajouter des espaces dans le string afin que le chiffre obtenu soit plus facile à lire:

Par exemple:

Le string orginal

123456789

Donnerait cela:

123 456 789

Le string augmente et diminue de façon irégulière et le nombre de caractère va définitivement changer.

Voici le code:

'Remove from Quantity 1
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = ActiveCell - 1

    'Copy Rupies obtain in variable (To add to the Player Rupies amount)
    RupiesObtain = ActiveCell.Offset(0, 1).Value

    'Add Rupies to the player
    With Sheets("Player Main")
    Dim RupiesAsString As String
    Dim RupiesAsNumber As Long

    'Convertir le string en chiffre
    RupiesAsString = .Shapes("Rupie Amount").TextFrame.Characters.Text
    RupiesAsNumber = Val(RupiesAsString) + RupiesObtain

    'Convertire la somme de rupie en String et updater la quantite de Rupie du joueur
    RupiesAsString = RupiesAsNumber
    .Shapes("Rupie Amount").TextFrame.Characters.Text = RupiesAsString + " Rupies"

    End With

La variable RupiesAsString contient le string en question (Juste des chiffres).

Je sais qu'il est possible d'ajouter un caractère à chaque x caractère, mais pour un chiffre je crois qu'il faut partir de la droite pour éviter un caractère seul à la fin.

Merci pour votre assistance, désolé si la question a déjà été posté ailleur (je ne l'ai pas vue null part).

Bonjour,

Un exemple à adapter à ton code :

Sub Test()

    Dim Chaine1 As String
    Dim Chaine2 As String
    Dim I As Integer

    Chaine1 = "12345678910111213141516"

    For I = 1 To Len(Chaine1) Step 3

        Chaine2 = Chaine2 & Mid(Chaine1, I, 3) & " "

    Next I

    MsgBox Chaine2

End Sub

Merci pour votre suggestion ^_^

Le code est presque parfait, par contre (dans votre exemple) on obtient 2 caractères seuls à la fin.

Serait-il possible d'obtenir ceci à la place? :

12 345 678 910 111 213 141 516

au lieu de:

123 456 789 101 112 131 415 16

Bonjour

peux être un truc comme ca

Sub TextVar()

Chaine1 = "12345678910111213141516"

MsgBox Format(Chaine1, "### ### ### ### ### ### ### ### ### ### ##0")

Range("A1").Value = Format(Chaine1, "### ### ### ### ### ### ### ### ### ### ##0")

End Sub

A+

Maurice

Salut Quickskip, Theze,

    Dim Chaine1 As String
    Dim Chaine2 As String
    Dim I As Integer

    Chaine1 = "12345678910111213141516"
    Chaine2 = IIf(Len(Chaine1) Mod 3 = 0, "", Left(Chaine1, Len(Chaine1) Mod 3))
    For x = (Len(Chaine1) Mod 3) + 1 To Len(Chaine1) - 2 Step 3
        Chaine2 = Chaine2 & " " & Mid(Chaine1, x, 3)
    Next
    MsgBox Chaine2

A+

La réponse de archer fait exactement ce que je cherche, merci beaucoup!

Il ne me reste plus qu'a aller intégrer celui-ci dans mon code. (Je cocherai le post comme solutionné ensuite)

Je serai absent jusqu'à ce soir, je testerai le code de curulis57 à mon retour ^_^

Mmmmmmmhh?!?!

Jusqu'à un certain point, oui...

Tu me diras qu'on utilise rarement des nombres aussi longs!

A+

Il ne faut pas qu'elle dépasse 29 caractères !

J'ai testé le code de curulis57 et j'arrive aussi au résultat recherché.

Selon mes testes, la réponse de archer semble se différencier par le fait qu'il y a une limite de caractère que la chaine peut avoir,

comme mentionné plus haut.

Au final je vais opter pour le code de curulis57 car la limite, s'il y en a une, est plus flexible.

Dans tous les cas le chiffre testé est en effet peu probable d'être utilisé (Je vait peut-être imposer un maximum )

J'ai fusionner le code et tout semble fonctionner

Merci a tous pour votre aide!

Rechercher des sujets similaires à "chiffre string ajouter espaces lisibilite"