Excel : Séparation Prénoms NOMS

Résolu/Fermé
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 - Modifié par Peo_o le 10/06/2010 à 16:30
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 - 25 avril 2011 à 17:08
Bonjour,

Je souhaite vous communiquer une formule qui me sert deja à séparer des NOMS en MAJUSCULE suivis des Prénoms en Minuscule (juste 1ere lettre en maj.)

Vous serez t il possible de me donner le critère à modifier pourqu'il me sépare maintenant les Prénoms en Minuscules suivis des NOMS en MAJUSCULE ?????? SVP...

En d'autres termes :
Au début je voulai séparer : COMMENTCAMARCHE Paul
Et maintenant je cherche à faire : Paul COMMENTCAMARCHE

Voici ma belle macro :

Sub SepareNomPrenom()
Dim i As Integer
Dim vDerniereLigne
Dim Chaine As String
Dim vASC As Integer
Dim x As Integer, y As Integer
vDerniereLigne =3333
For i = 1 To 3333
Chaine = Range("A" & i).Value
y = 1
Do
x = InStr(y, Chaine, " ")
If x > 0 Then
vASC = Asc(Mid(Chaine, x + 2, 1))
Else
vASC = 0
End If
y = x + 1
Loop Until vASC < 65 Or vASC > 90 Or x = 0
If vASC <> 0 Then
Range("B" & i).Value = UCase(Left(Chaine, x - 1))
Range("C" & i).Value = (Right(Chaine, Len(Chaine) - x))
End If
Next i
End Sub



D'avance merci ! ! ! !



A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 10/06/2010 à 16:50
Comprend pas trop ta demande et ton code mais ...
pour inverser le nom et prénom
nom en majuscules et prénom 1) majuscule puis miuscule

tablo = Split(Range("A1"))  
 Range("A1") = Application.Proper(tablo(1)) & " " & UCase(tablo(0))

:-x

ainsi bidOChoN RObERt

devient
Robert BIDOCHON

c'est ce que tu voulais ?
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 823
10 juin 2010 à 17:08
bonjour,

itou michel_m..

Peo_o, as tu par hasard essayé ces formules ? :

=GAUCHE(A1;CHERCHE(" ";A1)) te renvoi ce qui est avant le " "
et
=DROITE(A1;NBCAR(A1)-CHERCHE(" ";A1)) ce qui est après.

et donc après tu en fait bien ce que tu veux : dans deux cellules différentes ou bien re-concaténer à l'envers :
==DROITE(A1;NBCAR(A1)-CHERCHE(" ";A1))&" "&GAUCHE(A1;CHERCHE(" ";A1))

mais je pense que cela révèle sans doute qu'on ne comprend pas trop ce que tu veux faire...
0
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 2
10 juin 2010 à 17:10
hello Michel.... pas tout à fait ça, mais j'ai la reponse ! ! ! ! mais MERCI pour ta réactivité ! ! !

le but du jeu : j'ai :

BIDAUCHON Pierrette TRUCMUCHE
donc la premiere macro me separe :
BIDAUCHON puis Pierrette TRUCMUCHE

et la seconde macro pour séparer :
Pierette puis TRUCMUCHE ! ! !

et voici donc la seconde Macro :


Sub SepareNomPrenom()
Dim i As Integer
Dim vDerniereLigne
Dim Chaine As String
Dim vASC As Integer
Dim x As Integer, y As Integer
vDerniereLigne =3333
For i = 1 To 3333
Chaine = Range("A" & i).Value
y = 1
Do
x = InStr(y, Chaine, " ")
If x > 0 Then
vASC = Asc(Mid(Chaine, x + 2, 1))
Else
vASC = 0
End If
y = x + 1
Loop Until vASC < 97 Or vASC >122 Or x = 0
If vASC <> 0 Then
Range("B" & i).Value = (Left(Chaine, x - 1))
Range("C" & i).Value = (Right(Chaine, Len(Chaine) - x))
End If
Next i
End Sub




Merci ! ! ! ! ! !

PS: Je n'arrive pas a faire fonctionner ta Macro???? pourtant j'ai ecris en A1 BIDAUCHON Robert et je la lance sur B1... mais ca marche pô.... Ai je fais une erreur, elle peut m'etre utile ! ! ! !

D'avance merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 10/06/2010 à 17:42
Ma macro remplaçait Nom Prénom par Prénom NOm dans la m^me cellule

par exemple dans zone A1:A10 nom prénom

for lig=1 to 10
tablo=tablo(cells(lig,1))
cells(lig,1) = Application.Proper(tablo(1)) & " " & UCase(tablo(0))
next
0
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 2
11 juin 2010 à 09:49
Merci, Michel_m ! ! ! !


Belle journée


PeOO
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 823
10 juin 2010 à 17:35
Le code ci-dessous fait en une étape ce que tu as décrit :

BIDAUCHON Pierrette TRUCMUCHE => BIDAUCHON  |  Pierrette  |  TRUCMUCHE


Sub separerlesnoms()
reste = ActiveCell.Value
i = 1
    While InStr(reste, " ") > 0
        etape = Left(reste, InStr(reste, " "))
        reste = Right(reste, Len(reste) - InStr(reste, " "))
        ActiveCell.Offset(0, i).Value = etape
        i = i + 1
    Wend
  ActiveCell.Offset(0, i).Value = reste
End Sub


Code a modifier et à améliorer dans son fonctionnement si tu as bps de lignes à traiter évidemment...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 2
11 juin 2010 à 09:45
Hello Dobo69,

merci pour ton aide, mais cette "action" est disponible directement en allant dans excel à l'onglet "Données/convertir - - - > separer par des espaces...

Enfin, comme tu t'en doute, le but du jeu est de separer le nom (qui peut etre composé), le(s) prénom(s) et enfin le nom d'epouse (qui peut egalement etre composé)...

mais j'ai mis en ligne ci-dessus la macro qui permet de le faire....


Merci encore


PeOO
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 823
Modifié par dobo69 le 11/06/2010 à 15:10
cette "action" est disponible directement en allant dans excel à l'onglet 
oui OK, mais souvent une macro cherche à automatiser des actions faites souvent...
Enfin, comme tu t'en doute
, non justement : ta problématique n'était pas très clair. Maintenant que tu as expliqué, elle l'est un peu plus...
Et je suis heureux pour toi que tu ais trouvé finalement. :-)
0
Peo_o Messages postés 85 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 mai 2015 2
Modifié par Peo_o le 25/04/2011 à 17:10
Dobo69, bonjour,

en relisant le post, et avec un peu plus d'experience aujourd'hui, je me rend compte qu'effectivement tout cela n'était pas très clair et que, je n'avai pas compris qu'il fallait ajouter une boucle pour étandre ta formule à toute une liste !!!

Merci donc pour ta réponse du moment pleine de tact !!!!

Il est souvent possible de confondre une maladresse ou incompréhension en malpolitesse ou j'menfoutisation... donc encore merci pour ton aide !!!

belle continuation


Peo_O
0