Récupérer des données dans des cellules non uniformes


#1

Bonjour à tous,

je me présente je m’appelle Chris et je suis nouveau sur le Forum :slight_smile:

étant débutant sur excel mais très curieux, j’ai cherché une solution à mon problème mais malheureusement c’est trop complexe pour moi…

voici mon problème :

sur la colonne A, mes cellules sont rempli par des adresses. se sont des adresses complètes et très différentes d’une ligne à l’autre : numéro de rue, rue, complément d’adresse, code postal et ville.

la seule récurrence c’est que à la fin de chaque cellule vous avez code postal (toujours 5 chiffres) puis la ville.

le premier problème c’est que la ville s’écrit parfois en un mot parfois en plusieurs…

exemple :

345 rue des charrettes 34210 Aigne
22 bis avenue Pompidou BAT. E 61200 Aunou le faucon
10 rue Leclerc CENTRE n°427 61340 Berd huis

je veux récupérer 3 choses pour mettre en colonnes B,C et D :

C-le code postal
D-la ville
B-le reste (adresse)

l’idée,je pense, (à moins que se soit plus simple et que je complique les choses pour rien) c’est de pouvoir récupérer en partant de la droite quelque chose du genre :

colonne B pour l’adresse : “affiche uniquement l’intégralité du texte qui se trouve après (en partant du principe qu’on part de la droite) les 5 chiffres (ou le nombre a 5 chiffres) qui se trouvent eux même après le texte de droite (uniquement lettres et espace(s) si mots composés)”

colonne C code postal : “affiche uniquement les 5 premiers chiffres que tu trouves en partant de la droite”

colonne D pour la ville : “affiche uniquement le texte que tu trouve à droite avant de rencontrer le premier chiffre en partant de droite”

colonne B idée bis : “supprime uniquement le texte de droite jusqu’au 5eme chiffre compris)”

Merci beaucoup pour votre aide !


Transformer une liste d'adresses texte en database
#2

Hello
Je ne suis pas sur d’avoir bien compris, aurais tu un fichier à nous montrer stp?

A bientôt


#3

Bonjour @DocteurExcel,

Content de ton retour, j’espère que cette absence était dû aux vacances :wink: .

Je n’ais pas répondu à @psy4 ici, puisque j’ai déjà répondu à la même question au mot près dans un autre forum.

Et voici ce que j’ai proposé:
En “A2” l’adresse complète:

En “B2”

=SIERREUR(GAUCHE(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)-5);"")

En “C2”

=SIERREUR(STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)-4;5);"")

En “D2”

=SIERREUR(STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)+2;99);"")

Ce sont 3 formules matricielles

@psy4 m’a répondu " merci 1000 fois !!! ça fonctionne ! "

Toutefois un autre intervenant a trouvé des formules non matricielles que j’ai complété avec la fonction “SIERREUR”

En “B2”

=SIERREUR(GAUCHE(A2;NBCAR(A2)-(NBCAR(D2)+NBCAR(E2)+1));"")

En “C2”

=SIERREUR(DROITE(GAUCHE(A2;(NBCAR(A2)-NBCAR(E2)-1));5);"")

En “D2”

=SIERREUR(DROITE(A2;NBCAR(A2)-CHERCHE("§";SUBSTITUE(A2;"0";"§";NBCAR(A2)-NBCAR(SUBSTITUE(A2;"0";""))))-1);"")

Voilà, voilà, espérant que cela serve à d’autre ici sur ce forum.

Cordialement.