Discussion:
Recherche valeur dans un tableau
(trop ancien pour répondre)
FREDSCOPE
2020-05-07 19:47:36 UTC
Permalink
Bonsoir à tous.

Je suis à la recherche d’une formule permettant de chercher une valeur dans un tableau à double entrée. La feuille est alimentée régulièrement sans que le nombre de sections analytiques soit fixe. Le nombre de ligne est fixe.

En lignes : les comptes comptables
En colonnes : les sections analytiques. Le nombre de section est variable en fonction de chaque extraction.
A l’intersection des lignes et des colonnes la valeur correspondant à la valeur affectée à chaque compte pour une section donnée.

Dans une autre feuille, on saisit en B1 le compte comptable et en B2, la section analytique.

Je souhaite renvoyer en B3 la valeur renvoyée à l’intersection des lignes et colonnes en critères.

J’ai essayé de travailler avec les fonctions ÉQUIV et INDEX mais je n’arrive pas à retrouver la position de la colonne de la section analytique.

Je sèche complètement. Je souhaite utiliser une fonction Excel sans VBA.

Si quelqu’un pouvait me donner une piste sur les fonctions Excel à utiliser.

Merci d’avance.

Fred
MichD
2020-05-07 23:01:46 UTC
Permalink
Bonjour,

En supposant que j'ai compris la question...

Fichier exemple : https://www.cjoint.com/c/JEhxaX8PkSj

MichD
FREDSCOPE
2020-05-08 01:27:20 UTC
Permalink
Bonjour MichD,

Ca fonctionne à merveille. Merci beaucoup. Ca semble si simple quand on voit le résultat.

Pour mon info personnelle, à quoi sert le signe @ devant la fonction décaler dans la formule ?

Encore merci pour votre aide

Fred
MichD
2020-05-08 02:42:25 UTC
Permalink
Tu dois avoir une version Office 365...

Sur une installation avec DVD d'installation, ce "@" n'existe pas, ce
n'est pas moi qui l'ai inséré. Je ne me suis jamais demandé à quoi
servait ce symbole qu'ajoutait Microsoft Office 365.

Un début d'explication ici :
https://www.quora.com/What-does-mean-in-an-Excel-formula

MichD
FREDSCOPE
2020-05-08 07:42:21 UTC
Permalink
Bonjour MichD,

J’ai pu constaté qu’en enlevant le @ de la formule, ça fonctionnait aussi.

J’ai lu le lien. Je suis trop novice pour tout comprendre mais je vois à peut près à quoi ca sert.

Merci encore pour ton aide

Bonne journée

Fred
Michel__D
2020-05-08 10:05:02 UTC
Permalink
Bonjour,

Si je peux me permettre on peut utiliser la formule ci-dessous (plus besoin d'adapter le nombre de
ligne/colonne) :

=SIERREUR(DECALER(Feuil1!$A$1;EQUIV($B$1;Feuil1!A:A;0)-1;EQUIV($B$2;Feuil1!1:1;0)-1;1;1);"")
FREDSCOPE
2020-05-08 13:01:43 UTC
Permalink
Cette optimisation va bien au-delà de mes attentes. Merci
FREDSCOPE
2020-05-15 02:16:16 UTC
Permalink
Bonjour,

La formule proposée par Michel fonctionne à merveille. Les utilisateurs utilisent cette nouvelle fonction tous les jours ou presque mais ils en veulent toujours plus ;) Ils me demandent s’il serait possible d’adapter la formule afin qu’en saisissant la section analytique 78* dans le critère de sélection que la formule renvoie la somme de toutes les sections 78* pour le compte saisi en deuxième critère.

J’ai essayé de modifier la formule en insérant un somme.si mais ca ne fonctionne pas.

Merci pour votre aide, si vous avez une piste.
MichD
2020-05-15 10:22:15 UTC
Permalink
Post by MichD
Bonjour,
La formule proposée par Michel fonctionne à merveille. Les utilisateurs utilisent cette nouvelle fonction tous les jours ou presque mais ils en veulent toujours plus ;) Ils me demandent s’il serait possible d’adapter la formule afin qu’en saisissant la section analytique 78* dans le critère de sélection que la formule renvoie la somme de toutes les sections 78* pour le compte saisi en deuxième critère.
J’ai essayé de modifier la formule en insérant un somme.si mais ca ne fonctionne pas.
Merci pour votre aide, si vous avez une piste.
Essaie ceci :

