Recupération de données dasn une ()

  • Initiateur de la discussion Initiateur de la discussion Fred
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fred

Guest
Bonjour,

J'ai 1 ou deux questions... Si vous pouviez m'aider, les quelques cheveux que je ne me suis pas arraché vous en seraient reconnaissant :

en A1 A2 et A3 ...j'ai des cellules du type :

A1 : ffififfif(0002149)
A2 : ttoto(4444149)
A3 : Tristan(5553333)

Je dois extraire en B1 B2 B3
B1 : 0002149
B2 : 4444149
...
Et en C1 C2 C3
C1:ffififfif
C2:ttoto
C3:Tristan

Si je ne trouve pas, ma chef m'egorge ! 🙂

Merci d'avance...

Fred

Si vous avez besoin de plus d'info, ou que ca n'est pas clair, demandez 😉 je vous dans les 5 min ! 🙂
 
bonjour le Forum,
Bopnjour Fred, Pascal76

voila un essai en piece jointe

Jocelyn

[file name=fred.zip size=1548]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fred.zip[/file]

Message édité par: Jocelyn, à: 13/04/2006 11:24
 

Pièces jointes

Franchement, merci 10000000000000000000 FOIS ! 🙂J'aurais jamais trouvé seul !

Sinon 🙂 j'en profite pour abuser 😉 .... Si je veux dans l'extraction retirer les 3 zero qui sont devant le nombre

A1 : ffififfif(0002149)

pour n'extraire que 2149 ....
parce que comme on ast parti de droite c plus possible du coups ? 🙁

Meme si vous repondez pas à cette question, merci pour l'autre 😉
 
re bonjour,

voila un essai.

Jocelyn [file name=fred_20060413114314.zip size=1541]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fred_20060413114314.zip[/file]

edit: pour pascal j'ai la même solution *1 🙂 🙂

Message édité par: Jocelyn, à: 13/04/2006 11:44
 

Pièces jointes

Ave tous,

D'une façon plus générale (générique), pour extraire un nombre entier(quel que soit sa position) contenu dans une chaîne :

Matricielle à valider par ctrl+maj+entrée

=1*STXT(A1;EQUIV(1;1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1));0);SOMME(1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))))

AV [aaa]
 
re bonjour,
Bonjour AV,

ta formule fonctionne trés bien mais j'ai beau essayé de la décortiquée je ne comprend pas son fonctionnement et comme je suis de nature curieux si tu avais 2 minutes pour l'expliquer.

en la découpant j'ai des renvois de 'volatil' qui ne me permette pas de comprendre.

Merci a toi

Jocelyn
 
Re,

'' ...si tu avais 2 minutes pour l'expliquer...''

Remarque générale : Chaque résultat intermédiaire d'une formule peut être visualiser en sélectionnant la partie concernée de la formule dans la barre de formule puis F9
Pré requis : Une quelconque opération arithmétique neutre (*1 ou /1 ou +0 ou -- ou,,,,etc) permet de transformer une matrice de valeurs booléennes (VRAI/FAUX) en matrice de valeurs numériques 1/0

Question initiale : extraire un entier numérique d'une chaîne de caractères.
Exemple avec la chaîne ''lui1234moi'' en A1

La formule :
=1*STXT(A1;EQUIV(1;1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1));0);SOMME(1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))))

En partant du (presque) niveau 1 d'imbrication,,,
La partie :
LIGNE(INDIRECT('1:'&NBCAR(A1)))
est une astuce pour renvoyer une matrice de constantes numériques de 1 à x (x étant le nombre de caractères de la chaîne)
Résultat : {1;2;3;4;5;6;7;8;9;10}

Cette série de nombres va être utilisée par la fonction STXT pour extraire, caractères par caractères, chaque élément de la chaîne dans la partie :
STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1)
Résultat : {''l'';''u'';''i'';''1'';''2'';''3'';''4'';''m'';''o'';''i''}

En multipliant cette matrice par 1 dans la partie
1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1))
on obtient une matrice avec des valeurs d'erreur chaque fois que la multiplication se fait sur une valeur non numérique ou bien la valeur numérique originelle
Résultat : {#VALEUR!;#VALEUR!;#VALEUR!;1;2;3;4;#VALEUR!;#VALEUR!;#VALEUR!}

La partie : 1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1))
renvoie une matrice dans laquelle les VRAI/FAUX (valeurs booléennes renvoyées par la fonction ESTNUM) sont transformés en 1 ou 0
{0;0;0;1;1;1;1;0;0;0}

La partie : EQUIV(1;1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1));0)
Permet de trouver, dans la matrice obtenue, la position du 1° chiffre 1 est donc la position du 1° chiffre de la chaîne de A1
Résultat attendu renvoyé par cette partie : 4
Ce résultat va être utilisé comme 2° argument (position du début d'extraction) de la 1° fonction STXT

La partie : SOMME(1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT('1:'&NBCAR(A1)));1)))
va permettre en faisant la somme de la matrice {0;0;0;1;1;1;1;0;0;0} d'obtenir le nombre total de chiffres dans la chaîne
Résultat : 4
Ce résultat va être utilisé comme 3° argument (nombre de caractères à extraire) de la 1° fonction STXT

La partie =1*STXT(,,,,,,) sert simplement, facultativement, à tranformer le résultat final en valeur numérique

AV [aaa]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
1 K
Retour