Supprimer des éléments dans une colonne, infos mélangé

tiketeur Messages postés 15 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,

J'aimerais supprimer des éléments sur une colonne en particulier contenant 10 000 lignes, sur cette colonne est référencé des noms de villes mais avec un numéro code dans la même cellule, par exemple :

A1 : ABC01 - Paris
A2 : DEF02 - Marseille

Sauf que parfois, ce fameux code n'est pas avant le nom de ville mais après :

A1000 : Nantes - ZZS001
A3000 : Toulon - 001AAZ

ces codes n'ont pas une structure définit non plus, parfois il y a des lettres avec des chiffres, parfois que des chiffres.

C'est pourquoi je sollicite votre aide car je ne sais pas trop comment traiter, je souhaite garder uniquement le nom de ville et virer les autres éléments.

Merci pour votre aide.



Configuration: Windows / Firefox 62.0
A voir également:

7 réponses

Frenchie83 Messages postés 2254 Statut Membre 339
 
Bonjour,

Si tous les noms des villes sont sous la forme Nom Propre (Première lettre en majuscule et le reste en minuscules, et les lettres des codes en majuscules)
Essayez ceci en B1 et à tirer vers le bas
=SUBSTITUE(A1;SI(OU(CODE(STXT(A1;TROUVE(" - ";A1;1)-2;1))<97;CODE(STXT(A1;TROUVE(" - ";A1;1)-2;1))>122);GAUCHE(A1;TROUVE(" - ";A1;1)+2);STXT(A1;TROUVE(" - ";A1;1);10));"")
Cdlt
0
tiketeur Messages postés 15 Statut Membre
 
Bonjour Frenchie83, merci pour la réponse,

j'avais oublié de préciser mais malheureusement, toutes les lettres (noms et les codes) sont en majuscules..
0
via55 Messages postés 14730 Statut Membre 2 750
 
Bonjour

Avec une fonction personnalisée à mettre dans un module de l'éditeur VBA
Function decoupage(plage As Range)
r = Application.WorksheetFunction.Find("-", plage.Value)
If IsNumeric(Mid(plage.Value, r - 2, 1)) Then a = Right(plage.Value, Len(plage.Value) - r - 1) Else a = Left(plage.Value, r - 2)
decoupage = a
End Function


S’utilise comme toute fonction selon la syntaxe =decoupage(cellule à traiter)

Cdlmnt
Via
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
Bonjour à tous les deux

Peut être avec une petite macro
https://www.cjoint.com/c/IBwoKvcqNWB

Cdlmnt
0
tiketeur Messages postés 15 Statut Membre
 
Bonjour et merci,

lorsque j'utilise cette macro, j'ai un message d'erreur indiquant "l'indice n'appartient pas à la sélection"
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
lorsque j'utilise cette macro, j'ai un message d'erreur indiquant "l'indice n'appartient pas à la sélection"
Avec mon fichier ou avec le tien ?
0
Frenchie83 Messages postés 2254 Statut Membre 339
 
RE,
Toujours avec une formule en B1 à valider avec CTRL + SHIFT + ENTREE (A condition qu'il y ait au moins un chiffre dans le code)

=SI(ESTNUM(STXT(GAUCHE(A1;TROUVE(" - ";A1;1));EQUIV(0;(ESTERREUR(STXT(GAUCHE(A1;TROUVE(" - ";A1;1));LIGNE(INDIRECT("1:"&NBCAR(GAUCHE(A1;TROUVE(" - ";A1;1)))));1)*1)*1);0);NBCAR(GAUCHE(A1;TROUVE(" - ";A1;1)))-SOMME((ESTERREUR(STXT(GAUCHE(A1;TROUVE(" - ";A1;1));LIGNE(INDIRECT("1:" & NBCAR(GAUCHE(A1;TROUVE(" - ";A1;1)))));1)*1)*1)))*1);STXT(A1;TROUVE(" - ";A1;1)+3;10);GAUCHE(A1;TROUVE(" - ";A1;1)))

Cdlt
0
tiketeur Messages postés 15 Statut Membre
 
Re Frenchie,

j'ai le message d'erreur suivant lorque j'applique ça : impossible d'entrer la formule spécifiée car elle utilise plus de niveaux d'imbrication que ne l'autorise le format de fichier actuel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2254 Statut Membre 339
 
Voici le fichier
https://mon-partage.fr/f/QFd44DgK/
0
tiketeur Messages postés 15 Statut Membre
 
Merci beaucoup de ton aide Frenchie mais ça ne fonctionne pas...

J'ai réutilisé ton tableau avec quelques lignes de mon fichiers pour que tu puisses voir : https://mon-partage.fr/f/QA0HeQ2O/
0
via55 Messages postés 14730 Statut Membre 2 750
 
Tu ne dis rien sur ma fonction personnalisée qui fonctionne très bien
L'as tu seulement essayée ?
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
Salut via55

un petit pb si la valeur à traiter est 02AAA - Marseille
j'ai eu la même idée (post #4), mais j'ai testé la présence d'un numérique dans toute la première demi-chaine

Bonne soirée
0
via55 Messages postés 14730 Statut Membre 2 750
 
Bonsoir ccm

Tu as raison ! Donc faisable en testant en premier tous les caractères de la 1ere demi chaîne
0
Frenchie83 Messages postés 2254 Statut Membre 339
 
Bonjour,

Correctif à la formule (dans la précédente formule je pensais qu'il y avait un espace avant et après chaque tiret)
Nouvelle formule en B1 à valider aver CTRL + SHIFT + ENTREE et à tirer vers le bas:
=SI(ESTNUM(STXT(GAUCHE(A1;TROUVE("-";A1;1)-1);EQUIV(0;(ESTERREUR(STXT(GAUCHE(A1;TROUVE("-";A1;1)-1);LIGNE(INDIRECT("1:"&NBCAR(GAUCHE(A1;TROUVE("-";A1;1)-1))));1)*1)*1);0);NBCAR(GAUCHE(A1;TROUVE("-";A1;1)-1))-SOMME((ESTERREUR(STXT(GAUCHE(A1;TROUVE("-";A1;1)-1);LIGNE(INDIRECT("1:" & NBCAR(GAUCHE(A1;TROUVE("-";A1;1)-1))));1)*1)*1)))*1);STXT(A1;TROUVE("-";A1;1)+1;30);GAUCHE(A1;TROUVE("-";A1;1)-1))

De plus, il faut activer le calcul itératif dans le paramétrage des options EXCEL,
-Cliquer sur le bouton OFFICE en haut à gauche
-Sélectionner Formules
-Dans le premier paragraphe "Mode de calcul", cocher Activer le calcul itéraif" et fixer le nombre maximal d'itérations à 1


Avec le fichier:
https://mon-partage.fr/f/XfbkVJH6/

Cdlt
0