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.
Rajouter espace entre 2 lettres dans une même cellule
Je pensais que tu lisais les Pattern couramment ...
Non, je plaisante, je vais essayer
En gros, j'essaye d'extraire chaque "forme" de mot, sachant que (d'après mes essais ), 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 ) 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 .
Bonne soirée
PS : PierreJean, ça ne fait que confirmer que tu es un bon exemple
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
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.