Recupération de données dasn une ()

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 ! :)
 

Jocelyn

XLDnaute Barbatruc
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

  • fred.zip
    1.5 KB · Affichages: 28
  • fred.zip
    1.5 KB · Affichages: 30
  • fred.zip
    1.5 KB · Affichages: 35
F

FRED

Guest
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 ;)
 

Jocelyn

XLDnaute Barbatruc
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

  • fred_20060413114314.zip
    1.5 KB · Affichages: 19
A

AV

Guest
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]
 

Jocelyn

XLDnaute Barbatruc
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
 
A

AV

Guest
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]
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji