Gauche() + recherchev()

Antoine_SIG

XLDnaute Nouveau
Bonjour,
Dans un tableau excel, sur une feuille "S1", j'ai une colonne A comportant des numéros d'affaires en format standard à 5 caractères de type.
Exemple :
A2 = 14001
A3 = 21115
A4 = 21206
A5 = 24005
Ax... etc

Par ailleurs dans la feuille "Listes", j'ai la liste suivante :
A2 = 11 ; B2 = Assistance
A3 = 12 ; B3 = Formation
A4 = 13 ; B4 = Production
A5 = 14 ; B5 = Vente
A6 = 21 ; B3 = Gestion de projet
A7 = 24 ; B4 = Conseil
...
A28 = 90 ; B28 = Autres

(colonne A : nombre à 2 caractères en format standard)


PROBLEME 1 :
------------
Quand je saisis un numéro à 5 caractères dans ma cellule A6 de ma feuille "S1", je veux que la celulle B6 (feuille "S1") repère les 2 premiers chiffres de la cellule A6 et fasse appel à la feuille "Listes" pour afficher le nom correspondant de la colonne B.
Par exemple, si je tape dans la cellule A6 le code 21675, je veux que Excel repère la présence de "21" dans les 2 premiers caractères et, en se réfèrant à la feuille "listes", affiche le mot "Gestion de projet".

J'ai tenté la formule suivante (avec fonction pour ne rien afficher si absence de valeur) :
=SI(ESTNA(RECHERCHEV(GAUCHE(A6;2);Listes!A2:B28;2));"";RECHERCHEV(GAUCHE(A6;2);Listes!A2:B28;2))

... Mais ça ne marche pas
QUESTION 1 : comment faire ? Qu'est-ce qui cloche ?


PROBLEME 2 :
------------
Si je remplace le contenu de la colonne A (feuille "S1") par des nombres à 2 caractères (de type 14, 21, 24, ...) et que je modifie la fonction de la manière suivante :
=SI(ESTNA(RECHERCHEV(A6;Listes!A2:B28;2));"";RECHERCHEV(A6;Listes!A2:B28;2))

... Ca fonctionne mais j'ai alors un autre problème : si je saisis la valeur 16 en A6, j'obtiens "Vente" en B6 (comme si j'avais saisi la valeur 14. Or, dans la feuille "Listes", la valeur 16 n'existe pas et ne correspond à rien. Excel ne devrait rien afficher en B6 de la feuille "S1" mais il m'affiche quand-même le nom qui correspond à la valeur 14.
QUESTION 2 : où est le problème (format de cellules ? formule ? ... ?)

Merci d'avance pour vos lumières...
 

abcd

XLDnaute Barbatruc
Re : Gauche() + recherchev()

Bonjour,

Première question
Au choix :
=SI(NB.SI(Liste!A:B;GAUCHE(A10;2)*1)=0;"";RECHERCHEV(GAUCHE(A10;2)*1;Liste!A2:B7;2;0))
=SI(NB.SI(Liste!A:B;ENT(A10/1000)=0;"";RECHERCHEV(ENT(A10/1000);Liste!A:B;2;0))
La fonction GAUCHE renvoie un format texte, il faut donc multiplier le résultat par 1 pour le transformer en valeur numérique.

Deuxième question
il ne faut pas faire l'impasse sur le 4ème argument de la fonction RECHERCHEV.
Vois les formules ci-dessus.

En cas de problème, mets un petit extrait de ton fichier en pièce jointe, ce sera plus facile.

abcd
 

Discussions similaires

Réponses
5
Affichages
292
Réponses
3
Affichages
239

Statistiques des forums

Discussions
312 685
Messages
2 090 946
Membres
104 705
dernier inscrit
Mike72