Salut.
Trouver le niveau est relativement facile. Pour la seconde partie de ta question, je suppose que tu veux retrouver comme "libellé" la valeur se trouvant après le dernier"." de la chaîne. Idéalement, pour retrouver l'arborescence, il faut le libellé ET le libellé du niveau parent, sinon, tu ne sais pas reconstruire l'arbre.
1. Pour le niveau
Il suffit de compter le nombre de points dans la chaine. On va dans les faits compter la différence entre la longueur de la chaine et la longueur de la chaine sans les points. On obtiendra donc 0 pour le niveau 1, 1 pour le niveau 2, etc. Il suffit donc d'ajouter 1 à la différence obtenue.
=NBCAR(A2)-NBCAR(SUBSTITUE(A2;".";""))+1
2. Pour le libellé
Pour retrouver le libellé (c'est-à-dire ce qui se trouve après le dernier point), il faut utiliser une matricielle qui va permettre de "boucler" sur les caractères de la chaîne... C'est un peu tiré par les cheveux, mais ça fonctionne.
=DROITE(A2;NBCAR(A2)-MAX((LIGNE(INDIRECT("a1:a" & NBCAR(A2))))*(STXT(A2;LIGNE(INDIRECT("a1:a" & NBCAR(A2)));1)=".")))
Attention: A VALIDER en matricielle (SHIFT+CTRL+ENTER)
3. Pour le libellé parent
Pour trouver le libellé parent, il faut tester qu'il y en a un (le niveau est au moins de 2) et si c'est le cas, il faut prendre ce qui se trouve entre les avant-dernier et dernier points.
=SI(MAX((LIGNE(INDIRECT("a1:a" & NBCAR(A2))))*(STXT(A2;LIGNE(INDIRECT("a1:a" & NBCAR(A2)));1)="."))<>0;STXT(A2;GRANDE.VALEUR(((LIGNE(INDIRECT("a1:a" & NBCAR(A2))))*(STXT(A2;LIGNE(INDIRECT("a1:a" & NBCAR(A2)));1)="."));2)+1;MAX((LIGNE(INDIRECT("a1:a" & NBCAR(A2))))*(STXT(A2;LIGNE(INDIRECT("a1:a" & NBCAR(A2)));1)="."))-GRANDE.VALEUR(((LIGNE(INDIRECT("a1:a" & NBCAR(A2))))*(STXT(A2;LIGNE(INDIRECT("a1:a" & NBCAR(A2)));1)="."));2)-1);"")
Attention: A VALIDER en matricielle (SHIFT+CTRL+ENTER)
Partager