IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Séparer des mots et les concaténer


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de TallyHo
    Homme Profil pro
    Lutin numérique
    Inscrit en
    Février 2006
    Messages
    1 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lutin numérique

    Informations forums :
    Inscription : Février 2006
    Messages : 1 053
    Par défaut Séparer des mots et les concaténer
    Hello

    Je viens vers vous car j'ai un souci.

    Dans une cellule, j'ai une donnée texte du type "Prénom NOM".

    Je voudrais trouver comment faire pour avoir dans une cellule la donnée "Prénom NOM" en "NOM P.".
    Par exemple : "Marc TARTENPION" en "TARTENPION M."

    J'ai essayé un peu tout avec les trouve " ", les exact et majuscule etc etc, j'ai rien pu en tirer de bon. Le problême c'est avec les noms ou prénoms composés comme "Jean Marc DE LA TARTENPIONNE"

    Si quelqu'un a une idée avec des formules, merci à lui.
    Comme je n'y connais rien en VB, si c'est la seule solution, je veux bien mais il faudra bien bien bien m'expliquer

    Merci à tous

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour


    Une possibilité à condition que le prénom composé soit conforme (Les deux prenoms séparés par des tirets): Jean-Marc DE LA TARTENPIONNE


    Si la chaine de caractères est en A1, tu peux saisir en B1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DROITE(A1;NBCAR(A1)-CHERCHE(" ";A1))&" "&GAUCHE(A1;CHERCHE(" ";A1))

    Ensuite dans la cellule C1 tu insères cette formule matricielle (à valider par Ctrl+Maj+Entree):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(B1;NBCAR(B1)-NBCAR(DROITE(B1;EQUIV(" ";STXT(B1;NBCAR(B1)-LIGNE(INDIRECT("1:"&NBCAR(B1)));1);0)))+1)&"."


    michel

  3. #3
    Membre extrêmement actif Avatar de TallyHo
    Homme Profil pro
    Lutin numérique
    Inscrit en
    Février 2006
    Messages
    1 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lutin numérique

    Informations forums :
    Inscription : Février 2006
    Messages : 1 053
    Par défaut
    Eh non justement, sinon je n'aurai pas de souci. Pas de tiret entre les prénoms Merci quand même pour ta réponse.
    J'ai l'impression que je ne m'en sortirais jamais avec ce truc.
    On ne peut pas faire avec les majuscules ?
    Mes connaissances sont limitées sur Excel et je n'y suis pas arrivé mais peut-être que ça peut orienter un "pro" pour m'aider

    EDIT :

    J'ai une piste avec données/convertir qui me sépare tous les mots.
    Mais j'ai toujours le problême de reconnaitre les majuscules.
    Concrétement la conversion donne :
    A - B - C - D - E
    Jean - Marc - DE - LA - TARTENPIONNE

    Mon souci c'est de repérer les cellules en majuscule pour les remettre en premier maintenant.

    Ca m'énerve, j'ai toujours un manque de connaissances qui me bloque quand je pars sur une autre piste

    SilkyRoad si tu as une idée pour la suite, merci à toi

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir TallyHo,

    Si vous séparez les mots vous avez une fonction qui permet de repérer les majuscules :

    Si le 2ème caractère est en majucules on suppose que les autres le sont.

    (c1 contient DE)

    En VBA :
    n = cells(1, 3)
    n = mid(n, 2, 1)
    n = asc(n)

    Si le résultat est compris entre 65 et 90 c'est un nom en majuscules.
    Sinon c'est un nom en minuscule (ou avec une seule majuscule). La valeur sera de 97 à 122.

    Avec quelques lignes de code on peut donc reconstituer.

    Amicalement
    Dernière modification par Invité ; 31/03/2007 à 20h04.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    Le format des noms ne facilite pas la tache par formule


    une nouvelle tentative :

    En A1, tu as le nom de base (Jean marc DE LA TARTENPIONNE).
    Tu recopies la même chose en B1.
    Tu utilises ensuite le menu données/convertir sur la cellule B1.

    Tu saisies la formule suivante en M1:
    (pour rechercher la position du premier mot totalement en majuscule)

    =NBVAL(B1:L1)-SOMMEPROD((B1:L1<>"")*(EXACT(B1:L1;MAJUSCULE(B1:L1))))+1



    Tu saisies la formule suivante En N1:
    (pour extraire le xieme mot d'une chaine)

    =SI(M1>NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";""));DROITE(A1;NBCAR(A1)-TROUVE("^^";SUBSTITUE(A1;" ";"^^";NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";"")))));SI(M1=1;STXT(A1;1;TROUVE("^^";SUBSTITUE(A1;" ";"^^";1))-1);STXT(A1;TROUVE("^^";SUBSTITUE(A1;" ";"^^";M1-1))+1;TROUVE("^^";SUBSTITUE(A1;" ";"^^";M1))-TROUVE("^^";SUBSTITUE(A1;" ";"^^";M1-1))-1)))



    Enfin, tu saisies en O1:
    =STXT(A1;TROUVE(N1;A1);NBCAR(A1))&" "&GAUCHE(A1;1)&"."

  6. #6
    Invité
    Invité(e)
    Par défaut
    Sans interférer sur votre proposition SilkyRoad, je signale simplement que j'ai rectifié ma réponse précédente :

    j'avais indiqué par inadvertance : En Access

    Il s'agit bien sûr de : En VBA et avec Excell.

  7. #7
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Aucune possibilité s'il n'y a pas de règle stricte... à moins de tester chaque cas avec la liste exhaustive de tous les prénoms, avec toutes les orthographes possibles... quoi que, même là, Christophe Laurent, c'est lequel son prénom ?

    Bref, je te donne une petite soluce pour extraire le nom et le prénom, en partant du principe qu'un prénom contient forcément un trait d'union, s'il est composé, et qu'il y a toujours Prenom et NOM.

    essaie les formules suivantes (en partant du principe que A1 contient le prénom NOM):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    =Gauche(A1;TROUVE(" ";A1;1)-1)
    =stxt(A1;TROUVE(" ";A1;1)+1;9999)

  8. #8
    Membre extrêmement actif Avatar de TallyHo
    Homme Profil pro
    Lutin numérique
    Inscrit en
    Février 2006
    Messages
    1 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lutin numérique

    Informations forums :
    Inscription : Février 2006
    Messages : 1 053
    Par défaut
    Merci pour l'effort SilkyRoad et les autres aussi
    Mais ça ne fonctionne pas.
    Ce n'est pas grave, j'ai quand même pas mal de pistes à explorer avec vos réponses, je vais étudier tout ça
    Merci à tous.

  9. #9
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    Mais ça ne fonctionne pas.
    Donne moi un exemple qui ne fonctionne pas.
    je m'excuse d'insister mais la méthode que j'ai proposé à 19h46 fonctionne parfaitement (voir la pièce jointe).


    bonne journée
    michel
    Fichiers attachés Fichiers attachés

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour TallyHo,

    Compte tenu de ma réponse sur le code des caractères je confirme que votre problème peut être solutionné par quelques lignes de codes simples.

    Mais bien évidemment vérifiez la solution de SilkyRoad.

    Sinon, si vous êtes toujours intéressé je vous adresse ce code dans l'après-midi (heures de repas obligent).

    Cela doit fonctionner avec un prénom simple ou composé et même avec seulement un nom.

    Ce nom peut être composé de "x" parties.

    Amicalement.

  11. #11
    Membre extrêmement actif Avatar de TallyHo
    Homme Profil pro
    Lutin numérique
    Inscrit en
    Février 2006
    Messages
    1 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lutin numérique

    Informations forums :
    Inscription : Février 2006
    Messages : 1 053
    Par défaut
    @SilkyRoad :

    Ca ne fonctionne pas avec les prénoms composés.
    Ton résultat donne DE LA TARTENPIONNE J. alors que ça devrait être DE LA TARTENPIONNE J.M.
    Sinon c'est impeccable au niveau du nom

    @jacques_jean :

    Je veux bien un bout de code mais je n'y connais rien en vb. Il faudra donc m'expliquer briévement comment l'incorporer et à quoi corresponde les fonctions dans les lignes, pour que je puisse l'adapter à ma feuille

    Merci à tous pour l'effort, j'ai à nouveau un espoir de solution

    Au pire des cas, je reprendrai la formule de SilkyRoad et pour les prénoms composés, je les modifierai manuellement. J'aurai déjà gagné énormément de temps avec cette formule. J'ai 2000 noms à traiter

Discussions similaires

  1. [PHP-JS] créer des espaces entre les mots php
    Par dgac2000 dans le forum Langage
    Réponses: 9
    Dernier message: 10/06/2019, 02h33
  2. Séparer des mots de balises HTML
    Par kandro dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/12/2011, 15h40
  3. Réponses: 14
    Dernier message: 25/10/2007, 15h00
  4. Réponses: 11
    Dernier message: 11/08/2007, 16h27
  5. Label d'axe graphique: remplacer les nombres par des mots
    Par Chrysomallus dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/04/2007, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo