Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherchev sensible aux formats

R

René du var

Guest
Bonsoir le forum,

Voici une formule qui récupère des chiffres à partir de l'exemple suivant :

DONNEE
644121309100000/6853

FORMULE
=SI(STXT(SUBSTITUE(A17;"" /"";""/"");16;1)=""/"";GAUCHE(A17;15);
SI(STXT(SUBSTITUE(A17;""/ "";""/"");NBCAR(A17)-15;1)=""/"";DROITE(A17;15);""Matricule tronqué"")) "

Chiffre récupérer :

RESULTAT
644121309100000

Pour cette partie tout va bien mais quand je fais référence à ce résultat avec la formule ci-dessous ca ne fonctionne pas toujours elle me renvoie
#N/A alors je place CNUM au début de la formule ci-dessus mais ça ne marche pas toujours

Est-il possible de tester le format dans la formule ?
Pour le moment le seul moyen est de taper le résultat à la main


=RECHERCHEV(M18;BDD;2;FAUX)

Merci

René du var
 
M

Monique

Guest
Bonjour,
Pour rendre numérique le résultat de ta formule, tu multiplies par 1 (ou tu divises par 1) les fonctions Droite() et Gauche()
=SI(STXT(SUBSTITUE(A17;"/";"/");16;1)="/";GAUCHE(A17;15)*1;SI(STXT(SUBSTITUE(A17;"/";"/");NBCAR(A17)-15;1)="/";DROITE(A17;15)*1;"Matricule tronqué"))
GAUCHE(A17;15)*1
DROITE(A17;15)*1

à condition que M18 soit numérique dans l'exemple que tu donnes :
=RECHERCHEV(M18;BDD;2;FAUX)

Tu peux aussi faire un essai en modifiant cette formule :
=RECHERCHEV(TEXTE(M18;"0");BDD;2;FAUX)
Elle ne recherchera que du texte
 
R

René du var

Guest
Bonsoir Monique,

Merci pour ta réponse c'est sympa

mais rien à faire toujours le même problème si je tape le matricule à la main c'est bon

Je comprend pas trop ???

merci

René du var
 
M

Monique

Guest
Re,

Etrange...
Tu n'aurais pas des espaces ou quelque chose comme ça en trop dans une des 2 données ?
Tu peux comparer le nb de caractères par =NBCAR(A1)
(un espace est compté comme 1 caractère)
 
R

René du var

Guest
re,

non rien !

de toute façon la formule récupère toujours 15 chiffres

les données proviennent du même fichier texte au départ

comme je disais parfois j'ajoute CNUM ou bien je suis obligé de taper à la main

merci

René du var
 
M

Monique

Guest
Re,

Index Equiv à la place de =RECHERCHEV(M18;BDD;2;FAUX)
On admet que BDD soit D22:E25

=INDEX(E$22:E$25;EQUIV(M18*1;D$22$25;0))
=INDEX(1ère colonne;EQUIV(M18*1;2ème colonne;0))

On peut le faire dans l'autre sens :
=INDEX(E$22:E$25;EQUIV(M18;TEXTE(D$22$25;"0");0))
mais dans ce cas c'est une formule matricielle, à valider par ctrl, maj et entrée.
 
R

René du var

Guest
Re,

Rien à faire

merci quand même

A mon avis le problème vient du résultat de la formule :

=SI(STXT(SUBSTITUE(A17;"" /"";""/"");16;1)=""/"";GAUCHE(A17;15);
SI(STXT(SUBSTITUE(A17;""/ "";""/"");NBCAR(A17)-15;1)=""/"";DROITE(A17;15);""Matricule tronqué"")) "


René du var
 
M

Monique

Guest
Re,

C'est vrai que quand je l'ai copiée, Excel n'a rien voulu savoir, j'ai enlevé les guillemets doubles et ça donne :
=SI(STXT(SUBSTITUE(A17;"/";"/");16;1)="/";GAUCHE(A17;15);SI(STXT(SUBSTITUE(A17;"/";"/");NBCAR(A17)-15;1)="/";DROITE(A17;15);"Matricule tronqué"))
Et c'est avec celle-là qu'on arrive à un bon résultat avec Index Equiv.

Mais celle-ci est identique, en plus simple et moins compliqué :
=SI(STXT(A17;16;1)="/";GAUCHE(A17;15);SI(STXT(A17;NBCAR(A17)-15;1)="/";DROITE(A17;15);"Matricule tronqué"))
 
R

René du var

Guest
re,

la dernière réponse semble convenir

d'après les tests que je viens de faire

je dois faire des tests sur la base de données entière je te tiens au courant

merci encore

René du var
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…