Recherchev à partir d'une sous chaine de caractères

Pat92000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
ALS35 Messages postés 1033 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'utilise communément la fonction recherchev. Elle me permet d'associer une valeur contenue dans une table à une chaine de caractère retrouvée.
Mon problème est que dans le cas présent, les valeurs à trouver sont au milieu d'une chaine de caractères plus longue.
comment faire?
je donne un exemple : j'ai des centaines de lignes de relevés bancaires et je voudrais mettre en regard dans une cellule le numéro de code comptable lorsque par exemple dans la chaine de caractères de l'intitulé on voit le mot "Poste" ou "EDF" ou "loyer" ou "gestion de compte" etc

Il faut sans doute combiner la fonction CHERCHE mais je n'y arrive pas.
merci de vos réponses



Configuration: Windows / Firefox 84.0
A voir également:

4 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonsoir
voyez si ce modèle peut faire l'affaire et revenez si soucis
https://mon-partage.fr/f/3PQPqz1c/
crdlmnt
1
Pat92000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup c'est exactement ce que je voulais faire, mais le niveau de la formule dépassait largement ce que j'étais capable de fabriquer tout seul. Néanmoins je comprends l'organisation de la formule à l'exception de @INDEX . Pour augmenter mes connaissances pouvez vous m'en expliquer la signification notamment le @ devant .
Encore merci !
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
?? il n'y a pas de @devant la formule, du moins pas dans mon modèle
la formule INDEX:
=INDEX(plage complète;n° de la ligne à ressortir dans la plage; N° de la colonne dans la plage)
Si la plage complète se réduit à une ligne ou une colonne, sel le >N° de ligne ou de colonne est utile,
exemples dans les trois cas

=INDEX(A:A;3) ressortira la valeur de A3
=INDEX(A1:X1;3) ressortira la valeur de C1
=INDEX(A:C;6;2) ressortira la valeur de B6

dans notre cas, SOMMEPROD va chercher en F le texte de NB.SI et ressort le N° de ligne de la feuille où il se trouve en G
attention:
  • dans la liste en F aucun texte ne doit "contenir" un des autres textes de cette liste sinon la formule fait le cumul

par exemple ne fonctionnera pas avec dans la liste en >F code (seul) et code 3
  • la formule ressort le N° de ligne de la feuille, pas celui de la plage, il est donc nécessaire que la plage INDEX ensuite commence en ligne 1 ou il faudra apporter une valeur de correction pour valoriser le n° de ligne


c'est à peu près tout ce que je peux en dire
espérant avoir été assez clair
si OK merci de passer en sujet en résolu
crdlmnt
0
ALS35 Messages postés 1033 Date d'inscription   Statut Membre Dernière intervention   145
 
Bonjour à tous,

@ Vaucluse (salutations)
Concernant le @ qui apparait, il est probablement lié à l'utilisation de la version 365 (uniquement) et les formules matricielles dynamiques, mais je n'ai pas encore tout compris leurs explications.
https://support.microsoft.com/fr-fr/office/op%C3%A9rateur-d-intersection-implicite-ce3be07b-0101-4450-a24e-c1c999be2b34
https://support.microsoft.com/fr-fr/office/formules-de-tableau-dynamiques-et-formules-de-tableau-de-cse-h%C3%A9rit%C3%A9es-ca421f1b-fbb2-4c99-9924-df571bd4f1b4

Cordialement
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438 > ALS35 Messages postés 1033 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour l'info
bonne journée
crdlmnt
0
Pat92000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Vaucluse de ces explications. En effet un @ s'est mis automatiquement devant INDEX quand j'ai importé votre formule.
J'ai laissé de coté ce travail et je le reprends maintenant persuadé d'avoir la solution tant elle est efficace sur votre exemple. J'ai scrupuleusement recopiée votre formule dans un bout d'essai de mon tableau ( en enlevant les @) et ....cela ne marche pas. Si je mets votre exemple en vis à vis du mien tout semble identique , je ne vois pas mon erreur. Merci encore de votre nouvelle aide. Comment puis je vous envoyer mon tableau d'essai
0
Pat92000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
voici le fichier d'essai que je n'arrive pas à faire fonctionner
https://mon-partage.fr/f/ICSJM9XH/
0
ALS35 Messages postés 1033 Date d'inscription   Statut Membre Dernière intervention   145 > Pat92000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Si ta demande est toujours d'actualité, remplace dans ta formule, salutations Vaucluse,
LIGNE($A$1:$A$4) par LIGNE($A$1:$A$8) ou plus logique par LIGNE($F$1:$F$8) et en remettant l'@ devant INDEX.

En modifiant légèrement cette formule, essaie aussi celle-ci qui te permettra de déplacer sans problème ta plage F1:G8 et d'avoir une valeur vide quand le texte n'est pas trouvé en colonne A.
=SIERREUR(INDEX($G$1:$G$8;EQUIV(1;NB.SI(A1;"*"&$F$1:$F$8&"*");0));"")

Formule matricielle à valider par Ctrl+Maj+Entrée, elle se met automatiquement entre accolades {}
où à valider simplement par entrée si tu as Excel 365, ce qui semble être ton cas.

Cordialement
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour Vaucluse

Chapeau pour ta formule!
je te mets un +1 bien mérité

a+
0