Formule pour séparer un texte sur un délimiteur

Dernière mise à jour le 07/11/2024
Temps de lecture : 3 minutes

Mise à jour : Une nouvelle fonction d'Excel 365, la fonction FRACTIONNER.TEXTE permet de simplifier le travail de séparer un texte par formule.

  • La méthode ci-dessous n'est à utiliser que si vous n'avez pas la fonction FRACTIONNER.TEXTE sur votre version d'Excel.
Fractionner.texte couverture

Plusieurs méthodes pour séparer un texte sur un délimiteur

Dans Excel, il existe plusieurs techniques pour séparer le contenu d'une cellule selon un délimiteur.

  • Il y a la technique avec l'outil Convertir ou plus récemment Power Query qui propose des options supplémentaires très intéressantes.
  • Mais grâce aux fonctions propagées d'Office 365 ou Excel Online, il est possible de séparer un texte sur un délimiteur avec une formule.

Nous allons partir de l'exemple de cette liste d'adresses pour illustrer la technique.

Liste des adresses à séparer sur le délimiteur virgule

Utilisation de la fonction FILTRE.XML

La fonction FILTRE.XML sert à découper un fichier XML en respectant le XPath. Houlà ? C'est quoi ce charabia ? 😯

Le format XML est un format d'écriture, peu lisible pour nous les humains, mais très efficace pour une machine. En fait, on parle de fichiers structurés quand on parle de fichiers XML comme le montre l'image ci-dessous.

Exemple fichier XML

Chaque élément d'un fichier XML est caractérisé par une balise, comme <result>, <short_name>, ... La hiérarchie entre ces balises répond à une norme appelé XPath. Donc l'astuce, c'est de construire une chaîne de caractères qui va intégrer notre adresse comme dans une structure XML comme celle-ci.

Formule pour séparer un texte sur un délimiteur

Donc dans un premier temps, nous allons construire l'adresse sous la forme d'un fichier XML.

="<root><node>"&A2&"</node></root>"

Mais cette écriture n'est pas finie car le résultat est pour l'instant le suivant :

Donc, nous allons remplacer le séparateur de notre texte, ici la virgule, par un niveau hiérarchique grâce à la fonction SUBSTITUE

="<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>"

Et toute cette écriture est à englober dans la formule FILTRE.XML avec comme XPath la balise @//node.

=FILTRE.XML("<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>";"@//node")

Formule pour separer un texte sur un delimiteur

Changer l'orientation

Seulement, juste comme cela, la formule n'est pas pratique car le résultat est renvoyé verticalement. Pour changer l'orientation, il suffit d'écrire cette formule dans la fonction TRANSPOSE.

=TRANSPOSE(FILTRE.XML("<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>";"@//node"))

Ecrire une fonction matricielle dynamique horizontalement

Fonction personnalisée avec LAMBDA

Comme la formule précédente ne peut s'écrire qu'avec Excel 365, dans cette version vous avez également la fonction LAMBDA. La fonction LAMBDA vous permet d'écrire vos propres fonctions personnalisées. Dans ce cas de figure, nous pouvons créer la fonction SEPARER.TEXTE.

Fonction LAMBDA pour séparer du texte

Et avec comme formule :

