Rajouter espace entre 2 lettres dans une même cellule

raphael.werding

XLDnaute Nouveau
J'ai une base de données énorme et je voudrais rajouter d'une manière automatique un espace entre nom et prénom (collés dans la même cellule).

HubertDawagne => Hubert Dawagne

Est-ce que quelqu'un peut m'aider?
 

ROGER2327

XLDnaute Barbatruc
Re : Rajouter espace entre 2 lettres dans une même cellule

Bonjour pierrejean
Re

Peux-t-on en conclure que tout fonctionne toujours avec pierrejean de Limas dans le Beaujolais ( lol ! ) ?
Conclusion évidente, cela va sans dire !
Mais cela va encore mieux en le disant...​
Cordialement,

ROGER2327
#4120


Vendredi 6 Absolu 138 (Sainte Vérola, assistante sociale, SQ)
27 Fructidor An CCXVIII
2010-W37-1T15:48:16Z
 

Staple1600

XLDnaute Barbatruc
Re : Rajouter espace entre 2 lettres dans une même cellule

Bonsoir à tous


Merci à toi JNP d'être venu avec ton Pattern sous le bras ;)

J'ai pas encore réussi à tout décrypter.

Si tu as le temps, pourrais-tu expliquer, stp, ton pattern en langage simple.

Le mien, c'était : une lettre minuscule aussitôt suivie par une lettre Majuscule

Donc ok: pour HubertDAWAGNE


PS: RegExp a toujours du mal à se faire de nouveaux adeptes parmi nous malgré ton tuto dans le salon ;)
 

JNP

XLDnaute Barbatruc
Re : Rajouter espace entre 2 lettres dans une même cellule

Re :),
Si tu as le temps, pourrais-tu expliquer, stp, ton pattern en langage simple.
Je pensais que tu lisais les Pattern couramment :p...
Non, je plaisante, je vais essayer ;)
En gros, j'essaye d'extraire chaque "forme" de mot, sachant que (d'après mes essais :D), le "ou" fait comme le If, il s'arrête au premier motif trouvé et l'extrait de la chaîne, d'où l'importance de l'ordre de gauche à droite.
Code:
(^[a-z]+[COLOR=blue](?=[A-Z])[/COLOR])
^ pour début de chaîne, 1 ou plusieurs lettres minuscules, 1 majuscule juste après le motif (Voir "assertion" que j'ai eu un peu de mal à mettre en pratique :eek:) OK pour hubertDawagne
| ou
Code:
(^[a-z]+\-[a-z]+[COLOR=blue](?=[A-Z])[/COLOR])
idem avec un - entre les minuscules. OK pour pierre-jeanDe
| ou
Code:
([A-Z][a-z]+\-[A-Z][a-z]+)
début, milieu ou fin de chaîne, 1 maj, des mins, -, 1 maj, des mins.
OK pour Pierre-JeanComteDe-LimasDANSLe-Beaujolais
| ou
Code:
([A-Z][a-z]+|[A-Z]+$)
1 maj, des mins, ou que des majs fin de chaîne
Ok pour tous les mots "normaux" ou HubertDAWAGNE
| ou
Code:
([A-Z]+[COLOR=blue](?=[A-Z])[/COLOR])
Tout maj n'importe où dans la chaine, sauf à la fin car pris par le précédent
Ok pour PierreJEANDeLIMASDansLEBeaujolais
J'espère que c'est plus clair :p.
Bonne soirée :cool:
PS : PierreJean, ça ne fait que confirmer que tu es un bon exemple :p
 

andrekn13

XLDnaute Occasionnel
Bonjour à tous !
pour revenir à cette macro, j'ai excel 2016
Là vous m'avez épatez, je cherchais désespérément cette macro car j'ai le cas du : "HubertDAWAGNE" que je voulais uniquement adapter pour "A1" ( par ex.)
MAIS RIEN NE FONCTIONNE , grrrr
je suis vraiment dépassé
voici mon adaptation ( vraiment basique je le reconnait volontier)
Sub test2()
'Sub insertion_espace_2()
Dim oCel As Range, tmp$, i&
'oCel = Range("D4")
oCel = Cells(1, 4)
' With Selection 'ou tout autre plage qu'on voudra...
'For Each oCel In .Cells
If VarType(oCel) = vbString Then
tmp = oCel.Value
For i = Len(tmp) To 2 Step -1
If Mid$(tmp, i, 1) = UCase(Mid$(tmp, i, 1)) And Mid$(tmp, i, 1) <> "-" Then
If (Mid$(tmp, i + 1, 1) <> UCase(Mid$(tmp, i + 1, 1)) Or Mid$(tmp, i - 1, 1) <> UCase(Mid$(tmp, i - 1, 1))) And Mid$(tmp, i - 1, 1) <> "-" Then
tmp = Left$(tmp, i - 1) & Space(1) & Right$(tmp, Len(tmp) + 1 - i)
End If
End If
Next i
oCel.Value = WorksheetFunction.Trim(tmp)
End If
'Next oCel
'End With
'End Sub


End Sub

Si une âme charitable peut me venir en aide, je tourne en rond
Cordialement
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise