Insérer des espaces en VBA

Bonjour à tous,

Dans une cellule, j'ai une chaine de caractères à afficher selon le format suivant :

EG-xx (LII-yy) [zzz]

Elle comprend au maximum 20 caractères.

Mais parfois, on peut trouver des chaines de moins de 20 car.

Comment en VBA, peut-on insérer des espaces pour rester toujours sur un affichage de 20 caractères (Affichage justifié)?

Merci d'avance.

Bonjour

Associes cette macro à un bouton

Option Explicit

Sub Espaces()
Dim J As Long

  For J = 2 To Range("A" & Rows.Count).End(xlUp).Row
    Range("A" & J) = Left(Range("A" & J) & Space(20), 20)
  Next J

End Sub

Salut apt,

[EDIT : bonjour Banzai]

vois si ce petit bout de code te convient

Sub test()
Dim aa As String, bb As Byte, derLig As Long
derLig = Range("A" & Rows.Count).End(xlUp).Row
For a = 2 To derLig
    aa = Cells(a, 1)
    bb = Len(aa)
    If bb < 20 Then
        For Z = 1 To 20 - bb
            aa = aa & " "
        Next Z
        Cells(a, 2) = aa
    End If
Next a
End Sub

Bonjour Banzai64, Game Over,

J'ai essayé les deux codes, mais ça ne donne rien encore !

bonjour

Mais si! Tu peux contrôler avec en B2 le Code de Banzai

=NBCAR(A2) qui donne bien 20

Cordialement

[EDIT:bonjour Amadeus, pas vu ton intervention]

pourtant, si tu utilises la formule NBCAR, tu verras que les macros ajoutent le nombre d'espaces requis pour avoir une longeur de chaine de 20 caractères.

Bonjour Amadeus, Game Over,

NBCAR() ajoute bien des espaces, mais à la fin de la cellule. Or j’aimerais que les espaces ajoutés soient mises entre EG-xx et (LII yyy) et [zzz].

c-à-d aligner verticalement sur toute la colonne A, les trois parties de chaque cellule, on jouant avec les espaces pour obtenir le résultat voulu.

Donc, pour obtenir un affichage convenable, le maximum de 20 caractères ne sera pas respecter (la largeur d'un espace n'est toujours la même avec celle d'un chiffre ou d'une lettre et cella varie d'une police à l'autre)

Bonsoir,

Une approche ?

Je ne vois pas de solution à ton problème : tu fais ton alignement de visu; en cherchant à aligner la première parenthèse, on se rend compte que, selon la taille des caractères qui précèdent la parenthèse, il faudra plus ou moins d'espaces pour faire l'alignement.

1111( ne s'aligne pas avec AAAA( donc, personnellement, je ne vois pas comment un algorithme pourrait faire le travail que tu demandes.

Bonjour

Si ce n'est qu'une question de présentation, tu peux faire comme cela

Cordialement

Bonsoir,

Or j’aimerais que les espaces ajoutés soient mises entre EG-xx et (LII yyy) et [zzz].

Tu as 3 éléments. Reprend la proposition de banzai sur chacun avec pour longueur 7, 7 et 6 par exemple et concatène l'ensemble qui te fera 20.

Utiliser 3 cellules n'est pas plus bête non plus.

eric

Bonjour à tous,

Une des solutions pour avoir un alignement vertical, est d'utiliser une police de "chasse fixe" (largeur des caractères égale).

J'ai essayé avec "Consolas" et ça donne le résultat souhaité.

Un exemple en pièce jointe.

Merci à tous.

Rechercher des sujets similaires à "inserer espaces vba"