Espace après nom

Bonjour tout le monde,

Voilà je recois des textes tous les jours qu'il faut que je mette en page. Il faut que cela ressemble à cela:

Alban, Philippe, Rémi, Anne

Le problème c'est que je recois des textes très longs et souvent, il y a des fautes de syntaxes:

Alban,Philippe , Rémi ,Anne

J'ai développé la macro suivante pour enlever l'espace avant les virgules mais je ne sais pas comment faire pour rajouter un espace après la virgule, si il n'y en a pas. J'ai bien commencé Avec la lettre A et cela marche, mais cela voudrait dire, qu'il faut que je passe toutes les lettres de l'alphabet en Revue.

Sub Espace_avant_virgule()

Dim i As Integer

Dim j As Integer

i = 1

j = 3

'i = Anzahl Zeilen

For i = 1 To 5

'j = Anzahl Spalten

For j = 3 To 3

If InStr(1, ActiveSheet.Cells(i, j), " , ", vbTextCompare) Then

'Korrigiere den String

ActiveSheet.Cells(i, j).Value = Replace(ActiveSheet.Cells(i, j), " , ", ", ", , , vbTextCompare)

Else

'keine Aktion notwendig

End If

If InStr(1, ActiveSheet.Cells(i, j), " ,", vbTextCompare) Then

'Korrigiere den String

ActiveSheet.Cells(i, j).Value = Replace(ActiveSheet.Cells(i, j), " ,", ",", , , vbTextCompare)

Else

'keine Aktion notwendig

End If

If InStr(1, ActiveSheet.Cells(i, j), ",A", vbTextCompare) Then

'Korrigiere den String

ActiveSheet.Cells(i, j).Value = Replace(ActiveSheet.Cells(i, j), ",A", ", A", , , vbTextCompare)

Else

'keine Aktion notwendig

End If

Next j

Next i

End Sub

Une idée comment faire cela plus facilement?

Merci

Bonjour,

Dans la mesure où tu n'as que quatre cas possibles ...

pourquoi ne pas tous les remplacer par un seul ...

Oui, je suis d'accord Avec toi mais je ne sais pas comment le faire

Re,

As-tu beaucoup de données à traiter ...?

As-tu vraiment besoin d'une macro ... ?

Bonjour alban88,

Je te propose le fichier Excel ci-dessous.

Ctrl e ➯ chaîne correcte en B1

Alt F11 pour voir la macro, puis revenir sur Excel

Merci de me dire si ça te convient.

Cordialement

10exo-alban88.xlsm (13.34 Ko)

Ah oui, c'est Parfait, serait-il possible possible de le copier dans la même cellule et non à côté?

Oui, il suffit de modifier ainsi la dernière ligne de la sub : [A1] = Left$(chn, Len(chn) - 2)

Malheureusement cela ne marche pas du tout sur mon document

Alors essaye avec : Cells(i, j) = Left$(chn, Len(chn) - 2)

NB : mettre ActiveSheet.Cells(i, j) au lieu de Cells(i, j) est inutile

car sans précision, ça lit par défaut sur la feuille active.

Je recois maintenant une erreur sur cette partie:

Dim Tbl, chn As String, l As Byte

Tbl = Split([A1], ",")

For l = 0 To UBound(Tbl)

chn = chn & Trim$(Tbl(l)) & ", "

Next l

Cells(l, j) = Left$(chn, Len(chn) - 2)

Essaye ceci :

Dim Tbl, chn As String, k As Byte

Tbl = Split(Cells(i, j), ",")

For k = 0 To UBound(Tbl)
  chn = chn & Trim$(Tbl(k)) & ", "
Next k

Cells(i, j) = Left$(chn, Len(chn) - 2)

Si ça ne marche toujours pas, peux-tu joindre ton fichier Excel sans données confidentielles, stp ?


Pour joindre ton fichier, regarde sous la fenêtre où tu tapes ton message :

1) clique sur le bouton « Choisissez un fichier » ; puis sélectionne ton fichier

2) clique sur le bouton « Ajouter le fichier »

bonjour

peux être avec replace

Range("B1").Value = Replace(Range("A1").Value, " ", "")

A+

Maurice

Bonjour,

sans boucle.

Sous forme de fonction :

Function normalise(ch As String) As String
    normalise = Replace(Replace(Replace(Application.Trim(ch), " ,", ","), ", ", ","), ",", ", ")
End Function

Sous forme de procédure qui traite la plage sélectionnée :

Sub normalise_selection()
    Dim c As Range
    For Each c In Selection
        c.Value = Replace(Replace(Replace(Application.Trim(c.Value), " ,", ","), ", ", ","), ",", ", ")
    Next c
End Sub

eric

Rechercher des sujets similaires à "espace nom"