Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
L'Adresse après le code postal
Dans le volet précédent, nous avons appris à extraire les informations situées
avant un CP dans une
adresse postale , grâce notamment à la
fonction Excel Texte.Avant . Dans cette suite logique, nous allons voir comment isoler ce qui est situé après, avec la
fonction Texte.Apres .
C'est ainsi, comme son nom l'indique et comme l'illustre la capture, Ã partir d'
adresses postales complètes, que nous sommes capables d'isoler tout ce qui se trouve
après le CP , soit la
ville .
Classeur Excel à télécharger
Pour développer cette solution, nous suggérons d'appuyer l'étude sur un
classeur Excel offrant des
adresses postales à analyser.
Nous découvrons la liste des adresses postales en
colonne B . Une rangée d'extraction est présente en
colonne E . Elle est en attente de la formule permettant d'extraire les informations situées derrière chaque
code postal .
La fonction Texte.Apres
Inévitablement, nous devons initialiser notre calcul avec la
fonction Texte.Apres . C'est ensuite, dans un
traitement récursif que nous songerons à déceler la
séquence remarquable des
cinq chiffres composant un
code postal .
Cliquer sur la première case de la grille d'extraction pour sélectionner la cellule E4 ,
Taper le symbole égal (=) pour débuter la construction de la formule,
Inscrire la fonction pour prélever après , suivie d'une parenthèse, soit : Texte.Apres( ,
Désigner la première adresse à analyser en cliquant sur sa cellule B4 ,
Puis, taper un point-virgule (;) pour passer dans l'argument du délimiteur ,
Découper la chaîne par séquences
Ce délimiteur, bien qu'immuablement constitué de
cinq chiffres , est variable d'une adresse à une autre. Nous allons donc devoir analyser chaque contenu des cellules par
groupes de cinq caractères , nous l'avons dit, dans un
raisonnement récursif . Pour cela, une fonction de découpe est nécessaire.
Inscrire la fonction de découpe , suivie d'une parenthèse, soit : Stxt( ,
Désigner de nouveau la première adresse en cliquant sur sa cellule B4 ,
Puis, taper un point-virgule (;) pour passer dans l'argument de la position de départ ,
Recherche de la séquence
Cette
position de départ dépend de l'emplacement de la séquence des cinq chiffres consécutifs. Nous devons la chercher.
Inscrire la fonction de recherche de position , suivie d'une parenthèse, soit : Equiv( ,
Taper le booléen Vrai ,
Puis, taper un point-virgule (;) pour passer dans l'argument du tableau de recherche ,
Raisonnement matriciel
Dans ce
raisonnement matriciel , ce tableau de recherche doit correspondre à des
séquences de cinq caractères successifs à tester sur la longueur de la chaîne avec la
fonction Logique EstNum . Dès qu'elle répondra par
Vrai , elle aura décelé la présence du
code postal . Elle recoupera donc la demande de la
fonction Equiv en premier argument et renverra la position de ce dernier à la
fonction Stxt pour l'isoler et le considérer comme délimiteur dans la
fonction Texte.Apres .
Inscrire la fonction de test numérique , suivie d'une parenthèse, soit : EstNum( ,
Inscrire de nouveau la fonction de découpe , suivie d'une parenthèse, soit : Stxt( ,
Désigner une fois encore la première adresse en cliquant sur sa cellule B4 ,
Puis, taper un point-virgule (;) pour passer dans l'argument de la position de départ ,
Les groupes de 5 caractères
Ce sont toutes les positions qui doivent être observées en partant de la première, jusqu'à rejoindre celle où le code postal est décelé. A partir de chaque position à incrémenter dans ce traitement récursif, si les 5 caractères qui suivent sont des chiffres, nous saurons que la séquence est trouvée. Il nous faudra la prélever pour la livrer à la
fonction Texte.Apres , en tant que
délimiteur .
Créer la matrice suivante : Ligne($1:$100) ,
De cette manière, nous partons du premier caractère de l'adresse (1) pour rejoindre le centième si d'aventure l'adresse est longue.
Tester les groupes de 5 caractères
Dans ce
raisonnement matriciel nous le répétons, à partir de chaque position de départ incrémentée, nous devons passer les
cinq caractères consécutifs qui suivent à la
fonction logique EstNum pour savoir s'ils correspondent bien à un
nombre , bref à un
code postal dans ce contexte particulier.
Taper un point-virgule (;) pour passer dans la longueur de l'analyse,
Taper le chiffre 5 pour analyser les caractères par groupes de cinq,
Fermer la parenthèse de la fonction Stxt ,
De fait nous sommes de retour dans les bornes de la
fonction EstNum . Comme cette extraction est réalisée à partir d'une chaîne de texte, nous devons forcer la conversion de ce groupe de 5 avant de le passer à la
fonction EstNum , pour savoir s'il s'agit véritablement d'une
suite de chiffres . Pour cela, il suffit de le multiplier par un.
Taper le symbole de l'étoile suivi du chiffre un, soit : *1 ,
Fermer la parenthèse de la fonction EstNum ,
De fait, nous sommes de retour dans les bornes de la
fonction Equiv . Nous devons finir de l'implémenter.
Taper un point-virgule suivi du chiffre zéro, soit : ;0 , pour réaliser une recherche exacte,
Fermer la parenthèse de la fonction Equiv ,
De fait, nous sommes de retour dans la première
fonction Stxt .
Ajouter une unité à cette position : +1 , pour partir réellement du premier chiffre du CP,
Taper un point-virgule (;) pour passer dans l'argument de la longueur de découpe ,
Taper le chiffre 5 pour prélever les 5 caractères du délimiteur , le code postal ,
Fermer la parenthèse de la fonction Stxt ,
Fermer la parenthèse de la fonction Texte.Apres ,
Enfin, valider la formule par le raccourci clavier CTRL + Entrée ,
De cette manière, nous gardons active la cellule du résultat.
La première extraction s'invite et il s'agit bien de la ville après le premier code postal. Et si vous tirez la poignée de la cellule E4 jusqu'en cellule E11, vous obtenez bien toutes les villes situées après les codes postaux respectifs.