=LAMBDA(monTexte;Separateur;TRANSPOSE(FILTRE.XML(""&SUBSTITUE(monTexte;Separateur;"
")&"";"//node")))

Fonction LAMBDA pour séparer un texte en colonne dans le gestionnaire de nom

Articles liés

2 Comments

  1. CORRAO
    08/05/2022 @ 13:47

    Bonjour et merci pour votre site,

    Lorsque je rentre la formule :

    =FILTRE.XML(""&SUBSTITUE(A2;",";"")&"";"@//node")

    , je dois supprimer le @pour que cela ne m'affiche pas d'erreur ( #VALEUR) et cela s'arrête à la première virgule rencontrée dans le texte.

    Reply

    • Frédéric LE GUEN
      08/05/2022 @ 14:08

      Bonjour, une nouvelle fonction Excel est en préparation et sera bientot disponible avec Excel 365 et Excel Online pour obtenir le même résultat et plus simplement. A suivre

      Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Microsoft MVP 2024

Newsletter

1 fois par mois :
Astuces et quiz

    Nous ne vous enverrons pas de spam. Vous pouvez vous désabonner à tout moment.

    Formule pour séparer un texte sur un délimiteur

    Reading time: 3 minutes
    Dernière mise à jour le 07/11/2024

    Mise à jour : Une nouvelle fonction d'Excel 365, la fonction FRACTIONNER.TEXTE permet de simplifier le travail de séparer un texte par formule.

    • La méthode ci-dessous n'est à utiliser que si vous n'avez pas la fonction FRACTIONNER.TEXTE sur votre version d'Excel.
    Fractionner.texte couverture

    Plusieurs méthodes pour séparer un texte sur un délimiteur

    Dans Excel, il existe plusieurs techniques pour séparer le contenu d'une cellule selon un délimiteur.

    • Il y a la technique avec l'outil Convertir ou plus récemment Power Query qui propose des options supplémentaires très intéressantes.
    • Mais grâce aux fonctions propagées d'Office 365 ou Excel Online, il est possible de séparer un texte sur un délimiteur avec une formule.

    Nous allons partir de l'exemple de cette liste d'adresses pour illustrer la technique.

    Liste des adresses à séparer sur le délimiteur virgule

    Utilisation de la fonction FILTRE.XML

    La fonction FILTRE.XML sert à découper un fichier XML en respectant le XPath. Houlà ? C'est quoi ce charabia ? 😯

    Le format XML est un format d'écriture, peu lisible pour nous les humains, mais très efficace pour une machine. En fait, on parle de fichiers structurés quand on parle de fichiers XML comme le montre l'image ci-dessous.

    Exemple fichier XML

    Chaque élément d'un fichier XML est caractérisé par une balise, comme <result>, <short_name>, ... La hiérarchie entre ces balises répond à une norme appelé XPath. Donc l'astuce, c'est de construire une chaîne de caractères qui va intégrer notre adresse comme dans une structure XML comme celle-ci.

    Formule pour séparer un texte sur un délimiteur

    Donc dans un premier temps, nous allons construire l'adresse sous la forme d'un fichier XML.

    ="<root><node>"&A2&"</node></root>"

    Mais cette écriture n'est pas finie car le résultat est pour l'instant le suivant :

    Donc, nous allons remplacer le séparateur de notre texte, ici la virgule, par un niveau hiérarchique grâce à la fonction SUBSTITUE

    ="<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>"

    Et toute cette écriture est à englober dans la formule FILTRE.XML avec comme XPath la balise @//node.

    =FILTRE.XML("<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>";"@//node")

    Formule pour separer un texte sur un delimiteur

    Changer l'orientation

    Seulement, juste comme cela, la formule n'est pas pratique car le résultat est renvoyé verticalement. Pour changer l'orientation, il suffit d'écrire cette formule dans la fonction TRANSPOSE.

    =TRANSPOSE(FILTRE.XML("<root><node>"&SUBSTITUE(A2;",";"</node><node>")&"</node></root>";"@//node"))

    Ecrire une fonction matricielle dynamique horizontalement

    Fonction personnalisée avec LAMBDA

    Comme la formule précédente ne peut s'écrire qu'avec Excel 365, dans cette version vous avez également la fonction LAMBDA. La fonction LAMBDA vous permet d'écrire vos propres fonctions personnalisées. Dans ce cas de figure, nous pouvons créer la fonction SEPARER.TEXTE.

    Fonction LAMBDA pour séparer du texte

    Et avec comme formule :

    =LAMBDA(monTexte;Separateur;TRANSPOSE(FILTRE.XML(""&SUBSTITUE(monTexte;Separateur;"
    ")&"";"//node")))

    Fonction LAMBDA pour séparer un texte en colonne dans le gestionnaire de nom

    Articles liés

    Newsletter

    1 fois par mois :
    Astuces et quiz

      Nous ne vous enverrons pas de spam. Vous pouvez vous désabonner à tout moment.

      2 Comments

      1. CORRAO
        08/05/2022 @ 13:47

        Bonjour et merci pour votre site,

        Lorsque je rentre la formule :

        =FILTRE.XML(""&SUBSTITUE(A2;",";"")&"";"@//node")

        , je dois supprimer le @pour que cela ne m'affiche pas d'erreur ( #VALEUR) et cela s'arrête à la première virgule rencontrée dans le texte.

        Reply

        • Frédéric LE GUEN
          08/05/2022 @ 14:08

          Bonjour, une nouvelle fonction Excel est en préparation et sera bientot disponible avec Excel 365 et Excel Online pour obtenir le même résultat et plus simplement. A suivre

          Reply

      Laisser un commentaire

      Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

      Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.