=SIERREUR(SOMME(DECALER(Feuil1!$A$1;;EQUIV($A$1;Feuil1!1:1;0)-1;NBVAL(Feuil1!A:A)));"")

MichD
MichD
2020-05-15 10:51:03 UTC
Permalink
Post by MichD
Post by MichD
Bonjour,
La formule proposée par Michel fonctionne à merveille. Les
utilisateurs utilisent cette nouvelle fonction tous les jours ou
presque mais ils en veulent toujours plus ;) Ils me demandent s’il
serait possible d’adapter la formule afin qu’en saisissant la section
analytique 78* dans le critère de sélection que la formule renvoie la
somme de toutes les sections 78* pour le compte saisi en deuxième
critère.
J’ai essayé de modifier la formule en insérant un somme.si mais ca ne fonctionne pas.
Merci pour votre aide, si vous avez une piste.
=SIERREUR(SOMME(DECALER(Feuil1!$A$1;;EQUIV($A$1;Feuil1!1:1;0)-1;NBVAL(Feuil1!A:A)));"")
MichD
Si tu désires combiner les 2 formules,
Adapte "Sect78" par le texte de la cellule A1 de la feuil2

=SIERREUR(SI(A1="Sect78";SOMME(DECALER(Feuil1!$A$1;;EQUIV($A$1;Feuil1!1:1;0)-1;NBVAL(Feuil1!A:A)));DECALER(Feuil1!$A$1;EQUIV($A$2;Feuil1!A1:A10000;0)-1;EQUIV($A$1;Feuil1!A1:AA1;0)-1;1;));"")

MichD
MichD
2020-05-15 10:54:08 UTC
Permalink
Oups, utilise cette formule, elle tient compte des modifications que tu
as apporté à ma formule...

=SIERREUR(SI(A1="Sect78";SOMME(DECALER(Feuil1!$A$1;;EQUIV($A$1;Feuil1!1:1;0)-1;NBVAL(Feuil1!A:A)));DECALER(Feuil1!$A$1;EQUIV($A$2;Feuil1!A:A;0)-1;EQUIV($A$1;Feuil1!1:1;0)-1;1;));"")

MichD
FREDSCOPE
2020-05-16 06:46:54 UTC
Permalink
Bonjour Michel,

Merci pour ton retour. Je me suis mal exprimé.
Les comptes sont toujours uniques. Pas de recherche générique sur les comptes.

Les sections sont sous la forme 78ABC, 78FRE, 78OUP ou 85HYE, 85TROP, etc...

Le formule fonctionne parfaitement que on saisit une section, par exemple 78ABC.

Les utilisateurs voudraient pouvoir renvoyer la somme de toutes les valeurs des comptes quand ils saisissent un critère sous la forme 78* qui permettrait de faire la somme de toutes les sections commençant par 78.

J’ai utilisé l’étoile pour le caractère générique comme au bon vieux temps...

Le critère sera toujours sur les premiers caractères du code de la section.
FREDSCOPE
2020-05-16 06:52:50 UTC
Permalink
Mon message est parti trop vite. Il n’y a jamais de section « section78 » ou en tout cas ça ne pourra pas être saisi de cette façon.
MichD
2020-05-16 12:01:08 UTC
Permalink
Bonjour,

Voir fichier exemple : https://www.cjoint.com/c/JEql7xiPTM8

MichD
MichD
2020-05-16 12:45:15 UTC
Permalink
Post by MichD
Bonjour,
Voir fichier exemple : https://www.cjoint.com/c/JEql7xiPTM8
MichD
Le même fichier, mais avec une formule plus générique s'adaptant à la
plage de données.

https://www.cjoint.com/c/JEqmSeua47j

MichD
FREDSCOPE
2020-05-16 17:12:22 UTC
Permalink
Merci Michel,

Ca correspond parfaitement à la demande des utilisateurs.

