Extraire des noms et prénoms avant et aprés un symbole

Bonjour, je vais essayer d'expliquer mon soucis.

J'ai fouillé un peu partout dans le forum, mais je n'y ai pas trouver trace de ma problématique.

Donc je me permet de poser la question.

Si le sujet à déjà été traité, je vous prie de bien vouloir m'en excuser.

J'ai une base de donnée extraite d'un export de l'un de mes logiciels. Cette base de donnée contiens une liste de noms et prénoms séparés les uns des autres par un " - ".

Tout ceci étant dans une colonne.

Je voudrais extraire le nom et prénom avant le " -" et le transcrire dans la colonne suivante, vérifier si il y a d'autre donnée après le "-" et dans ce cas là, retranscrire les données dans la colonne suivante et ainsi de suite.

Je vous joint un fichier pour mieux expliquer mon propos.

18exemple.xlsx (13.09 Ko)

Bjr et bienvenu,

isole les informations

fais ensuite Données > Convertir

capture d ecran 71

Salut Gargentua, salut Steelson,

Je me suis également intéressé au problème et me suis dit qu’il fallait également traiter les prénoms composés, ce que font mes formules placées dans la ligne 10 du fichier ci-joint.

A la ligne 6, le nom ''Vievard'' n'est pas séparé comme les autres par des espace-tiret-espace.

Avec la solution de Steelson, je présume que ces prénoms composés créeront des problèmes.

S’il faut plus de 4 colonnes, je passerais alors par une macro.

Cordialement.

13exemple-v1.xlsx (13.95 Ko)

Avec la solution de Steelson, je présume que ces prénoms composés créeront des problèmes.

Bonjour Yvouille

sans doute

je n'ai pas essayé avec un séparateur composé espace.tiret.espace qui aurait pu résoudre le problème et enlever les blancs superflus

Un grand merci à vous.

La solution D'yvouille me conviens

Concernant la ligne 6 il s'agit d'une erreur de ma part, il y a bien un "espace tiret espace" soit un " - " et non pas un prénom composé.

Je vais tester celà et je vous dit quoi, mais a mon avis c'est ce que je voulais..

Merci beaucoup à vous

Encore un grand merci.

Je me permet de revenir vers vous car ayant mis en pratique je me retrouve confronté à un autre soucis, cette fois ci c'est que ma base de donnée qui contiens 22 000 lignes, comprends des lignes avec 12 nom différents toujours espacées de " - ".

Les prénoms ou nom composé avec un "-" comme séparateur ne posent aucun soucis, c'est juste que l'exemple que j'avais donné ne comportai que 3 noms différents.

Alors 12 .....Je suis paumés.

Bonjour Gargentua, Steelson, Yvouille,

Dans ton fichier Excel, il y a en A2 : « Exemple de ce que je voudrais avec formule » ; Yvouille t'a donné une très bonne solution avec des formules, et je le félicite pour avoir pensé à utiliser le séparateur " - " (et non pas "-") afin de pouvoir traiter correctement les prénoms composés ! (c'est très bien aussi qu'il ait repéré ton anomalie en A6, pour Vievard )

Malheureusement, je crois que la solution d'Yvouille sera bien trop complexe à adapter pour ta nouvelle demande : « avec 12 noms différents » ! (j'dis pas qu'c'est forcément impossible, mais si Yvouille y arrive, il m'épatera vraiment, car les formules sont déjà bien longues pour 4 prénoms différents !!! )

Compte tenu de tout ce que je viens d'écrire ci-dessus, je te propose un fichier Excel avec macro, qui peut traiter 12 noms différents et même le double ou le triple si tu veux !


14exo-gargentua.xlsm (19.13 Ko)

À l'ouverture du fichier, note bien que les 2 plages de résultats sont entièrement vides (et y'a aucune formule )

Ctrl e ➯ travail effectué ! Alt F11 pour voir la macro, puis revenir sur Excel

Ça marchera tout aussi bien sur ton fichier réel, mais à condition de le convertir en fichier .xlsm, car les fichiers .xlsx ne peuvent pas contenir de macros ; il faudra aussi copier / coller mon code VBA dans Module1, puis éventuellement mette en place un raccourci clavier pour lancer la macro.

Pourquoi donc se priver des avantages de VBA alors qu'il a été créé spécialement pour faciliter des traitements informatiques ? si c'est pa'c'que ton entreprise a une paranoïa de VBA à cause des risques d'attraper un virus, c'est bien dommage ! car il y a de très bons antivirus efficaces, mis à jour quotidiennement, qui peuvent éviter la plaie des infections virales.


