VLOOKUP avec différents critères

Bonjour,

Je cherche, dans un fichier G-Sheet, à effectuer un VLOOKUP "amélioré" à partir d'un autre fichier, et avec prise en compte de différents critères.
Je m'explique (j'espère le faire de la façon la plus compréhensible possible) :

- sur un fichier "data", une base de données comportant des entrées texte et numérique
https://docs.google.com/spreadsheets/d/1ZqthCKy9LEcv5gm5AJMsNhP3QETYQqLSaTwNc-v_qMw/edit?usp=sharing

- sur un second fichier "calcul", je souhaiterais faire apparaître la somme des quantités pour les entrées listées (dans cet exemple, des fruits), et en fonction de certains critères (contenus dans un 2nd onglet de ce même fichier appelé "critères".https://docs.google.com/spreadsheets/d/11vfhkfrm7b5MIPCzt9MYLmPxXQdEsFErvF9qkM_e618/edit?usp=sharing

En cherchant sur le forum, je pensais à une fonction SUMPROD + IMPORTRANGE, mais je n'arrive pas à articuler tout cela correctement afin de prendre en compte les critères.

Je précise que je ne souhaite pas faire appel à un TCD, car j'aurai d'autres fonctions sur ce tableur qui ne sont pas compatibles avec un TCD.

Je vous remercie par avance pour votre aide.

Bonjour,

=index(query(IMPORTRANGE("1ZqthCKy9LEcv5gm5AJMsNhP3QETYQqLSaTwNc-v_qMw";"A1:E");"select sum(Col5) where Col1>=202205 and Col1<=202209 and Col2='FRUIT' and Col4='"&A2&"' ");2;1)
  1. je pense qu'il vaudrait mieux une fois pour toutes ramener les données dans le fichier, et dans ce cas il sera possible de faire un sumproduct !
  2. pourquoi dis-tu "d'autres fonctions sur ce tableur qui ne sont pas compatibles" avec un TCD ?

Merci beaucoup pour ta réponse !

1. je pense qu'il vaudrait mieux une fois pour toutes ramener les données dans le fichier, et dans ce cas il sera possible de faire un sumproduct !
Ma base de données sert également à l'alimentation de plusieurs autres fichiers, et également à des reports sous datastudio.
Que permettrait de changer le fait de pouvoir utiliser SUMPRODUCT ?

2. pourquoi dis-tu "d'autres fonctions sur ce tableur qui ne sont pas compatibles" avec un TCD ?
j'utilise (entre autres) des scripts qui me permettent "d'archiver" des lignes de l'onglet FEUIL1, ou encore de faire des tris automatiques. Raisons pour lesquelles je souhaite conserver la souplesse du tableur vs. un TCD.

1. je pense qu'il vaudrait mieux une fois pour toutes ramener les données dans le fichier, et dans ce cas il sera possible de faire un sumproduct !

Ma base de données sert également à l'alimentation de plusieurs autres fichiers, et également à des reports sous datastudio.
Que permettrait de changer le fait de pouvoir utiliser SUMPRODUCT ?

ok ta base est commune et c'est une bonne règle de gestion

ce que je veux dire ici, c'est qu'il est peut-être préférable de faire un onglet spécifique avec juste importrange et ensuite effectuer les calculs sur cette base

il me semble que cela pourrait accélérer pour ne pas multiplier les importrange, et utiliser d'autres fonctions que query

2. pourquoi dis-tu "d'autres fonctions sur ce tableur qui ne sont pas compatibles" avec un TCD ?

j'utilise (entre autres) des scripts qui me permettent "d'archiver" des lignes de l'onglet FEUIL1, ou encore de faire des tris automatiques. Raisons pour lesquelles je souhaite conserver la souplesse du tableur vs. un TCD.

ben, je ne vois pas bien ce que cela changerait, mais peu importe si tu es satisfait de la formule

Je viens de tester la formule sur les fichiers réels. Cela ne fonctionne pas, J'ai un code erreur "Le résultat est trop grand".Ma base comporte en effet un grand nombre d'entrées (à ce stade, 200k lignes et 37 colonnes).
Devrais-je donc tenter de créer un onglet data dans mon fichier calcul en utilisant la fonction IMPORTRANGE (ce qui permettrait de n'importer que les colonnes dont j'ai réellement besoin pour ce fichier) ?
Je viens de tester la formule sur les fichiers réels. Cela ne fonctionne pas, J'ai un code erreur "Le résultat est trop grand".Ma base comporte en effet un grand nombre d'entrées (à ce stade, 200k lignes et 37 colonnes).
Devrais-je donc tenter de créer un onglet data dans mon fichier calcul en utilisant la fonction IMPORTRANGE (ce qui permettrait de n'importer que les colonnes dont j'ai réellement besoin pour ce fichier) ?

la limite est liée à IMPORTRANGE, donc rien ne sera alors importé !

on revient donc au fait d'importer les données en une seule fois dans le fichier, dans un onglet dédié, avec un script du type (remplace l'id par celui du fichier contenant la base de données)

function importer(){
  var ss = SpreadsheetApp.openById('1n-rjSYb63Z2jySS3-M0BQ78vu8DTPOjG-SZM4i8IxXI')
  var data = ss.getSheets()[0].getDataRange().getValues()
  var sh = SpreadsheetApp.getActiveSheet()
  sh.getRange(1,1,data.length,data[0].length).setValues(data)
}

je pensais même que le nombre total de cellules ne peut pas dépasser 5.000.000, et là tu es déjà au-dessus, donc on verra si cette première étape fonctionne !

Le script pose problème avec le nombre max. de cellules autorisé.
(voir image ci-dessous)

Par ailleurs, j'ai pu intégrer (à l'aide d'IMPORTRANGE) les quelques colonnes qui m'intéressent dans un onglet data du fichier calcul.
Il devrait donc y avoir une possibilité avec SUMPRODUCT cette fois ?

capture

ah oui, en effet, si on se limite à quelques colonnes parmi les 37

sumproduct est donc possible

as-tu besoin de l'aide ? si oui donne une copie anonymisée de ton tableau ... mais c'est simple

=sumproduct(E:E*(A:A>=202205)*(A:A<=202209)*(B:B="FRUIT")*(D:D="Poires"))

à adapter en fonction de ton importation

Merci !
Je ne suis en effet pas super à l'aise avec la fonction SUMPROD... Désolé.
J'ai recréé un onglet data dans le fichier envoyé initialement, afin de "simuler" la situation réelle.
https://docs.google.com/spreadsheets/d/11vfhkfrm7b5MIPCzt9MYLmPxXQdEsFErvF9qkM_e618/edit?usp=sharing

=sumproduct(data!E$2:E*(data!A$2:A>=202205)*(data!A$2:A<=202209)*(data!B$2:B="FRUIT")*(data!D$2:D= A2))

Merci beaucoup pour ton aide précieuse !
Cela fonctionne parfaitement.

Rechercher des sujets similaires à "vlookup differents criteres"