Inversion prénom(s) et nom
Dans une liste en colonne A, nous disposons du nom de famille, suivi par une virgule et enfin le(s) prénom(s) de la personne concernée. L'objectif est d’obtenir une liste avec le(s) prénom(s) puis – séparé par un simple espace – le nom de famille.
La formule utilisée en B2, puis recopiée vers le bas, est :
=stxt(A2;cherche(",";A2)+1;100)&" "&gauche(A2;cherche(",";A2)-1)
Remarque 1 – Nous avons vu grand pour le troisième argument de stxt() mais cela ne gêne en rien le résultat…
Remarque 2 – Nous sommes obligés de réaliser deux fois la même recherche de la position de la virgule, mais c’est le prix à payer pour tout calculer en une seule formule.
Remarque 3 – Ceux qui n’apprécient pas la fonction stxt() peuvent utiliser une formule un peu plus longue : =droite(A4;nbcar(A4)-cherche(",";A4))&" "&gauche(A4;cherche(",";A4)-1)
La formule utilisée en B2, puis recopiée vers le bas, est :
=stxt(A2;cherche(",";A2)+1;100)&" "&gauche(A2;cherche(",";A2)-1)
Remarque 1 – Nous avons vu grand pour le troisième argument de stxt() mais cela ne gêne en rien le résultat…
Remarque 2 – Nous sommes obligés de réaliser deux fois la même recherche de la position de la virgule, mais c’est le prix à payer pour tout calculer en une seule formule.
Remarque 3 – Ceux qui n’apprécient pas la fonction stxt() peuvent utiliser une formule un peu plus longue : =droite(A4;nbcar(A4)-cherche(",";A4))&" "&gauche(A4;cherche(",";A4)-1)
3 Commentaire(s):
En ce qui concerne la remarque 2, on peut utiliser un nom, pour éviter la répétition de la formule.
1. Se placer en B2
2. Définir ainsi le nom "Pos" (comme Position virgule : Fait référence à =CHERCHE(",";A2)
NB - Il est IMPÉRATIF que le nom ait été défini en relatif : =CHERCHE(",";A2) et non =CHERCHE(",";$A$2). Ainsi, en B2, Pos renverra la position de la virgule en A2, tandis qu’en B5, c’est à la position de la virgule en A5 que correspondra Pos.
On peut ensuite utiliser Pos dans la formule, à la place de la fonction CHERCHE(). Par exemple en B2 :
=STXT(A2;Pos + 1;100) & " " & GAUCHE(A2;Pos - 1)
By Anonyme, sur 10:54 AM
Certes, Michel !
On peut d'ailleurs, de la même façon, simplifier n'importe quelle formule dans laquelle un bloc donné est répété.
L'inconvénient est que le gain en compacité qui en résulte est compensé par une perte en lisibilité du modèle.
By Hervé Thiriez, sur 7:23 AM
Voici une solution en VBA, un peu pesante, mais qui présente l'avantage de pouvoir être appliquée n'importe où sur le tableur, si les cellules intéressantes sont sélectionnées.
Ce blog est une merveille! Je vais créer un compte Google.
Joseph Wehbe
Private Sub CommandButton1_Click()
Rangee1 = ActiveCell.Row
NbRangees = Selection.Rows.Count
MsgBox (NbRangees)
j = ActiveCell.Column
For i = Rangee1 To Rangee1 + NbRangees - 1
NomComplet = Cells(i, j)
PosVirgule = InStr(NomComplet, ",")
LongueurPrenom = Len(NomComplet) - PosVirgule
LongueurNom = PosVirgule - 1
Prenom = Right(NomComplet, LongueurPrenom)
Nom = Left(NomComplet, LongueurNom)
Cells(i, j + 1) = Prenom & " " & Nom
Next
End Sub
By Anonyme, sur 12:31 PM
Enregistrer un commentaire
<< Accueil