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 :

STXT de droite à gauche jusqu'à un caractère particulier


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2021
    Messages : 4
    Points : 3
    Points
    3
    Par défaut STXT de droite à gauche jusqu'à un caractère particulier
    Bonjour,

    Je voudrais extraire le texte ci dessous, mais je n'y arrive pas.

    Texte à extraire:
    {"name":"Yakuza: Like a Dragon","api_id":"2300-16348","id":16348,"length_seconds":4526,"deck":"What happens ","video_type":"Quick Looks","youtube_id":"hR1FN_6ITEE","image":"vatar\/0\/31\/3253938-yakuza_like_a_dragon_ql.jpg"}

    Source:
    [{"name":"..."},{"name":"..."},{"name":"Yakuza: Like a Dragon","api_id":"2300-16348","id":16348,"length_seconds":4526,"deck":"What happens ","video_type":"Quick Looks","youtube_id":"hR1FN_6ITEE","image":"vatar\/0\/31\/3253938-yakuza_like_a_dragon_ql.jpg"},{"name":""}, ect ]

    L'ensemble du texte est dynamique, à l'exception de "Quick Looks". J'ai réussi à extraire la partie droite du texte avec STXT, mais impossible d’extraire la partie gauche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(A1;CHERCHE("Quick Looks";A1;1);CHERCHE(",{";A1;CHERCHE("Quick Looks";A1;1)+1)-CHERCHE("Quick Looks";A1;1))
    Resultat: "Quick Looks","youtube_id":"hR1FN_6ITEE","image":"vatar\/0\/31\/3253938-yakuza_like_a_dragon_ql.jpg"}"

    Comment faire? je suis perdu

    Salutations,

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut

    Principe:
    1. On cherche la position du début de la chaine dans le json => Pos1;
    2. A partir du début +1, on cherche la fin de la chaine "}" => Pos2;
    3. On extrait une chaine de longueur Pos2-Pos1+1 à partir de Pos1.




    =STXT(A1;CHERCHE("{""name"":""Yakuza";A1);CHERCHE("}";A1;CHERCHE("{""name"":""Yakuza";A1)+1)-CHERCHE("{""name"":""Yakuza";A1)+1)
    Tu peux utiliser l'audit de formule pour décomposer le déroulement de la formule.

    NB: Exclusivité 365: Si tu as la version XL365, tu peux utiliser LET et raccourcir ta fonction, car dans la formule donnée ci-dessus, tu remarqueras que l'on calcule 3 fois la position du début de la chaine. On pourrait donc utilement la stocker dans une variable de formule grâce à LET:
    =LET(Pos;CHERCHE("{""name"":""Yakuza";A1);STXT(A1;Pos;CHERCHE("}";A1;Pos+1)-Pos+1))

    Ceci dit, je ne comprends pas pourquoi tu demandes l'extraction de droite à gauche
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Bonjour

    Je pense que la question soulevée par Bastien13R revient à chercher la position d'un caractère avant celle d'un autre caractère. Si j'ai bien compris, au final, il faut extraire toute la chaîne entre accolades autour de Quick Looks.
    Nom : cherche.png
