[excel] chaine de caractères

Résolu
ben2ar -  
tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

J'aimerai connaitre, sur Excel, la fonction qui permet d'extraire un mot dans une chaine de mots.

Exemple:
Ne garder que "douarnez" dans "OPHLM de douarnez"

Je sais qu'on peut extraire des caractères avec la fonction "droite"mais cette fonction de tient pas compte des mots, elle ne tient compte que du nombre de caractères. D'où mon problème.

Merci de m'aider.

27 réponses

  • 1
  • 2
Résumé de la discussion

Le problème consiste à extraire un mot précis dans une chaîne Excel, par exemple récupérer 'douarnez' dans 'OPHLM de douarnez' sans se limiter au nombre de caractères. Des solutions existent, notamment GAUCHE associée à TROUVE pour isoler le mot avant le premier espace, et STXT ou DROITE avec NBCAR pour s'adapter à des chaînes à positions fixes ou à des segments, notamment. En cas de besoin lié au publipostage ou à des codes structurés comme A010001001, il peut être utile d'adapter la méthode avec un exemple concret et de combiner plusieurs fonctions.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. G.David Messages postés 790 Statut Membre 203
     
    si tu as toujours le meme debut
    a savoir OPHLM de
    to texte en C3
    =STXT(C3;10;NBCAR(C3))
    9
    1. Franck
       
      Bonjour,
      moi je voudrais extraire les 5premiers charactères d'une chaine composée de lettre et de chiffre, mais mon excel mac ne semble pas contenir cette formule...comment je dois faire?
      0
    2. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      Bonjour,

      pour obtenir les 5 premiers caractères de ta chaîne. :
      =GAUCHE(ma_chaine,5)

      pour obtenir les 5 premières lettres à gauche de ta chaîne de caractères :
      =GAUCHE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE($B$6,"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),5)
      Je suppose que tu n'as que des lettres ou des chiffres dans ta chaîne.

      cordialement

      remarque : remplace les virgules par le séparateur kivabien
      0
  2. joe black
     
    =GAUCHE(A1;TROUVE(" ";A1)-1

    c'elle la extrais une chaine de caractere avent un espace
    jean jacque
    devient
    jean

    et si tu mes droite a la place de gauche

    t'aura jacque
    voili voilo
    9
  3. Daranc
     
    et si tu as "OPHLM de juan les pins" tu auras pins (*_*)
    en anotation :apparemment il s'agit d'extrair un nom de commune et si il y a Y comme nom il y en a pas mal d'assez exotique
    1
  4. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
     
    Est-ce que ceci conviendrait ?
    http://www.cijoint.fr/cjlink.php?file=cj201106/cijAIGq0bx.xls
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    si votre texte comprend toujours deux blancs et que vous voulez extraire le dernier mot:

    =STXT(B2;TROUVE(" ";B2;TROUVE(" ";B2;1)+1);20)

    ou aussi

    =STXT(A1;TROUVE("_";SUBSTITUE(A1;" ";"_";2);1)+1;20)

    si la configuration de vos textes est variable, venir nous donner ici une liste exemple des textes à traiter

    crdlmnt
    Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
    0
  7. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Une autre façon de faire

    =SUBSTITUE(B3;"OPHLM de ";"")

    Mytå
    0
  8. Tibo
     
    Bonjour à tous,

    Je reviens sur ce sujet. Je sais que la réponse qu'il me faut est toute proche de celle proposée dans ce topic mais la formule proposée "=GAUCHE(A1;TROUVE(" ";A1)-1 " me renvoie parfois des caractères en trop, notamment quand je change "gauche" en "droite".

    Voici mon problème. J'ai une liste de chiffres séparés par des ";" (par exemple : 3;4;5;8;9;10;11). A chaque fois, je souhaite en extraire dans deux cases différentes le premier et le dernier (sachant que le premier, comme le dernier peuvent avoir 1 ou 2 chiffres ; de 1 à 12).

    Merci beaucoup à vous,

    Tibo.
    0
    1. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
       
      Si vous avez toujours 1 ou 2 chiffres à la fin, vous pouvez utiliser ces formules :
      =GAUCHE(A1;TROUVE(";";A1)-1)
      =DROITE(A1;NBCAR(A1)-TROUVE(";";A1;NBCAR(A1)-3))

      Michel
      0
    2. Tibo
       
      Merci beaucoup Michel

      Effectivement, la formule pour extraire à gauche fonctionne très bien. En revanche, pour ce qui est à droite, l'extraction fonctionne moins bien. (je me retrouve avec des "#VALEUR!" et des "4;5". En fait, ce qu'il faudrait, c'est extraire tous les chiffres à droite avant le premier ";". Est-ce possible ?

      Encore merci !

      Tibo.
      0
    3. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
       
      C'est ce que fait la deuxième formule il me semble ! (extraction des 1 ou 2 derniers chiffres après le dernier ; )
      0
    4. Tibo
       
      Sauf erreur de ma part, lorsque je prends votre formule et que je l'applique, je n'obtiens pas le bon résultat :

      En A1 : 3;4;5;6
      Résultat : 5;6

      En A2 : 4;5
      Résultat : #VALEUR!

      En A3 : 3;4;5;8;9;10;11
      Résultat : 11

      La formule semble ne fonctionner que lorsque le dernier nombre comporte deux chiffres. Or, je ne peux pas faire le tri manuellement...
      0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour à tous

    pour le petit dernier

    =DROITE(A1;EQUIV(";";STXT(A1;NBCAR(A1)-LIGNE($1:$255);1);0))

    Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule

    formule trouvée sur ce site
    http://boisgontierjacques.free.fr/
    0
    1. Tibo
       
      Un grand merci Michel ! Ca fonctionne !

      A bientôt !
      0
  10. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour

    Pour info,afin d'amener mon grain de sel et surtout juste pur rappeler à Michel (salut) que c'est lui qui m'a donné la solution dans une autre vie :-)

    non matricielle:
    =DROITE(A2;NBCAR(A2)-TROUVE("_";SUBSTITUE(A2;";";"_";NBCAR(A2)-NBCAR(SUBSTITUE(A2;";";"")))))
    pour une valeur en A2 devrait marcher pour l'extraction du dernier à droite

    crdlmnt

    Ps la combine NBCAR(cell)-NBCAR(SUBSTITUE(Cell;"caractère";"rien") est géniale pour compter le nombre de "caractères d'un texte.

    Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
    0
  11. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
     
    Merci à vous Michel et Vaucluse,

    Quelque chose qui parait simple au départ et qui se termine par une méga formule, et tout ça pour extraire 2 malheureux chiffres !
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      mon seul mérite est d'être aller fouiner sur un site réputé!!! :-)

      cordialement votre
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      c'est vrai Michel; et je reviens car j'ai un peu oublié de citer Mita dans ma proposition alors qu'il y est aussi et il y est aussi pour quelque chose.
      Rendons à César....ce qui appartient à ce vieux Jules!

      Le site où tu vas fouiner mérite bien sa réputation.

      bonne journée à tous.
      crdlmnt
      0
    3. Daranc
       
      Quelque chose qui parait simple au départ et qui se termine par une méga formule, et tout ça pour extraire 2 malheureux chiffres !
      Ben ouais! si ça avait été pour tout un annuaire ç'aurait-t- été moins artistique
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      daranc, ????
      bof
      0
    5. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
       
      Ce que je voulais dire c'est qu'on cherche en principe un truc simple pour résoudre un problème simple. Là, nous avons un problème simple résolu avec une formule longue comme le bras !

      Et puis en cherchant un peu plus, je suis arrivé à cette formule qui marche aussi mais seulement s'il y a un ou deux chiffres à extraire :
      =SI(TROUVE(";";DROITE(A1;3))>1;DROITE(A1;1);DROITE(A1;2))

      Et pour éviter d'afficher #N/A si la cellule est vide (idem pour les formules ci-dessus !):
      =SI(A1="";"";SI(TROUVE(";";DROITE(A1;3))>1;DROITE(A1;1);DROITE(A1;2)))
      0
  12. troubidouch Messages postés 54 Statut Membre 1
     
    Bonjour,
    Alors jai bien étudier vos formules mais malhereusement je ne trouve pas mon bonheur !

    Alors si quelqu'un peut m'aider :

    J'ai une suite de ce type : A10040254

    Et il me faut extraire suivant les cas (dans différentes cellules) :
    - A1
    - 004
    - 2
    - 54

    Je précise que mon but ultime de cette extraction est de pouvoir utiliser chacune de ces données pour un publipostage sur word
    0
  13. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    ce n'est pas le m^me problème

    dans ton cas, il faut nous en dire plus:
    séparer 2 caractères puis 3 puis sauter le 0 puis 1 puis 2
    ou?...
    restitution en ligne ou en colonnes, tirets devant les extractions ?...

    a te lire....

    Michel
    0
  14. troubidouch Messages postés 54 Statut Membre 1
     
    Bonjour et bien pour tenter de mieux expliquer mon probleme :
    jai une suite de caractères de ce type dans une colonne : A010001001
    Ces éléments constituent un ensemble d'informations qu'il me faut réutiliser pour compléter un publipostage sur Word
    le "A" correspond au batiment
    le "01" correspond a l'etage, ...

    Alors il me faut extraire de cette suite certains éléments pour pouvoir les mettre à chaque élément de mon publipostage word.

    Donc étant donné qu'il s'agit d'une fichier de plus de 300 personnes je cherche un moyen soit de faire apparaitre chaque élément de cette suite :
    -soit sur une meme ligne pour chaque enregistrement pour pouvoir après les exporter via un champ de fusion
    - soit directement exporter sur word la suite mais en ne réussissant a faire apparaitre que la partie de la suite qui m'interesse a chaque endroit

    Je ne sais pas si c'est tres clair ce que j'ai dit?
    0
    1. mic13710 Messages postés 1165 Date d'inscription   Statut Membre Dernière intervention   360
       
      C'est un tout petit peu plus clair, sauf que si vous ne donnez qu'une toute petite partie du problème.
      Vous ne dites pas si le nombre de caractères des suites est fixe ou variable.
      Qu'elle est la liste des éléments à extraire. On a le premier (A), le deuxième (01), et après ?
      (je note au passage que dans votre premier post il s'agissait d'extraire A1 et non A et 004 et non 01)
      Vous ne dites pas si le nombre d'éléments à extraire dans chaque suite est le même et si les éléments sont tous positionnés de manière identique (et donc avec le même nombre de caractères) et si ce n'est pas le cas, qu'est-ce qui permet de les différencier.

      En gros, ça va être extrêmement difficile de vous aider si vous n'en dites pas plus.
      Le mieux serait de faire un petit fichier excel sur lequel vous mettez quelques suites et le résultat que vous souhaitez obtenir, de le charger sur ci-joint et de venir mettre le lien ici pour qu'on puisse vous aider efficacement.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Je ne sais pas si c'est tres clair ce que j'ai dit?
      RATE

      J'ai l'impression qu'on va être obligé de supplier troubi... pour avoir des renseignements précis
      0
  15. troubidouch Messages postés 54 Statut Membre 1
     
    Alors la chaine ne dispose pas exactement du meme nombre de caracteres il oscille entre 10 et 11 caractères avec
    - les 2 premiers caractères pour le batiment (parfois un seul caractère)
    - les 2 suivants pour l'entrée
    - les 2 suivants le niveau
    - les 5 derniers le n° de porte

    Les numéros sont composés de manière identique mais à partir de la fin (donc des 5 derniers caractères correspondant au numéro de porte).

    Il ne me reste qu'a trouver la solution pour inserer u fichier excel pour estre plus explicite
    0
  16. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Bonjour troubidouch.

    Maintenant que tu as fourni des données claires, on peut enfin te proposer une solution. Le code étant saisi en A2, tu obtiendras :
    Le bâtiment- avec =STXT(A2;1;NBCAR(A2)-9)
    L'entrée---- avec =STXT(A2;NBCAR(A2)-8;2)
    Le niveau- avec =STXT(A2;NBCAR(A2)-6;2)
    La porte- avec =DROITE(A2;5) qui est plus simple que =STXT(A2;NBCAR(A2)-4;5)
    0
  17. limswolf
     
    Bonjour j'ai une question similaire,
    j'ai un chemin du type :
    "G:\documents\programme\plan.dwg"

    et je voudrai extraire ici le mot "plan" par exemple.

    les caractères de l'extension ".dwg" seront toujours les derniers

    Je voudrai quelque chose du style,

    De la droite, après "g","w","d","." et jusqu'à "\" exclut.

    merci
    0
  18. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    si vous avez toujours trois antislash dans votre texte:
    une solution parmi d'autres:
    =STXT(A1;TROUVE("_";SUBSTITUE(A1;"\";"_";3);1)+1;NBCAR(A1)-TROUVE("_";SUBSTITUE(A1;"\";"_";3))-5)

    Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
    0
  19. limswolf
     
    non justement le nombre d'"\" est aussi variable, c'est pour cela que je souhaité partir de la droite.
    0
  20. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour à tous les deux

    peut-^tre avec une fonction personnalisée
    Function nom_fich(chemin As String) As String
         nom_fich = Left(Split(chemin, "\")(UBound(Split(chemin, "\"))), 4)
    End Function
    0
  21. tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   1 064
     
    Bonjour à tous,
    On peut aussi "arranger" la formule de Vaucluse en cherchant combien il y a de barres obliques inversées dans le texte:
    =STXT(A1;TROUVE("_";SUBSTITUE(A1;"\";"_";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"\";"")));1)+1;NBCAR(A1)-TROUVE("_";SUBSTITUE(A1;"\";"_";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"\";""))))-4)
    Et bon appétit;-)
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Re,

      A peu près le m^me principe (compter les \) formule traduite et adaptée d'un site anglophone
      =GAUCHE(DROITE(A1;NBCAR(A1)-TROUVE("*";SUBSTITUE(A1;"\";"*";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"\";"")))));4)
      0
  • 1
  • 2