Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Fractionner une adresse postale
En imbriquant une
fonction de recherche dans l'
argument du délimiteur de la
fonction Fractionner.Texte , il est possible de déceler la présence de
séquences remarquables , comme celle d'un
code postal , immuablement fait de
5 chiffres consécutifs .
Sur l'exemple illustré par la capture, nous travaillons sur des
adresses postales dans une première colonne. Sur la droite et dans deux colonnes distinctes, nous parvenons à extraire les
informations placées avant et après chaque code postal de chaque adresse. Et ce tour de force, nous le réalisons avec une
formule unique .
Classeur Excel à télécharger
Nous suggérons d'appuyer les travaux sur un
classeur Excel abritant ces
adresses postales à décortiquer.
Nous retrouvons bien les adresses à sonder, en
colonne B . Et c'est une grille d'extraction qui se propose entre les
colonnes E et F pour dissocier les informations placées
avant et après le code postal de chacune.
Initier la découpe
Avant de songer à déceler la présence de la
séquence remarquable représentée par le
code postal , nous devons
amorcer la découpe de l'adresse . Pour cela, nous avons naturellement besoin de la
fonction Fractionner.Texte .
Sélectionner la première case de la grille d'extraction en cliquant sur sa cellule E4 ,
Taper le symbole égal (=) pour débuter la construction de la formule,
Inscrire la fonction de découpe , suivie d'une parenthèse, soit : Fractionner.Texte( ,
Désigner la première adresse à découper en cliquant sur sa cellule B4 ,
Puis, taper un point-virgule (;) pour passer dans l'argument du délimiteur ,
Délimiter sur le code postal
Cette fois, le délimiteur n'est pas un caractère seul. Il s'agit d'une
séquence de cinq chiffres représentant le
code postal . Donc, nous devons isoler ce dernier dans la chaîne à l'aide de la
fonction Stxt .
Inscrire l'autre fonction de découpe , suivie d'une parenthèse, soit : Stxt( ,
Désigner l'adresse à découper en cliquant de nouveau sur la cellule B4 ,
Puis, taper un point-virgule (;) pour passer dans l'argument de la position de départ ,
Position du code postal
Cette position dépend de l'
emplacement variable du code postal dans la chaîne. L'astuce consiste, dans un
raisonnement matriciel engageant la
fonction Equiv , à déceler la présence de
5 chiffres successifs .
Inscrire la fonction de recherche de position , suivie d'une parenthèse, soit : Equiv( ,
Taper alors le booléen Vrai ,
Dans cet usage à contre-emploi, nous allons exploiter cette
fonction Equiv pour trouver la première position à partir de laquelle, un
test logique qu'il nous reste à construire, répond favorablement. Ce
test logique consiste à vérifier, dans ce
raisonnement récursif , que la séquence des
cinq caractères suivants est bien numérique. Il suffit qu'une lettre de l'alphabet soit intercalée pour que le test échoue. La fonction qui permet de vérifier qu'une donnée est bien un nombre est la
fonction logique EstNum .
Taper un point-virgule (;) pour passer dans l'argument de l'élément de recherche,
Inscrire la fonction de test numérique , suivie d'une parenthèse, soit : EstNum( ,
Il est question de tester
cinq caractères successifs , en partant de la première position jusqu'à rejoindre la dernière. C'est seulement lorsque la séquence numérique sera décelée que la
fonction Equiv répondra favorablement pour retourner la
position du code postal à utiliser comme
délimiteur dans la
fonction Fractionner Texte . Pour analyser ces
cinq caractères successifs , les uns après les autres, nous avons une fois encore besoin de dégainer la
fonction Stxt de découpe .
Inscrire de nouveau l'autre fonction de découpe, soit : Stxt( ,
Désigner l'adresse à analyser pour dénicher le code postal, en cliquant sur sa cellule B4 ,
Taper un point-virgule (;) pour passer dans l'argument de la position de départ ,
Dans ce
raisonnement matriciel , c'est elle qui doit varier du premier au dernier, pour analyser les caractères par groupes de cinq. Grâce à la
fonction Ligne , nous pouvons construire des
matrices de positions .
Inscrire la fonction Ligne , suivie d'une parenthèse ouvrante, soit : Ligne( ,
Puis, créer la matrice suivante, sans oublier les dollars : $1:$100 ,
Nous partons du principe que les adresses peuvent être longues. Nous prévoyons donc large pour une étude récursive et progressive sur au moins 100 caractères.
Fermer la parenthèse de la fonction Ligne ,
Taper un point-virgule (;) pour passer dans l'argument de la longueur de découpe,
Naturellement, taper le chiffre 5 pour analyser les caractères par groupes de cinq ,
Fermer la parenthèse de la fonction Stxt ,
Puis, forcer la conversion numérique avec la multiplication par 1, soit : *1 ,
En effet, les caractères assemblés ainsi analysés sont considérés comme des lettres par défaut. Si la multiplication par 1 réussit, cela ravira la
fonction EstNum qui répondra favorablement, pour que la
fonction Equiv déduise la
position de départ du code postal qu'il est question d'utiliser comme
délimiteur pour le
fractionnement de l'adresse .
Fermer la parenthèse de la fonction EstNum ,
De fait, nous sommes de retour dans les bornes de la
fonction Equiv .
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 les bornes de la première
fonction Stxt .
Ajouter une unité à cette position, soit : +1 ,
De cette manière, nous réajustons le repère sur le premier des cinq chiffres trouvés pour le code postal. Code postal fait de cinq chiffres qu'il nous faut maintenant extraire pour le fournir comme délimiteur à la
fonction Fractionner.Texte .
Taper un point-virgule (;) pour passer dans l'argument du nombre de caractères,
Inscrire le chiffre 5 pour prélever les cinq chiffres du code postal décelé,
Fermer la parenthèse de la fonction Stxt ,
Puis, fermer la parenthèse de la fonction Fractionner.Texte ,
Enfin, valider la formule par le raccourci clavier CTRL + Entrée ,
De cette façon, nous conservons active la cellule du résultat. Et comme vous pouvez le constater avec plaisir, nous avons bien réussi à extraire les informations situées avant et après le code postal de la première adresse.
Maintenant, si vous cliquez et glissez la poignée de la
cellule E4 jusqu'en
cellule E11 , vous constatez que ce sont toutes les adresses postales que nous avons réussi à fractionner de manière à extirper ce qui se situe avant et après le code postal.