Bonjour,
Formule un peu complexe et pas simple à expliquer.
Simplifions une adresse en exemple :
7 NIEPCE 75014 PARIS
Le but du jeu est de trouver la position de 5 chiffres consécutifs dans la chaine.
SUBSTITUE(A2;" ";"|") remplace les espaces par un autre caractère. Pour éviter que "01 234" soit vu comme un nombre par estnum()
LIGNE($1:$99) sert à générer une matrice des nombres de 1 à 99.
Saisis =LIGNE($1:$99) dans une cellule et valide, tu vois juste 1 comme résultat. Va en édition de la formule (le curseur dedans) et fais F9.
Là tu vois qu'en fait c'est une matrice (un ensemble de valeurs): ={1;2;3;...;98;99}.
Ca servira à se positionner dans la chaine à tous les emplacements possibles. A partir de la 6ème position par exemple on a PCE 7...
Au passage si tu sélectionnes une partie d'une formule et que tu fais F9 dessus, cette partie de formule sera évaluée. Très utile pour l'élaboration de telles formules.
Ne pas oublier de quitter par Echap sinon tu conserves cette évaluation
STXT(chaine;LIGNE($1:$99);5) extrait donc tous les ensembles 5 caractères consécutifs :
{"7|NIE";"|NIEP";"NIEPC";...;;"75014";"5014|";...}
Tu vois qu'il y en a un de particulièrement intéressant : "75014", c'est le seul à 5 chiffres et correspond au CP
*1 transforme les chaines en numérique :
({#VALEUR!;#VALEUR!;...;75014;#VALEUR!;...}
Le seul à pouvoir être converti est 75014, reste à faire le tri là dedans...
ESTNUM(...) retoune VRAI si numérique, FAUX autrement
ESTNUM(STXT(SUBSTITUE(A2;" ";"|");LIGNE($1:$99);5)*1) donne :
({FAUX;FAUX;...;VRAI;FAUX;...}
que l'on va multiplier par la matrice LIGNE($1:$99) pour avoir les positions de chaque VRAI. (FAUX=0, VRAI=1)
({FAUX;FAUX;...;VRAI;FAUX;...}*{1;2;...;10;0;...} donne :
{0;0;...;10;0;...}
Vu que théoriquement on n'a qu'on seul nombre différent de 0 on peut faire la somme de tous les éléments de la matrice pour obtenir ce seul nombre.
C'est fait par :
=SOMMEPROD({0;0;...;10;0;...}) qui donne 10 !!! Oufff
Il ne reste plus qu'à prendre les fragments de chaine qui nous intéressent par rapport à cette position.
Il ne te reste plus qu'à essayer de la refaire étape par étape....
eric