Excel macro séparant NOMPrénom ds une cellule

Fermé
Burocrate - 10 mars 2010 à 16:55
Le Pingou Messages postés 12094 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 mai 2024 - 11 mars 2010 à 11:00
Bonjour, ne connaissant rien aux diverses macros et programmations d'EXCEL. Je solicite votre savoir pour répondre à mon problème.
J'ai en ma posséssion une liste se composant de plus de 16000 lignes comportant des noms et prénoms, le souci étant que mes noms et prénoms ne sont pas séparés par des caractères blanc et se compose de la sorte : "NOMPrénom" comme dans mon titre, j'aurais aimer savoir si une macro etait envisageable pour y insérer un caractère blanc entre ces deux... Sachant que la seul distinction qu'il y a entre ces noms et ces prénoms est donc que la 2eme lettre du prénom devient une minuscule. Est-ce faisable ou non ? Si oui pouvez, vous m'indiquer la marche a suivre ? Merci d'avance.
A voir également:

6 réponses

eriiic Messages postés 24577 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 30 mai 2024 7 221
10 mars 2010 à 22:45
Bonsoir tout le monde,

Une proposition par formule avec le NOMPrénom en A1.
en B1 :
=GAUCHE(A1;MIN(SI(CODE(STXT(A1;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));1))>96;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));9^9))-2)
en C1 :
=STXT(A1;MIN(SI(CODE(STXT(A1;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));1))>96;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));9^9))-1;60)

Les 2 formules sont matricielles, à valider par shift+ctrl+entrée avec le curseur en édition. (s'entourent de { } si validation correcte)

eric
1
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
10 mars 2010 à 22:50
Salut eriiic,

ça fonctionne à la merveille

Merci pour l'astuce.

Bonne fin de journée
0
Le Pingou Messages postés 12094 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 mai 2024 1 435
10 mars 2010 à 17:09
Bonjour,
Mettre un bout (une vingtaine de lignes) de fichier sur https://www.cjoint.com/ et poster le lien!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 401
10 mars 2010 à 18:16
Bonjour
si seule la première lettre du prénom est une majuscule et seulement dans le cas où notre ami Le Pingou ne vous proposerait pas de macro,(ce qui m'étonnerait) je vous propose un petit jeu qui vaudra peut être la peine sur 16000 lignes, mais qui va prendre quand même du temps:
Sélectionnez la colonne des noms:
Remplacez a par_a
dans la fenêtre choisissez "option" et cochez: "sensible à la casse")
répéter l'opération pour les 26 lettres de l'alphabet.(eh oui!mais ça va assez vite)
toutes les initiales des prénoms seront suivies d'un underscore
dans la colonne contiguë, la formule (ici en B1 pour A1)
=STXT(A1;TROUVE("_";A1;1)-1;1)&STXT(A1;TROUVE("_";A1;1)+1;30)
vous reconstituera le prénom (avec un maximum de 30 lettres ça devrait suffire)
et en C1 la formule:
=STXT(A1;1;NBCAR(A1)-NBCAR(B1)-1)
vous reconstituera le nom
A noter toutefois que cette "méthode" vous créera des prénoms composés avec des tirets mal placés si chacun des éléments comporte une majuscule.
On peut arranger ça en reprenant la colonne prénom avec d'autres formules si vous le souhaitez.
Mais attendez peut être mon collègue Le Pingou, lui s'y connait en macro, pas moi
Crdlmnt
0
Le Pingou Messages postés 12094 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 mai 2024 1 435
10 mars 2010 à 22:16
Bonjour Vaucluse,
Merci, je vais essayer votre proposition pour le plaisir.
Par contre sans le petit plus demandé aucune procédure ne sortira de la fabrique.
0

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

Posez votre question
J'aimerais pouvoir accéder a votre requète mais malheureusement c'est un fichier confidentiel :s Je vais essayer la formule de Eriic :) Merci pour votre interet porté a mon problème !
0
Le Pingou Messages postés 12094 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 mai 2024 1 435
11 mars 2010 à 11:00
Bonjour,
Pas de problème. Voici la procédure avec NOMPrénom en colonne [A]
Résultats : Nom colonne [B] et Prénom en [C].
Mettre la procédure dans le module.
Sub separerNomPrenom()
Dim c As Long, li As Long
Dim nc As Byte, nbc As Byte
'majuscule code 65 à 90
li = 1
debut:
nbc = Len(Cells(li, 1))
For c = 1 To nbc
 nc = Asc(Mid(Cells(li, 1), c, 1))
 If nc >= 65 And nc <= 90 Then
'  MsgBox nc & " Une majuscule"
Else
    Cells(li, 2) = Left(Cells(li, 1), c - 2)
    Cells(li, 3) = Right(Cells(li, 1), nbc - c + 2)
    li = li + 1
    GoTo debut
End If
Next c
End Sub

0