Extraction de texte entre 2 valeurs numériques
Résolu/Fermé
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
-
28 oct. 2014 à 10:44
nihcoc Messages postés 192 Date d'inscription dimanche 9 mars 2014 Statut Membre Dernière intervention 28 février 2023 - 30 oct. 2014 à 14:38
nihcoc Messages postés 192 Date d'inscription dimanche 9 mars 2014 Statut Membre Dernière intervention 28 février 2023 - 30 oct. 2014 à 14:38
A voir également:
- Extraction de texte entre 2 valeurs numériques
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Word numéro de page 1/2 - Guide
- Convertisseur récupération de texte - Guide
- 2 ecran pc - Guide
10 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
28 oct. 2014 à 11:16
28 oct. 2014 à 11:16
Bonjour,
Par macro avec une fonction personnalisée.
Création :
Depuis le classeur concerné, tapez Alt + F11, Insertion/Module, copiez-collez y ce code :
Utilisation :
Dans la feuille concernée, tapez la formule :
=Extrait_Adresse(A1)
où A1 = Mr Dupont henri 13 rue montesquieu 56238 lorient.
Par macro avec une fonction personnalisée.
Création :
Depuis le classeur concerné, tapez Alt + F11, Insertion/Module, copiez-collez y ce code :
Function Extrait_Adresse(Cel As Range) As String Dim i As Integer, deb As Integer, fin As Integer i = 0 deb = 0 Do While i < Len(Cel.Value) i = i + 1 If IsNumeric(Mid(Cel.Value, i, 1)) And deb = 0 Then Do While IsNumeric(Mid(Cel.Value, i, 1)) i = i + 1 Loop deb = i ElseIf IsNumeric(Mid(Cel.Value, i, 1)) And deb > 0 Then fin = i Exit Do End If Loop Extrait_Adresse = Trim(Mid(Cel.Value, deb, fin - deb)) End Function
Utilisation :
Dans la feuille concernée, tapez la formule :
=Extrait_Adresse(A1)
où A1 = Mr Dupont henri 13 rue montesquieu 56238 lorient.
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
28 oct. 2014 à 11:54
28 oct. 2014 à 11:54
Bonjour !
Je te remercie pour la macro,mais j'utilise une vieille version et ça ne marche pas.
j'aurais préféré une formule.
Merçi
Je te remercie pour la macro,mais j'utilise une vieille version et ça ne marche pas.
j'aurais préféré une formule.
Merçi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
28 oct. 2014 à 12:09
28 oct. 2014 à 12:09
Cela me semble infaisable par formule. En tout cas ce n'est pas de mon niveau...
,mais j'utilise une vieille version et ça ne marche pas.
Vieille version ou pas, je ne vois rien qui pourrait ne pas fonctionner...
Dire « Ça ne marche pas » ou « Il y a une erreur », cela n'avance en rien.
Donnez le comportement observé et/ou le message d'erreur !
,mais j'utilise une vieille version et ça ne marche pas.
Vieille version ou pas, je ne vois rien qui pourrait ne pas fonctionner...
Dire « Ça ne marche pas » ou « Il y a une erreur », cela n'avance en rien.
Donnez le comportement observé et/ou le message d'erreur !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 oct. 2014 à 12:26
28 oct. 2014 à 12:26
Bonjour,
Cette formule de Jacques Boisgontier te renvoie "Monstesqieu"
http://boisgontierjacques.free.fr/
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule
A mon avis avec une formule comme ça, il vaut mieux employer une macro comme te l'a proposé Pijaku et je te laisse le soin de retrouver "rue montesqieu" ;o)
Cette formule de Jacques Boisgontier te renvoie "Monstesqieu"
http://boisgontierjacques.free.fr/
=GAUCHE(STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0)+7;999);CHERCHE(" ";STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0)+7;999))-1)
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule
A mon avis avec une formule comme ça, il vaut mieux employer une macro comme te l'a proposé Pijaku et je te laisse le soin de retrouver "rue montesqieu" ;o)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
28 oct. 2014 à 14:28
28 oct. 2014 à 14:28
Salut,
Les formules "paracétamol" de Jacques Boisgontier...
Il vaut peut être mieux utiliser une macro, notamment pour le temps d'exécution sur de nombreuses lignes...
A voir.
A+
Les formules "paracétamol" de Jacques Boisgontier...
Il vaut peut être mieux utiliser une macro, notamment pour le temps d'exécution sur de nombreuses lignes...
A voir.
A+
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 247
29 oct. 2014 à 01:29
29 oct. 2014 à 01:29
Dis-nous, nihcoc, qui saisit ces adresses ? toi-même ? un collège ? elles sont extraites d'une base de données ? elles sont téléchargées sur internet ?
En effet je pense que la solution à ton problème passe par la structure et la syntaxe de tes données, parce que si toutes tes adresses se présentent ainsi sans ponctuations, il n'existe pas de formule magique, qui pourra traiter à la fois
En effet je pense que la solution à ton problème passe par la structure et la syntaxe de tes données, parce que si toutes tes adresses se présentent ainsi sans ponctuations, il n'existe pas de formule magique, qui pourra traiter à la fois
Mr Dupont henri 13 rue montesquieu 56238 lorient
Mr Dupont jean impasse montesquieu 56238 lorient
Mr Dupont henri 13 rue du 18 juin 56238 lorient
Mr Dupont henri 13 arsenal militaire de lorient
Mr Dupont BP 854 56238 lorient
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 247
29 oct. 2014 à 23:56
29 oct. 2014 à 23:56
Je voulais dire un "collègue", bien entendu ! pas un "collège" ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 06:23
29 oct. 2014 à 06:23
Bonjour
La structure n'a rien a voir, ce que je cherche en résumé c'est a extraire la partie qui se trouve entre 2 bornes numériques,en l'occurrence dans l'adresse que j'ai mis la partie qui se trouve entre le N° de la rue et le code postal.
soit " rue Montesquieu "
ceci est un exemple.
Merçi
La structure n'a rien a voir, ce que je cherche en résumé c'est a extraire la partie qui se trouve entre 2 bornes numériques,en l'occurrence dans l'adresse que j'ai mis la partie qui se trouve entre le N° de la rue et le code postal.
soit " rue Montesquieu "
ceci est un exemple.
Merçi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 oct. 2014 à 07:43
29 oct. 2014 à 07:43
Salut,
Raymond a entièrement raison dans le cas énoncé de ton sujet.
Si ce n'est qu'un exemple, tu aurais du nous dire ce que tu cherches à faire dès le début.
Donc, tu peux reformuler ta question en nous donnant 4-5 exemples, ce serait bienvenu.
Raymond a entièrement raison dans le cas énoncé de ton sujet.
Si ce n'est qu'un exemple, tu aurais du nous dire ce que tu cherches à faire dès le début.
Donc, tu peux reformuler ta question en nous donnant 4-5 exemples, ce serait bienvenu.
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 08:20
29 oct. 2014 à 08:20
bonjour
Je m'excuse si la question n'était pas claire,
je cherche a récupérer par formule la partie qui se trouve entre 2 bornes numériques,en l'occurrence dans l'adresse que j'ai mis la partie qui se trouve entre le N° de la rue et le code postal.
Mr Dupont jean 43 rue léon blum 44635 nancy = rue léon blum
ou
0012 Pradelles (Haute loire-43) = Pradelles (Haute loire-
ou
le 12 du mois je travaille a 15 heures = du mois je travaille a
J'espère avoir été clair.
Merçi
Je m'excuse si la question n'était pas claire,
je cherche a récupérer par formule la partie qui se trouve entre 2 bornes numériques,en l'occurrence dans l'adresse que j'ai mis la partie qui se trouve entre le N° de la rue et le code postal.
Mr Dupont jean 43 rue léon blum 44635 nancy = rue léon blum
ou
0012 Pradelles (Haute loire-43) = Pradelles (Haute loire-
ou
le 12 du mois je travaille a 15 heures = du mois je travaille a
J'espère avoir été clair.
Merçi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 oct. 2014 à 09:23
29 oct. 2014 à 09:23
Donc, et pour être parfaitement complet, dans tes chaines de caractères, il n'y a jamais plus de deux "bornes" numériques?
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 09:45
29 oct. 2014 à 09:45
bonjour
il n'y a jamais plus de deux "bornes" numériques?
exact
il n'y a jamais plus de deux "bornes" numériques?
exact
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 oct. 2014 à 10:30
29 oct. 2014 à 10:30
Extraction de la chaine de caractères comprise entre les deux premières bornes numériques :
Suivant la formule de Boisgontier donnée précédemment par Michel_m...
Merci de suivre toutes les étapes de construction de ladite formule pour pas que ducroq y se soit...
Nota : toutes ces formules sont à valider par Ctrl+Shift+Entrée (formules matricielles)
Soit la chaîne de caractères en A2
1- trouver la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
2- recherche de l'espace suivant ce caractère :
===> Cette étape est indispensable pour déterminer le nombre de caractères numériques constituant la première borne. Si nous n'avons pas ici un point commun à toutes les chaînes (espace ou autre), c'est fichu!
=CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1
3- Emplacement de cet espace dans la chaine initiale :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1
4- Extraction de la partie à droite de cet espace :
=STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999)
5- Emplacement du premier caractère numérique après cet espace :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)
6- Nombre de caractères à extraire :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)-1
7- Formule finale :
=STXT(A2;CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($2:$256);1)));0);999);EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($2:$256);1)));0));EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)-1)
Je maintiens toutefois ce qui a été dit : il vaut mieux employer une macro
PS : Il existe des écritures différentes, notamment au niveau de la recherche de l'espace (points 2 & 3). Cependant, lors de mes essais, j'ai été confronté à des bizarreries dans les résultats. Selon les chaines initiales, les fonctions retournaient généralement le bon résultat, mais pas de manière systématique...
Exemple pour le point 3 :
=CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999);EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0))
fonctionne avec :
0012 Pradelles (Haute loire-43) = Pradelles (Haute loire-
le 12 du mois je travaille a 15 heures = du mois je travaille a
mais pas avec :
Mr Dupont jean 43 rue léon blum 44635 nancy = rue léon blum
Les curiosités d'Excel ou un défaut dù à ma vue ou à mon cerveau embrouillé...
Bonne journée à tous.
Suivant la formule de Boisgontier donnée précédemment par Michel_m...
Merci de suivre toutes les étapes de construction de ladite formule pour pas que ducroq y se soit...
Nota : toutes ces formules sont à valider par Ctrl+Shift+Entrée (formules matricielles)
Soit la chaîne de caractères en A2
1- trouver la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
2- recherche de l'espace suivant ce caractère :
===> Cette étape est indispensable pour déterminer le nombre de caractères numériques constituant la première borne. Si nous n'avons pas ici un point commun à toutes les chaînes (espace ou autre), c'est fichu!
=CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1
3- Emplacement de cet espace dans la chaine initiale :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1
4- Extraction de la partie à droite de cet espace :
=STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999)
5- Emplacement du premier caractère numérique après cet espace :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)
6- Nombre de caractères à extraire :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)-1
7- Formule finale :
=STXT(A2;CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($2:$256);1)));0);999);EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($2:$256);1)));0));EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)+CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999))-1;999);LIGNE($2:$256);1)));0)-1)
Je maintiens toutefois ce qui a été dit : il vaut mieux employer une macro
PS : Il existe des écritures différentes, notamment au niveau de la recherche de l'espace (points 2 & 3). Cependant, lors de mes essais, j'ai été confronté à des bizarreries dans les résultats. Selon les chaines initiales, les fonctions retournaient généralement le bon résultat, mais pas de manière systématique...
Exemple pour le point 3 :
=CHERCHE(" ";STXT(A2;EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0);999);EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0))
fonctionne avec :
0012 Pradelles (Haute loire-43) = Pradelles (Haute loire-
le 12 du mois je travaille a 15 heures = du mois je travaille a
mais pas avec :
Mr Dupont jean 43 rue léon blum 44635 nancy = rue léon blum
Les curiosités d'Excel ou un défaut dù à ma vue ou à mon cerveau embrouillé...
Bonne journée à tous.
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 10:57
29 oct. 2014 à 10:57
Bonjour!
j'ai rentré les formules que tu me l'a écrit,la 5 et la 6 ,je ne peut pas les valider
et la 7ème , la formule est trop longue.
j'utilise excel 95.
je laisse tomber
Merci pour tout.
j'ai rentré les formules que tu me l'a écrit,la 5 et la 6 ,je ne peut pas les valider
et la 7ème , la formule est trop longue.
j'utilise excel 95.
je laisse tomber
Merci pour tout.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 oct. 2014 à 13:33
29 oct. 2014 à 13:33
je laisse tomber
Ben non, il y a peut être une solution.
En passant par des cellules intermédiaires.
Mais pour cela, il nous faudrait savoir pourquoi tu ne peux pas valider les étapes 5 et 6... Formules trop longues?
Ben non, il y a peut être une solution.
En passant par des cellules intermédiaires.
Mais pour cela, il nous faudrait savoir pourquoi tu ne peux pas valider les étapes 5 et 6... Formules trop longues?
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 15:13
29 oct. 2014 à 15:13
Bonjour
je pourrais t'envoyer le classeur, mais je ne sais comment faire.
la 5 et la 6 ne sont pas trop longue.
je pourrais t'envoyer le classeur, mais je ne sais comment faire.
la 5 et la 6 ne sont pas trop longue.
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
29 oct. 2014 à 15:31
29 oct. 2014 à 15:31
Bonjour,
Mon stock de paracétamol ne sera pas périmé.
Sur 2003 la 5 et la 6 ne passent pas. Et, plus grave, je n'ai pas trouvé pourquoi !
La 7 semble s'arrêter à ~200 caractères.
J'avais établi une formule, mais elle utilisait le fait que le code postal a en général 5 chiffres. J'arrivais au même genre de blocage qui ne se résolvait qu'avec une cellule intermédiaire. J'ai capitulé après quelques échecs à nommer la formule.
J'avais des formules un peu plus courtes pour les points 3 et 4, mais je n'ai pas vérifié tous les cas.
Pour la macro je me demande si en 95 le vba n'était pas encore à moitié en français ? Ma mémoire n'est pas assez fidèle pour l'affirmer.
Le plus important: félicitation à pijaku pour la clarté de son explication au #15
Mon stock de paracétamol ne sera pas périmé.
Sur 2003 la 5 et la 6 ne passent pas. Et, plus grave, je n'ai pas trouvé pourquoi !
La 7 semble s'arrêter à ~200 caractères.
J'avais établi une formule, mais elle utilisait le fait que le code postal a en général 5 chiffres. J'arrivais au même genre de blocage qui ne se résolvait qu'avec une cellule intermédiaire. J'ai capitulé après quelques échecs à nommer la formule.
J'avais des formules un peu plus courtes pour les points 3 et 4, mais je n'ai pas vérifié tous les cas.
Pour la macro je me demande si en 95 le vba n'était pas encore à moitié en français ? Ma mémoire n'est pas assez fidèle pour l'affirmer.
Le plus important: félicitation à pijaku pour la clarté de son explication au #15
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 15:44
29 oct. 2014 à 15:44
Bonjour
effectivement dans la version 95 le VBA est en français ou en anglais,j'ai testé les 2 possibilités,la macro proposé ultérieurement ne marche pas, et les cellules s'arrête a 255 caractères.
merçi quand même
effectivement dans la version 95 le VBA est en français ou en anglais,j'ai testé les 2 possibilités,la macro proposé ultérieurement ne marche pas, et les cellules s'arrête a 255 caractères.
merçi quand même
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
29 oct. 2014 à 15:52
29 oct. 2014 à 15:52
Loop et Do While n'avaient peut-être pas cours ?
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
29 oct. 2014 à 18:26
29 oct. 2014 à 18:26
Une seule colonne auxiliaire suffit pour que les formules proposées par pijaku puissent être validées sur Xl2003.
En B2....
1- trouver la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
https://www.cjoint.com/?3JDszIGXsrN
En B2....
1- trouver la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
https://www.cjoint.com/?3JDszIGXsrN
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
30 oct. 2014 à 07:46
30 oct. 2014 à 07:46
Salut,
Je reviens pour deux choses :
1- Le bug que tu observes peut être résolu grâce à la fonction SUPPRESPACE()
2- Une grande simplification des formules serait de passer par deux colonnes intermédiaires et d'utiliser DROITE et GAUCHE au lieu de STXT.
En A2 : Mr Dupont henri 1223 rue montesquieu 56238 lorient.
En B2 : Emplacement de la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
Explications sur cette formule : By CrocroSoft
En C2 : Extrait de la sous-chaine située à droite du premier espace après la première occurrence numérique en supprimant un éventuel espace récalcitrant en première position :
=SUPPRESPACE(DROITE(A2;NBCAR(A2)-($B2+CHERCHE(" ";STXT(A2;$B2;999))-1)))
En D2 : La formule finale qui extrait la partie gauche de cette sous-chaîne, jusqu'à la première occurrence numérique de cette sous-chaîne, en supprimant l'éventuel espace final :
=SUPPRESPACE(GAUCHE(C2;EQUIV(VRAI;ESTNUM(CNUM(STXT(C2;LIGNE($1:$255);1)));0)-1))
Ne reste plus qu'à masquer les colonnes B et C...
Je reviens pour deux choses :
1- Le bug que tu observes peut être résolu grâce à la fonction SUPPRESPACE()
2- Une grande simplification des formules serait de passer par deux colonnes intermédiaires et d'utiliser DROITE et GAUCHE au lieu de STXT.
En A2 : Mr Dupont henri 1223 rue montesquieu 56238 lorient.
En B2 : Emplacement de la première occurrence numérique dans la chaîne :
=EQUIV(VRAI;ESTNUM(CNUM(STXT(A2;LIGNE($1:$255);1)));0)
Explications sur cette formule : By CrocroSoft
En C2 : Extrait de la sous-chaine située à droite du premier espace après la première occurrence numérique en supprimant un éventuel espace récalcitrant en première position :
=SUPPRESPACE(DROITE(A2;NBCAR(A2)-($B2+CHERCHE(" ";STXT(A2;$B2;999))-1)))
En D2 : La formule finale qui extrait la partie gauche de cette sous-chaîne, jusqu'à la première occurrence numérique de cette sous-chaîne, en supprimant l'éventuel espace final :
=SUPPRESPACE(GAUCHE(C2;EQUIV(VRAI;ESTNUM(CNUM(STXT(C2;LIGNE($1:$255);1)));0)-1))
Ne reste plus qu'à masquer les colonnes B et C...
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
30 oct. 2014 à 10:31
30 oct. 2014 à 10:31
Merçi a toi pijaku
J'ai rentré les formules ,c'est impécable et c'est plus simple .
Merçi c'est très sympa
J'ai rentré les formules ,c'est impécable et c'est plus simple .
Merçi c'est très sympa
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
30 oct. 2014 à 14:07
30 oct. 2014 à 14:07
Bonjour,
Autre solution avec une seule colonne auxiliaire.
en partant de =STXT(A2;pt3;pt6) et en remplaçant pt3 et pt 6 par les expressions de leurs formules:
=STXT(A2;$B2+CHERCHE(" ";STXT(A2;$B2;999))-1;EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;$B2+CHERCHE(" ";STXT(A2;$B2;999))-1;999);LIGNE($2:$256);1)));0)-1)
Autre solution avec une seule colonne auxiliaire.
en partant de =STXT(A2;pt3;pt6) et en remplaçant pt3 et pt 6 par les expressions de leurs formules:
=STXT(A2;$B2+CHERCHE(" ";STXT(A2;$B2;999))-1;EQUIV(VRAI;ESTNUM(CNUM(STXT(STXT(A2;$B2+CHERCHE(" ";STXT(A2;$B2;999))-1;999);LIGNE($2:$256);1)));0)-1)
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
30 oct. 2014 à 14:38
30 oct. 2014 à 14:38
Bonjour
c'est encore mieux Bravo a vous et merçi
c'est encore mieux Bravo a vous et merçi
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 19:08
29 oct. 2014 à 19:08
C'était presque parfait, seul problème la dernière formule est trop longue et donc ne rentre pas.(270 caractères) et je ne peux en rentrer que 255.
Merçi
Merçi
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
29 oct. 2014 à 19:45
29 oct. 2014 à 19:45
bonsoir!
en fait j'ai repris ton classeur que j'ai ouvert avec calc.
je lai enregistrer ensuite en excel 95 et ça marche.
je ne comprend pas pourquoi.
en tout cas merçi a tout le monde , c'est super
en fait j'ai repris ton classeur que j'ai ouvert avec calc.
je lai enregistrer ensuite en excel 95 et ça marche.
je ne comprend pas pourquoi.
en tout cas merçi a tout le monde , c'est super
28 oct. 2014 à 16:33
Je suis désolé mais la fonction me renvoie ça #NOM? ,
ou est le problème ,je n'en sait rien.
28 oct. 2014 à 16:37
Je suis désolé mais la fonction me renvoie ça #NOM? ,
Pas chez moi.
ou est le problème ,je n'en sait rien.
Soit dans tes données, soit dans l'énoncé de ton problème.
28 oct. 2014 à 17:55