L.Fractionner.Texte pour Excel 365 et 2021

Petite fonction du jour : comment séparer en ligne et en colonnes.
Sur Excel 365 Insider, ca se fait en une seule formule (fractionner.texte), mais en attendant, voici ce qui devrait faire l'affaire pour 365 (et 2021, je pense) :
Attention, il faut exactement le bon nombre de séparateur dans les données initiales (voir copie d'écran)

=LET(
plage;A1:A3;
DelimiteurL;".";
DelimiteurC;",";
resultat1;FILTRE.XML("<b><a>"&SUBSTITUE(JOINDRE.TEXTE(DelimiteurL;;plage);DelimiteurL;"</a><a>")&"</a></b>";"//a");
INDEX(TRANSPOSE(
FILTRE.XML("<b><a>"&SUBSTITUE(JOINDRE.TEXTE(DelimiteurC;;resultat1);DelimiteurC;"</a><a>")&"</a></b>";"//a")
);
SEQUENCE(LIGNES(resultat1);
NBCAR(INDEX(resultat1;1;1))-NBCAR(
SUBSTITUE(INDEX(resultat1;1;1);DelimiteurC;)
)+1)))

et avec une Lambda (pour plus d'informations sur la création de Lambda, c'est par ici), par exemple L.FRACTIONNER.TEXTE :

=LAMBDA(plage;DelimiteurC;DelimiteurL; LET(resultat1;FILTRE.XML("<b><a>"&SUBSTITUE(JOINDRE.TEXTE(DelimiteurL;;plage);DelimiteurL;"</a><a>")&"</a></b>";"//a"); INDEX(TRANSPOSE( FILTRE.XML("<b><a>"&SUBSTITUE(JOINDRE.TEXTE(DelimiteurC;;resultat1);DelimiteurC;"</a><a>")&"</a></b>";"//a") ); SEQUENCE(LIGNES(resultat1); NBCAR(INDEX(resultat1;1;1))-NBCAR( SUBSTITUE(INDEX(resultat1;1;1);DelimiteurC;) )+1))))

Un peu de VBA

En VBA, comment inverser deux textes séparés par un caractère?

Il y a pleins d'autres solutions, mais j'aime bien celle-là d'un point de vue pédagogique.

Soit un texte du style R21_TOTO

On veut le transformer en TOTO_R21 par VBA

On peut donc faire l'opération suivante

Sub InverserTexte()
    Dim sTexte As String
    sTexte = "R21_TOTO"

    sTexte = Split(sTexte, "_")(1) & "_" & Split(sTexte, "_")(0)

    MsgBox sTexte
End Sub

L'idée est de scinder (split) le texte en un tableau, puis de reprendre l'élément 1 du tableau et de le concaténer avec l'élément 0 du tableau.

Protéger la cellule après saisie

Voici un développement complémentaire par rapport à un post de 2016 🙂

L'idée est d'ajouter un code qui permet de verrouiller une cellule après saisie, mais aussi d'ajouter un paramètre qui permet de désactiver le verrouillage pour modifier le classeur.

Voici le fichier:

Note : j'ai aussi ajouté (en plus de la vidéo), la dé-protection de la feuille lorsqu'on clique sur le bouton de déverrouillage.

Et la vidéo