De préférence, demande à ton supérieur hiérarchique l'autorisation de télécharger mon fichier, et qu'il n'hésite pas à l'analyser avec un bon antivirus pour qu'il soit rassuré ! (je ne voudrais pas que tu sois renvoyé à cause de mon fichier !!!)

Si vraiment ton entreprise ou toi ne voulez pas l'essayer, c'est tout à fait votre droit et votre choix, mais dans ce cas, ma solution VBA pourra être utile à d'autres internautes intéressés par le même type d'exercice.

Si tu as quand même pu le télécharger et que tu as besoin d'une adaptation ou d'infos supplémentaires, tu peux me demander.

dhany

Salut Gargentua,

Comme je te l'avais proposé, j'ai commencé hier soir à chercher une solution par macro à ton problème et il me semble que je suis sur la bonne voie. Tout le travail que j'ai commencé semble maintenant inutile ; dommage. Si la solution proposée par dhany ne te convient pas, fait le moi savoir et je continue ce que j'ai commencé.

Salut dhany,

Pourquoi ne prendrais-tu pas en charge des sujets sans réponse plutôt que des sujets sur lesquels on travaille déjà en arrière-plan ?

Amicalement.

Salut Yvouille,

Tu a écrit :

Tout le travail que j'ai commencé semble maintenant inutile ; dommage.

J'ai trouvé le sujet très intéressant, alors comme tu avais proposé une solution avec formule, j'ai proposé ma solution VBA ; même si elle marche, pourquoi donc veux-tu considérer le travail que tu as fait comme inutile ? non, pas du tout ! ton code VBA est sûrement différent du mien, et Gargentua sera sûrement intéressé de voir une autre façon de faire ! donc termine ta propre solution et poste-la (même si Gargentua passe ce sujet en résolu).


Tu a écrit :

Pourquoi ne prendrais-tu pas en charge des sujets sans réponse plutôt que des sujets sur lesquels on travaille déjà en arrière-plan ?

Sur ce même sujet, c'est Steelson (salut !) qui a répondu en premier ; donc si je suis ta logique, tu n'aurais pas dû poster sur ce sujet puisqu'il avait déjà commencé à répondre ; tu lui as même écrit : « Je me suis également intéressé au problème... » ! mais tu as eu tout à fait raison de poster ton message, car tu es intervenu fort à propos ! c'est ce message où tu as précisé qu’il fallait également traiter les prénoms composés : excellent !

Je suis passionné par Excel, tout comme toi ; moi aussi, je me suis également intéressé au problème, donc j'ai fait l'exercice, puis je l'ai posté ; c'est aussi simple que ça !

Amicalement,

dhany

Sur ce même sujet, c'est Steelson (salut !) qui a répondu en premier

Et dans l'autre sens, il m'arrive aussi d'intervenir après d'autres si j'ai une solution différente et/ou si le sujet patauge (mais je ne suis pas le meilleur !) - cela me rappelle du reste le QRCode suisse, sujet que je n'avais pas vu tout de suite, mais sur lequel je suis intervenu car j'avais une partie de la solution

Bonjour tout le monde,

Je me permets de préciser que si je m’autorise à poster ma réponse lorsqu’il y en a déjà une, c’est normalement que j’avais travaillé en parallèle. Mon message est alors posté quelques minutes après le premier.

Si un fil ‘’roule’’, je ne m’en mêle généralement pas, sauf si la solution peine à être trouvée.

Bonne continuation.

Bonjour Gargentua,

Je ne sais pas si tu as vu mon message du 23/03 à 03:54 ? si oui, merci de me donner ton avis sur la solution que je t'ai proposée (à condition, bien sûr, que tu aies eu l'autorisation de télécharger mon fichier Excel !)

dhany

Merci, Steelson, merci Yvouille.

Je vais préférer la solution de dhany, ça fonctionne à merveille, c'est tout a fait ce que je voulais.

J'ai l'autorisation d'utiliser ton fichier, pas de soucis.

Dhany, je suis un peu néophyte en matière de macro et quand je dis néophyte, on va dire que je' sais quelles existe, mais sans plus.

Concrètement, je fais comment pour mettre cette macro dans mon fichier "mère". Because j'ai beau cherché, je trouve pas comment copier lamacro.

@Gargentua

Je suis vraiment ravi que tu aies apprécié ma solution VBA !