Je ne maîtrise absolument pas les formules matricielles. Je vais mixer les deux formules afin d’obtenir le résultat escompté en fonction que l’utilisateur indique la section exacte ou bien un section générique avec une étoile.

Je suis très impressionné par ta maîtrise exceptionnelle.

De nouveau un grand merci.
MichD
2020-05-16 17:16:46 UTC
Permalink
Post by FREDSCOPE
Merci Michel,
Ca correspond parfaitement à la demande des utilisateurs.
Je ne maîtrise absolument pas les formules matricielles. Je vais mixer les deux formules afin d’obtenir le résultat escompté en fonction que l’utilisateur indique la section exacte ou bien un section générique avec une étoile.
Je suis très impressionné par ta maîtrise exceptionnelle.
De nouveau un grand merci.
En supplément, au lieu d'inscrire le critère "78" dans la formule, tu
veux utiliser la cellule A1, tu peux faire comme ceci:

=SOMME(SI((STXT(Feuil1!1:1;1;2)=TEXTE(A1;"@"))=VRAI;PLAGE))

Comme la fonction Stxt() retourne une chaîne de caractère, par
conséquent du texte même si le résultat est numérique, il faut comparer
ce résultat à une autre chaîne texte d'où : TEXTE(A1;"@")

MichD
FREDSCOPE
2020-05-16 19:39:07 UTC
Permalink
Merci Michel,

Je vais peaufiner tout cela. Je pense que j’ai plus que le nécessaire pour arriver à ce que veulent les utilisateurs.

De nouveau un grand merci pour le temps que tu as pu consacrer à mon problème.

Bonne soirée.

Michel__D
2020-05-16 16:37:03 UTC
Permalink
Bonjour,
Post by MichD
Bonjour,
La formule proposée par Michel fonctionne à merveille. Les utilisateurs utilisent cette nouvelle fonction tous les jours ou presque mais ils en veulent toujours plus ;) Ils me demandent s’il serait possible d’adapter la formule afin qu’en saisissant la section analytique 78* dans le critère de sélection que la formule renvoie la somme de toutes les sections 78* pour le compte saisi en deuxième critère.
J’ai essayé de modifier la formule en insérant un somme.si mais ca ne fonctionne pas.
Merci pour votre aide, si vous avez une piste.
Voici ma proposition (formule matricielle) :

=SOMME((GAUCHE(DECALER(Feuil1!$A$1;0;1;1;NBVAL(Feuil1!1:1));2) &
"*"=$B$2)*(DECALER(Feuil1!$A$1;EQUIV($B$1;Feuil1!A:A)-1;1;1;NBVAL(Feuil1!1:1))))
Péhemme
2020-05-08 10:38:26 UTC
Permalink
Bonjour Fred,

Tu vois, ici des gourous prennent soin de toi... en français.
;-)
Michel


"FREDSCOPE" a écrit dans le message de groupe de discussion :
1ff0c1a7-822a-40c1-adfe-***@googlegroups.com...

Bonsoir à tous.

Je suis à la recherche d’une formule permettant de chercher une valeur dans
un tableau à double entrée. La feuille est alimentée régulièrement sans que
le nombre de sections analytiques soit fixe. Le nombre de ligne est fixe.

En lignes : les comptes comptables
En colonnes : les sections analytiques. Le nombre de section est variable en
fonction de chaque extraction.
A l’intersection des lignes et des colonnes la valeur correspondant à la
valeur affectée à chaque compte pour une section donnée.

Dans une autre feuille, on saisit en B1 le compte comptable et en B2, la
section analytique.

Je souhaite renvoyer en B3 la valeur renvoyée à l’intersection des lignes et
colonnes en critères.

J’ai essayé de travailler avec les fonctions ÉQUIV et INDEX mais je n’arrive
pas à retrouver la position de la colonne de la section analytique.

Je sèche complètement. Je souhaite utiliser une fonction Excel sans VBA.

Si quelqu’un pouvait me donner une piste sur les fonctions Excel à utiliser.

Merci d’avance.

Fred
FREDSCOPE
2020-05-08 12:59:49 UTC
Permalink
J’ai vu. Et avec quelle efficacité. Merci à tous pour votre aide précieuse.
Loading...