extraire 2 chaines de nombre d'une cellule

Bene25

XLDnaute Nouveau
Bonjour,

J'ai un fichier récupérer d'un PDF qui m'affiche toutes les données ( textes et chiffres) dans une même cellule. J'ai essayé d'extraire les valeurs numériques via cette formule GAUCHE(C5;NBCAR(C5)-TROUVE(" ";C5)) sans succès.

Cette formule est-elle la bonne? Si oui ou se trouve mon erreur, si non quelle formules faut il utiliser?

Merci d'avance aux contributeurs

cf.fichier joint
 

Pièces jointes

  • exemple.xlsx
    29.8 KB · Affichages: 53
  • exemple.xlsx
    29.8 KB · Affichages: 72
  • exemple.xlsx
    29.8 KB · Affichages: 71

david84

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

Bonjour David,

Merci ça fonctionne pour la 2eme chaine numérique mais pas pour la 1ere, la formule extrait uniquement la seconde chaine de nombre.

merci de votre retour
Et tu veux les 2 chaînes dans une seule cellule ou dans 2 cellules différentes ?
Et as-tu cherché à comprendre la formule ? Parce que si c'est le cas il est préférable de poser des questions sur ce que tu ne comprends pas plutôt que je te livre une réponse qui te dépannera sur le moment mais qui ne t'apportera rien dans la compréhension d'Excel...
A+
 

Bene25

XLDnaute Nouveau
Re : extraire 2 chaines de nombre d'une cellule

je souhaite avoir 2 cellules pour les 2 chaînes numériques

oui j'ai bien cherché à comprendre la formule, j'ai remplacé le "+1" par "-5" pour extraire la 1ere chaine de caractère mais je n'arrive pas à obtenir le résultat dans 2 cellules différentes.
Après ce que je ne comprends pas à quoi correspondent les "/":confused:

voila:)
 

david84

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

Après ce que je ne comprends pas à quoi correspondent les "/"
Explique-moi ce que tu comprends de cette partie :
Code:
SUBSTITUE(C5;" ";"/";NBCAR(C5)-NBCAR(SUBSTITUE(C5;" ";"")))
A ton avis qu'est ce que je cherche à obtenir ? Utilise l'aide d'Excel et vois ce qui est dit sur cette fonction SUBSTITUE et notamment sur ce qu'apporte l'utilisation du 4ème argument de cette fonction.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

Bonjour à tous.


Une proposition en pièce jointe. Mais il doit y avoir plus simple...​


ℝOGER2327
#7855


Lundi 9 Palotin 142 (Saints Boleslas et Ladislas, polonais - fête Suprême Quarte)
9 Floréal An CCXXIII, 3,7593h - hyacinthe
2015-W18-2T09:01:21Z
 

Pièces jointes

  • exemple.xlsx
    9.8 KB · Affichages: 51
  • exemple.xlsx
    9.8 KB · Affichages: 73
  • exemple.xlsx
    9.8 KB · Affichages: 89

Bene25

XLDnaute Nouveau
Re : extraire 2 chaines de nombre d'une cellule

merci roger !

@david si j'ai bien compris l'aide excel le "/" correspond au nouveau texte donc à la chaine de valeur numérique qui est extraite en comptant le nombre de caractère la cellule en faisant une soustraction du nombre de carctère jusqu'a rencontrer un espace, c'est bien ça??? :confused:
 

david84

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

merci roger !

@david si j'ai bien compris l'aide excel le "/" correspond au nouveau texte donc à la chaine de valeur numérique qui est extraite en comptant le nombre de caractère la cellule en faisant une soustraction du nombre de carctère jusqu'a rencontrer un espace, c'est bien ça??? :confused:
La fonction SUBSTITUE permet de remplacer un caractère par un autre. Si la chaîne de caractère à traiter comprend plusieurs caractères identiques et que tu ne veux en remplacer qu'un seul le 4ème argument (no_position) de cette fonction te permet de préciser quel caractère tu veux remplacer.
Donc dans le cas présent il te faut trouver le moyen de préciser que tu ne veux remplacer que le dernier espace. Pour cela il te suffit retrancher au nombre de caractères de la chaîne avec les espaces le nombre caractères de cette même chaîne sans ses espaces :
Code:
NBCAR(C5)-NBCAR(SUBSTITUE(C5;" ";""))

Une fois que tu récupères la position du dernier espace il suffit de le remplacer par le caractère que tu veux à condition qu'il ne soit pas présent dans la chaîne ("/" dans l'exemple).
Ensuite la fonction CHERCHE permet de trouver la position de ce caractère "/".
Tu suis pour l'instant ?
Maintenant procède par ordre : si tu veux récupérer de manière dynamique l'ensemble des caractères situés après l'avant-dernier espace (
1.000 4.2560 par exemple) qu'est-ce qu'il te suffit de modifier dans le 4ème argument (no_position) ?
A+

 