Affichages : 304
Taille : 64,1 Ko


    Comme vu dans l'image, j'ai décomposé afin que la démarche soit bien comprise, mais on peut tout mettre en une seule formule. La chaîne à extraire se trouve en B1.

    Je cherche le nombre de caractères jusqu'à Quick Looks : =NBCAR(GAUCHE(B1;CHERCHE("Quick Looks";B1)))
    Je cherche le nombre de caractères jusqu'à Quick looks sans les { : =NBCAR(SUBSTITUE(GAUCHE(B1;CHERCHE("Quick Looks";B1));"{";""))
    J'en déduis le nombre de { jusqu'à Quick Looks : =B5-B6
    Je substitue la précédente { par un § : =SUBSTITUE(B1;"{";"§";B7)
    Donc la précédente { avant Quick Looks se trouve à la position : =CHERCHE("§";B8)
    Sur le même principe, je substitue la prochaine } après Quick Looks par un § : =SUBSTITUE(B1;"}";"§";B7)
    Donc la prochaine } se trouve à la position : =CHERCHE("§";B10)
    D'où, finalement (ouf), la chaîne à extraire : =STXT(B1;B9;B11-B9+1)

    Pour les fans, les masochistes, les malades, ou tout simplement ceux qui en ont besoin, voici le résultat en une seule formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =STXT(B1;
                CHERCHE("§";SUBSTITUE(B1;"{";"§";NBCAR(GAUCHE(B1;CHERCHE("Quick Looks";B1)))-NBCAR(SUBSTITUE(GAUCHE(B1;CHERCHE("Quick Looks";B1));"{";""))));
                CHERCHE("§";SUBSTITUE(B1;"}";"§";NBCAR(GAUCHE(B1;CHERCHE("Quick Looks";B1)))-NBCAR(SUBSTITUE(GAUCHE(B1;CHERCHE("Quick Looks";B1));"{";""))))-CHERCHE("§";SUBSTITUE(B1;"{";"§";NBCAR(GAUCHE(B1;CHERCHE("Quick Looks";B1)))-NBCAR(SUBSTITUE(GAUCHE(B1;CHERCHE("Quick Looks";B1));"{";""))))+1)

    NB : je viens de me rendre compte que l'on pouvait certainement réduire la formule pour aller chercher } après Quick Looks, mais j'ai la flemme.


    En espérant que cela convienne.

    Bonne journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Pierre


    Je ne l'avais pas compris ainsi. On va voir ce que l'auteur a voulu dire
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour Pierre,
    Citation Envoyé par Pierre Dumas Voir le message
    Je substitue la précédente { par un § : =SUBSTITUE(B1;"{";"§";B7)
    Dans ce cas, je n'utilise jamais un caractère suceptible d'exister dans une chaine standard, en général j'utilise CAR(1)
    =SUBSTITUE(B1;"{";CAR(1);B7)
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut Pierre


    Je ne l'avais pas compris ainsi. On va voir ce que l'auteur a voulu dire
    Bonjour Pierre

    Oui, je m'en étais rendu compte.
    En tout cas, cela m'a permis de progresser car je ne savais pas bien faire cela avant.
    J'aime bien répondre aux questions du forum car cela me pousse, me questionne sur des points que je n'envisageais pas et me permets de me perfectionner. C'est purement égoïste comme démarche

    Bonne journée

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    @ Pierre,


    En relisant le post initial, je pense effectivement qu'il faut raisonner comme tu le fais, puisque le demandeur parle bien de texte dynamique à l'exception de "Quick Looks"... Pour ce qui est d'apprendre, j'ai appris énormément en lisant et en répondant sur les forums (Le MPFE de Microsoft puis DVP depuis 17 ans). Et ce n'est pas égoïste puisque l'on partage nos connaissances sur le forum

    @Patrice,

    sur le choix du caractère.


    @ Tous,

    Excel 365 permet de retourner "+/- facilement" une chaine de caractères. Je l'ai montré dans ce billet qui extrait le nom d'un fichier de son chemin complet
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2021
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,

    Je tenais à vous remercier avant de rentrer dans les détails! 🙏

    @Pierre Dumas

    Oui très bien résumé. Je cherche à extraire l'ensemble du texte compris entre les {} et contenant "Quick Looks".

    Cependant, en analysant de plus prêt le fichier (j'avais oublié de le joindre désolé), j'ai pu observé qu'il pouvait y avoir plusieurs balises contenant "Quick Looks" selon les lignes, mais que la bonne commençait toujours par: {"name":"nom_du_jeu"...

    On peut retrouver le nom du jeu en colonne B.

    D'autre part j'avais vu que dans certaines lignes (5%), "Quick looks" était absent bien que la condition décrite plus haut s'appliqué.

    Serait-il possible de prendre en compte ces variables dans la formule?
    Fichiers attachés Fichiers attachés

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Pourrais-tu préciser ta version d'Excel?

    Power Query est équipé pour extraire des données d'un fichier json. Je m'orienterais vers cet outil plutôt que de tenter de créer un "parseur" par formule Excel...

    Nom : 2021-04-20_142547.png
Affichages : 281
Taille : 26,1 Ko

    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [
    {Prénom:"Alain", Nom:"Térieur",DN:"1994-05-04",Actif:true},
    {Prénom:"Julie", Nom:"Hénas",DN:"1990-07-12",Actif:true},
    {Prénom:"Jean", Nom:"Aymard",DN:"1967-12-04",Actif:true}
    ]

    Nom : 2021-04-20_143000.png
Affichages : 269
Taille : 4,8 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Re,

    +1 à Patrice aussi pour l'utilisation du caractère
    +1 à Pierre pour l'utilisation de PowerQuery.

    @Bastien13R
    Je ne peux que pousser à utiliser la solution proposée par Pierre plutôt que de réinventer la roue par formule.
    Si ce n'est pas possible, il faut mieux détailler ce qu'il y a dans le message 8.
    Dans quelles lignes il y a plusieurs fois Quick Looks ?
    Dans quelles lignes Quick Looks est absent ?
    Dans quelle colonne est la chaîne à extraire ?
    ...

    Bon après-midi

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Clic droit/gauche souris
    Par Mouse! dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/05/2013, 20h34
  2. Réponses: 4
    Dernier message: 09/10/2009, 23h31
  3. Réponses: 15
    Dernier message: 26/04/2008, 16h07
  4. [VB.NET 2005] Recherche de droite à gauche d'un carractere
    Par lezard777 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 16h02
  5. [StringTokenizer] Découpage de droite à gauche ?
    Par july dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2005, 12h02

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