Quelle est l'extension actuelle de ton fichier "mère" ?

est-ce un .xlsx ou un .xlsm ?

Il est enregistré comme classeur prenant en charge les macro, donc il est en xlsm, comme expliqué plus haut.

Ah, ben tant mieux ! ça simplifie drôlement !!! (y'a plus à faire d'conversion de .xlsx en .xlsm) ! donc voici la suite : fais Alt F11 : ça ouvre la fenêtre « Microsoft Visual Basic Editor ».

Ensuite, fais Alt i m ➯ une page blanche s'ouvre à droite (celle de Module1) ; c'est que tu dois copier / coller tout mon code VBA ; pour te faciliter la tâche, je te le mets ci-dessous :

Option Explicit

Sub Sépare(lg1&, lg2&)
  Dim Tbl, lig&, i As Byte
  Range(Cells(lg1, 2), Cells(lg2, 16)).ClearContents
  For lig = lg1 To lg2
    With Cells(lig, 1)
      If Not IsEmpty(.Value) Then
        Tbl = Split(.Value, " - ")
        For i = 0 To UBound(Tbl)
          .Offset(, i + 1) = Tbl(i)
        Next i
      End If
    End With
  Next lig
End Sub

Sub Essai()
  Application.ScreenUpdating = False
  Dim dlig&: dlig = Cells(Rows.Count, 1).End(xlUp).Row
  Sépare 3, 7: Sépare 10, dlig
End Sub

Après avoir fait le copier / coller, refais Alt F11 pour retourner sur Excel

Si c'est ok jusqu'ici, j'pourrai t'indiquer la dernière étape.

À te lire pour la suite.

Voila, alt f11 une fois, la fenêtre est apparue

Alt i m et une page blanche est viendue^^

Ensuite j'ai copié collé le texte.

Et re alt f11 et je suis de =nouveau sur excel ...

ok ; fait Alt F8 ➯ fenêtre Macro ; il y a dans la liste une seule macro nommée Essai (qui est celle de Module1).

Comme cette macro est déjà sélectionnée (ligne sur fond bleu), il suffit de cliquer sur le bouton « Exécuter » (ou d'appuyer sur la touche Entrée) pour lancer la macro.

On pourrait s'arrêter là, mais voici une étape facultative supplémentaire : pour éviter de devoir faire ce que je viens de t'indiquer à chaque fois que tu veux lancer la macro, il y a possibilité de rajouter un raccourci clavier (c'est le Ctrl e que tu as fait).

À partir de la fenêtre Macro : la macro Essai est sélectionnée ; fais Alt t ➯fenêtre « Options de macro » ; dans la petite case, tape la lettre e ; valide par OK ➯ retour à la fenêtre Macro ; ferme la fenêtre par un clic sur la croix ; fini ! c'est comme pour le fichier que j'ai joint, à part que c'est ton vrai fichier, avec tes données réelles !

dhany

Encore un grand merci...

Juste une dernière question.

Je viens de découvrir un autre soucis, aussi j'en profite.

Je viens de découvrir que je peux avoir une ligne avec: Brian Azzarello et une autre avec Azzarello Brian

Évidement c'est la même personne.

Y a t-il un moyen de moyenner ça ?

C'est à dire remettre dans le même ordre.

Non, je ne pense pas que ce soit possible ; pour cette raison : les données de départ sont celles de la colonne A ; et pour une ligne donnée, il n'y a aucun moyen de déterminer si c'est prénom puis nom ou l'inverse ! la macro ne fait « que » séparer chaque personne pour les répartir à droite, rien de plus !

Dans mon fichier, en A6, j'ai : « Brian Azzarello - Eduardo Risso - Sophie Watine - Vievard » ; il y a donc 4 personnes ; si pour l'une d'elle il y a inversion du nom et prénom, il faudrait pouvoir dire laquelle (ou même plus si le problème est pour plus d'une personne) ; et ce que je viens de te dire pour la ligne 6 : idem pour chaque ligne !

Alors imagine que tu ajoutes une colonne avant la colonne A ; cette colonne sera vide au départ ; et il faudrait que quelqu'un vérifie pour chaque ligne, et pour chaque personne s'il y a une anomalie, et qu'il note cette anomalie ! et cette notation doit être choisie pour qu'elle puisse correspondre à autant de personnes qu'il y en a sur la ligne ! à toi de voir si ça vaut l'coup !

dhany

Rechercher des sujets similaires à "extraire noms prenoms symbole"