Bene25

XLDnaute Nouveau
Re : extraire 2 chaines de nombre d'une cellule

oui oui David, je confirme ça m’intéresse ;-)

a mon sens et si j'ai bien compris, c'est un espace supplémentaire que je dois extraire donc ajouter un no_ position à la 2eme fonction subsitute ou ajouter un espace au 1er no_position (mais là je ne vois pas comment faire)

mais ça doit pas être ça vu que ça marche pas :mad:, voila ce que j'ai essayé:

NBCAR(C5)-NBCAR(SUBSTITUE(C5;" ";" ";""))

ou sinon ajouter une autre soustraction en no_position donc NBCAR(C5)-NBCAR(SUBSTITUE(C5;" ";"";NBCAR(C5)-NBCAR(SUBSTITUE(C5;" ";""))

mais bon j'ai VALEUR comme résultat à chaque fois.

Dsl j'ai bien compris l'explication de texte mais n'arrive pas à la mettre en pratique :confused:

merci encore pour ton temps
 

david84

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

Non c'est plus simple que cela :
Code:
NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))
te ramène le nombre d'espace dans la chaîne, soit 7 en C6.
Quand tu utilises cette partie dans le 4ème argument de la fonction SUBSTITUE tu remplaces alors le 7ème espace par le caractère "/"
Code:
SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";"")))
.
Ensuite la fonction CHERCHE te ramène la position du caractère "/"
Code:
CHERCHE("/";SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))))
soit 44.
Donc pour obtenir la position, non pas du dernier mais de l'avant-dernier espace il te faut apporter un très légère modification à la partie
Code:
NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))
et tu récupéreras alors la chaîne (qu'il faudra alors traiter mais ça c'est une fois que tu auras compris cette partie)
Code:
1.000 4.2560
: vois-tu laquelle ?
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : extraire 2 chaines de nombre d'une cellule

bon j'ai retourner le problème dans tous les sens et fait plusieurs essais ....sans résultats.même si ton explication est plus que limpide
Je reprends : tu as une phrase comportant des suites de caractères espacés par des espaces et tu ne veux récupérer qu'une partie de cette phrase. Pour savoir combien tu as d'espace il te suffit de comptabiliser le nombre de caractères de ta phrase avec les espaces
Code:
NBCAR(C6)
et de lui retrancher le nombre de caractères sans les espaces
Code:
NBCAR(SUBSTITUE(C6;" ";""))
NB : tu remarqueras qu'à ce stade je n'utilise pas le 4ème argument no_position de cette fonction et que donc l'ensemble des espaces " " sont remplacés par une chaine vide "".

Donc en C6 tu as 7 espaces
Code:
NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))
Une fois que je sais qu'il y a 7 espaces je vais pouvoir remplacer l'espace voulu par le "/".
J'utilise pour cela à nouveau la fonction SUBSTITUE mais en utilisant cette fois son 4ème argument no_position qui te permet de dire "je ne veux remplacer que cet espace précis et non tous les espaces".
Le but de la manœuvre est de remplacer l'espace qui précède le début de la chaîne de caractères que tu veux récupérer par un caractère particulier et unique (le "/").

Donc comme je sais que j'en ai 7 :
- si je veux récupérer uniquement les caractères situés après le dernier espace (soit le 7ème), j'utilise dans l'argument no_position
Code:
NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))
ce qui donne
Code:
SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";"")))

- si je veux récupérer tous les caractères situés après l'avant-dernier espace (soit le 6ème) il me suffit de retirer 1 à 7, soit
Code:
SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))-1)
ce qui veut dire "je veux remplacer l'espace n°6 par "/".

J'obtiens ainsi la position de l'avant-dernier espace.

J'utilise ensuite la fonction CHERCHE pour rechercher la position de "/"
Code:
CHERCHE("/";SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))-1))

Maintenant que je connais la position de "/" je peux utiliser cette information dans la fonction STXT pour lui préciser à partir de quel endroit je veux récupérer la chaîne de caractère qui m'intéresse.
Code:
=STXT(C6;CHERCHE("/";SUBSTITUE(C6;" ";"/";NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))-1))+1;99)

Le +1 de
Code:
NBCAR(C6)-NBCAR(SUBSTITUE(C6;" ";""))-1))+1
uniquement pour me placer sur le 1er caractère qui suit l'espace et 99 pour récupérer l'ensemble des caractères qui suivent (tu peux utiliser un autre chiffre, peu importe du moment qu'il est plus grand que le nombre de caractères à récupérer.

Fais une recherche sur la fonction STXT pour mieux la comprendre.

Est-ce plus clair ?

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 982
Membres
103 997
dernier inscrit
SET2A