XL 2016 excel vba trouver position 2ème majuscule et insérer espace

andrekn13

XLDnaute Occasionnel
Bonjour, encore et encore !
Malgré pleins de tutos et docs microsoft, mine de rien trouver la bonne syntaxe demande une maîtise parfaite ! Bref je m'explique
Dans une cellule J'ai un Prenom ( 1ère lettre en Majuscule), puis, sans aucun espace j'ai le NOM tout en majuscules !!
Je cherche donc la bonne méthode pour mettre en espace entre les 2 !
ex: DenisDUPOND
je pense donc que c'est inévitable, je dois passer par repérer la position de la 2ème majuscule ( donc sauter la première !)
puis en deuxième phase procéder la l'insertion

facile à dire !
avec

soit : If Mid(Range("A1").Value, i, 1) Like "[A-Z]" Then
MsgBox "Position " & i
je dois bloquer " au 2ème i puisque les les autres sont la suite du nom et ....

soit: i = InStr(2, Range("A1"), like"[A-Z]") je démarre à la 2éme lettre mais n'accepte pas le like

soit: Dim parametre As String
parametre = UCase
i = InStr(3, Range("A1"), parametre) c'est pis rien ne marche

ni en faisant la methode extraire, ou comptage position. Je pense ne pas avoir assez décomposé

Si un pro de la synthaxe s'est déjà confronté à ce genre de reflexion ?
Cordialement à tout ce forum génial
 

job75

XLDnaute Barbatruc
Bonsoir andrekn13,

Fonction VBA à placer dans un module standard :
VB:
Function SauteMaj$(t$)
Dim i%, n%
For i = 1 To Len(t)
    If Mid(t, i, 1) = UCase(Mid(t, i, 1)) Then n = n + 1
    If n = 2 Then SauteMaj = Left(t, i - 1) & " " & Mid(t, i): Exit Function
Next
SauteMaj = t
End Function
A+
 

Pièces jointes

  • SauteMaj(1).xlsm
    14.9 KB · Affichages: 14

andrekn13

XLDnaute Occasionnel
EUHHHH
J'ai dû télécharger ton exemple pour le faire marcher !
Là, j'avais jamais vu une écriture pareil pour du codage . complètement largué grave .
Juste , comme je ne saisi même plus la signification ,
comment fait t-on pour que ça soit sur F13
et que surtout que c'est par macro que je récupère le body d'un mail actif c'est donc de le formater directement à la suite sur F13
je ne peux pas avoir en double ce "Prenom-nom" ailleurs
Vraiment impressionné et aussi rapide , c'est dingue depuis 15h je tourne en rond
 

andrekn13

XLDnaute Occasionnel
ta macro marche pour la colonne A et les résultats se font sur colonne B
J'aimerais juste que cette fonction se fasse sur F13 uniquement.
(Ce fichier à une bonne centaines de macros)
une de ces macros récupère le ce PrenomNOM .en F13
Donc avec ta fonction qu'il le reformate sur ce même F13
assez clair ?
 

andrekn13

XLDnaute Occasionnel
euh ... si vraiment tu pourrais juste rajouter si tu veux bien quelques explications comme
$(t$)
Len(t)
SauteMaj = t
3 "t" et n'arrive même pas à en faire le lien !!
( le UCase ainsi utilisé alors que dans tous les forums ils n'en parlent que pour le rendre global a une cellule sans distinguer les subtilités je le laisse pour plus tard !)
 

andrekn13

XLDnaute Occasionnel
en fait dans ton code je ne vois pas du tout comment ça apparaît qu'il va aller rechercher sur colonne A pour donner résultat sur colonne B. Donc je ne peux modifier tout seul pour selectionner F13
j'espère cette fois-ci que tu me comprends ?
l'écart est tel que ce qui est simple pour toi est un brouillard absolu pour moi
 

Discussions similaires

Statistiques des forums

Discussions
311 723
Messages
2 081 932
Membres
101 844
dernier inscrit
pktla