Excel macro séparant NOMPrénom ds une cellule
Burocrate
-
Le Pingou Messages postés 12713 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12713 Date d'inscription Statut Contributeur Dernière intervention -
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.
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:
- Excel macro séparant NOMPrénom ds une cellule
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Déplacer une colonne excel - Guide
6 réponses
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
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
Bonjour,
Mettre un bout (une vingtaine de lignes) de fichier sur https://www.cjoint.com/ et poster le lien!
Mettre un bout (une vingtaine de lignes) de fichier sur https://www.cjoint.com/ et poster le lien!
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
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
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.
Merci, je vais essayer votre proposition pour le plaisir.
Par contre sans le petit plus demandé aucune procédure ne sortira de la fabrique.
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 !
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.
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
ça fonctionne à la merveille
Merci pour l'astuce.
Bonne fin de journée