Excel - INDEX/EQUIV blocage

Résolu/Fermé
dimqz Messages postés 4 Date d'inscription lundi 26 février 2018 Statut Membre Dernière intervention 27 février 2018 - Modifié le 26 févr. 2018 à 18:32
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 27 févr. 2018 à 09:41
Bonjour à tous,

Je dispose d'un onglet "prérequis_clients" disposant de 3 colonnes (range H11 à L150) : Nom Client | Prérequis | Prioritaire?

Nom client = chaîne de caractères
Prérequis = chaîne de caractères
Prioritaire = chaîne de caractères ("oui" ou vide pour non)

J'alimente ce tableau via des maccros et invites utilisateurs qui fonctionnent convenablement.
Ce tableau est classé dans l'ordre alphabétique des clients.

Sur mon premier onglet "fiche clients", je souhaiterais récupérer ces informations dès lors que la valeur de la cellule A1 contient le nom du client.
Cette cellule est automatiquement alimentée par un tcd (non modifiable) et est sous la forme XXXXX-NomDuClient (valeur numérique correspondant au n° commande).

Les informations "Prioritaire?" et "Prérequis" sont stockés à partir de J11 et L11 (et +1 pr les autres clients).

Pour récupérer les prérequis : =SIERREUR(INDEX(Prérequis_Clients!$H$11:L150;EQUIV(A1;Prérequis_Clients!$H$11:$H$150;0);3);"")

Pour récupérer l'information si le client est prioritaire ou non :
=SIERREUR(INDEX(Prérequis_Clients!$H$11:L150;EQUIV(A1;Prérequis_Clients!$H$11:$H$150;0);5);"")

Mon problème : Vu que ma cellule en A1 est sous la forme XXXXX-NomDuClient et que cela ne correspond pas EXACTEMENT au nom du client de mon onglet "prérequis_clients", cela ne fonctionne pas.

J'arrive via la fonctionne rechercheV à récupérer les valeurs approximatives mais je pense qu'il y a mieux...
=RECHERCHEV(A1&"*";Prérequis_Clients!H11:L150;3;)

J'aurais souhaité conservé la fonction INDEX/EQUIV mais en testant le contenu de ma cellule cible. Chose que je ne sais pas faire.

Pourriez-vous m'aiguiller pour solder ce problème ?

En vous remerciant par avance.

En top l'onglet 2, en bot l'onglet 1.



Dimqz
A voir également:

1 réponse

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
26 févr. 2018 à 18:47
Bonjour
votre image ne correspond pas à grand chose. Je pense qu'il y a une incohérence dans vos explications:
vous dites que EQUIV ne fonctionne pas parce qu'à priori si on vous lit bien, le texte en A1 est plus long que le nom client dans le champ "Prérequis_Clients!$H$11:$H$150"

ensuite, vous nous dites que ça fonctionne "un peu" avec RECHERCHEV(A1&"*"...., ce qui voudrait dire que le texte en A1 est plus court que celui de la colonne H?

Pouvez vous préciser ça?

Selon la 'explication sur INDEX(EQUIV, j'aurais tendance à vous dire essayez en remplaçant A1 par:
STXT(A1;TROUVE("-";A1)+1;50) pour retrouver le nom du client seul, _si vos noms clients ne dépassent pas 50 caractères, sinon, à rectifier
ou si besoin:
..........EQUIV("*"&STXT(A1;TROUVE("-";A1)+1;50)&"*";..........

à vous lire

crdlmnt

0
dimqz Messages postés 4 Date d'inscription lundi 26 février 2018 Statut Membre Dernière intervention 27 février 2018
27 févr. 2018 à 07:51
Bonjour, en effet, je dois mal m'exprimer.
Dans tous les cas, je vous remercie pour votre réponse à laquelle je vais essayer de répondre avec clarté.

Avec la formule suivante : =SIERREUR(INDEX(Prérequis_Clients!$H$11:L150;EQUIV(A1;Prérequis_Clients!$H$11:$H$150;0);3);"")
cela fonctionne dès lors que le nom du client en 'A1' correspond exactement à mon nom client de l'onglet 'Prérequis_Clients'. Malheureusement, l'information client en A1 est toujours sous la forme "12345 - NomDuClient".
De ce fait, ma formule ne fonctionne pas.

J'ai essayé d'ajouter votre bout de code à la formule ce qui donnerait :
=SIERREUR(INDEX(Prérequis_Clients!$H$11:L150;EQUIV("*"&STXT(A1;TROUVE("-";A1)+1;50)&"*";Prérequis_Clients!$H$11:$H$150;0);3);"")

Cela ne me retourne rien.

Cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
27 févr. 2018 à 07:58
Alors c'est probablement que vos écritures ne correspondent pas; que donne la formule seule:
STXT(A1;TROUVE("-";A1)+1;50)
sur quelques lignes par comparaison avec votre liste de la base de données?
vous pouvez aussi vérifier le résultat avec:

=NB.SI(liste de la base;cell texte)

sinon, sans le fichier, ça va être difficile à gérer
à vous lire
crdlmnt
0
dimqz Messages postés 4 Date d'inscription lundi 26 février 2018 Statut Membre Dernière intervention 27 février 2018
27 févr. 2018 à 08:10
Bonjour,

pourtant votre formule fonctionne bien.

Mon identifiant client actuel : "45555 - test01"
STXT(A1;TROUVE("-";A1)+1;50) me renvoit : test01
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
27 févr. 2018 à 08:32
Alors un petit souci, il y a un blanc derrière le tiret qui fait que les textes ne correspondent pas

essayez avec:
..........EQUIV(SUPPRESPACE(STXT(A1;TROUVE("-";A1)+1;50));......

sans les"*"&.....&"*" pour commencer, à rajouter ensuite si ça ne donne rien

voila un modèle avec des blancs ou sans blanc et même avec plusieurs encadrant le tiret pour voir ce que ça donne (voir feuille Edition par rapport à feuille base
https://mon-partage.fr/f/l7ShhR5v/

et revenez si ça ne va toujours pas

crdlmnt
0
dimqz Messages postés 4 Date d'inscription lundi 26 février 2018 Statut Membre Dernière intervention 27 février 2018
27 févr. 2018 à 08:41
cela fonctionne merci beaucoup !
0