Somme.si.ens via une plage d'un autre sheet

Bonjour

Je ne parviens pas à faire un somme.si.ens d'un tableau présent sur un autre fichier sheet

Je vais chercher mes plages avec importrange.

exemple:

=SOMME.SI.ENS(importrange("mon url";"AQ2:AQ1302");importrange("mon url";"A2:A1302");U3;importrange("mon url";"B2:B1302");"samedi";importrange("mon url";"D2:D1302");"expédié")

Il me met toujours une erreur : l'argument doit être une plage

J'ai vérifié en faisant un importrange d'une cellule, le lien se fait bien entre les 2 fichiers.

Mais importrange associé à une fonction somme.si.ens ne fonctionne pas.

Il ne serait pas possible de faire ce type de formule à partir d'une bdd d'un autre fichier?

Bonjour evolm,

Je ne pense pas que la formule sera digérée comme ça. Il faudrait peut être plutôt procéder en 2 étapes : importer les données d'intérêt dans une plage ou un onglet dédié de ton fichier puis faire la fonction SOMME.SI.ENS de manière plus "conventionnelle".

Sinon, tout est probablement réalisable directement en combinant QUERY et IMPORTRANGE. Une bidouille à tester :

=QUERY(IMPORTRANGE("URL","FeuilX!A2:AQ1302"),"SELECT SUM(AQ) WHERE A = "&U3&" AND B = 'samedi' AND D = 'expédié'")

Arf dommage, sous excel, j'utilise bien souvent une telle formule à partir d'une bdd d'autres fichiers.

La conversion sous sheet est complexe.

Créer une nouvelle bdd sur mon fichier sheet pour faire le somme.si.ens n'est pas envisageable. C'est justement un fichier de bilan qui va chercher des données sur plusieurs fichiers contenant des bdd.

Les fonctions query sont puissantes mais nécessitent pas mal de pratique à l'inverse de somme.si.ens qui est rapidement compréhensible.

J'ai lu tout le tuto des query sur sheet-pratique.com. Je comprends l'interêt mais dès qu'il faut les adapter sur un nouveau fichier, ce n'est pas évident à prendre en main. Un peu comme la programmation au début

J'ai tenté ton code mais ca ne marche pas. C'est normal les espaces? exemple A = "&U3&" Ce sont des espaes ajoutés automatiquement par sheet ou il faut que jes inscrive aussi?

Ce qui m'étonne est que quand je valide la formule il me rajoute ") à la fin

=query(importrange("https://docs.google.com/spreadsheets/d/10YNaG2VRvQQy5wgsjvvMS0QTiLbAm4CQb3hjZzIJi10/edit#gid=920339853","A2:AQ1302"),select AVG(AQ) Where A="&U3&" and B='samedi' and D='expédié'")")

(je n'ai pas mis le nom de la feuille car l'url correspond à ma feuille active contenant la bdd)

désolé pas pratique sheet pour envoyer les fichiers avec les besoin d'autorisation à chaque fois

Les espaces ne sont pas problématiques, j'ai bien écris la formule comme ça.

Le fait que ça ne fonctionne pas, c'est potentiellement que je n'ai pas bien écrit le bazar. Si tu as la possibilité de me partager 2 fichiers exemple (fichier source et fichier de bilan) avec juste l'essentiel pour faire des tests et pas de données sensibles, ce serait top !

Je me suis mis récemment au SQL, et c'est quand même pas mal. La fonction VBA QUERY est un vrai plus, ça permet de réaliser simplement des opérations qui seraient potentiellement complexes avec les fonctionnalités classiques. Sébastien propose quelques cours sur le sujet ici.

Concernant ta formule, tu as des guillemets mal placés, la requête doit être écrite sous forme de texte :

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/10YNaG2VRvQQy5wgsjvvMS0QTiLbAm4CQb3hjZzIJi10/edit#gid=920339853","A2:AQ1302"),"SELECT SUM(AQ) WHERE A = "&U3&" AND B = 'samedi' AND D = 'expédié'")

Selon le type contenu en U3, des apostrophes supplémentaires sont peut-être nécessaires.

Je vais te recréer 2 sheets que je pourrais te partager ce sera en effet plus simple. Il me suffira ensuite d'adapter la formule

J'ai tenté de réduire le nombre de critère afin de voir où ca clochait et je n'ai mis que ceci:

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/10YNaG2VRvQQy5wgsjvvMS0QTiLbAm4CQb3hjZzIJi10/edit#gid=920339853","A2:AQ1302"),"SELECT AVG(AQ) WHERE B = 'samedi' ")

et voila le message d'erreur qu'il me met:

Erreur

Impossible d'analyser la chaîne de requête pour Le paramètre 2 de la fonction QUERY : NO_COLUMN: AQ.

Ok, essaye de remplacer les lettres de colonne par ColN ou N est l'indice de colonne (ex : 1 pour colonne A).

Bonjour Evolm,

As-tu solutionné ton pb ?

J'étais justement en train de créer des fichiers indépendants pour faire des essais

J'ai testé en mettant des numéros de colonne et ca ne marche pas non plus.

J'ai crée 2 sheets : un bdd https://docs.google.com/spreadsheets/d/1Ia_uulwDBrL1vvCiyUan702f5S64G5pHczKna4-H418/edit#gid=0

et un bilan https://docs.google.com/spreadsheets/d/1xkbxnC6JbTf6IMJUJh2zFcUfYAT-v28fjJg8O8NEXvo/edit#gid=0

Si on parvient à trouver la formule adaptée pour avoir le volume qui s'affiche en D2 dans le bilan je saurai adapter à mes fichiers

Je te laisse me faire la demande de partage ;)

Je fais ça tout de suite ;)

Voilà, ça fonctionne mais il faut faire attention à la syntaxe de chaque formule :

- L'URL dans IMPORTRANGE est à mettre entre guillemets
- Le nom de plage dans IMPORTRANGE doit inclure la feuille concernée
- La séparation des paramètres de QUERY est à faire avec ;
- En cas de combinaison des 2 fonctions, les colonnes sont nommées selon leur index, du style Col1 pour la colonne A

La formule obtenue sur ton fichier démo :

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1Ia_uulwDBrL1vvCiyUan702f5S64G5pHczKna4-H418/edit#gid=0";"'Feuille 1'!A1:D21");"SELECT SUM(Col4) WHERE Col1 = "&A2&" AND Col2 = '"&B2&"' AND Col3 = '"&C2&"'")

J'ai au préalable testé IMPORTRANGE seule, et QUERY seule pour m'assurer du fonctionnement de chaque.

Merci je vais tenter de l'appliquer sur mon fichier.

Par contre si j'inscrit l'url de la feuille active, je n'ai pas besoin de nommer la feuille devant ma plage de cellule normalement.

Merci je vais tenter de l'appliquer sur mon fichier.

Par contre si j'inscrit l'url de la feuille active, je n'ai pas besoin de nommer la feuille devant ma plage de cellule normalement.

Possible, je n'ai pas vérifié

Solution adaptée pour n'afficher que le résultat, sans en-tête (et donc potentiellement dupliquer la formule sur plusieurs lignes consécutives) :

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1Ia_uulwDBrL1vvCiyUan702f5S64G5pHczKna4-H418/edit#gid=0";"'Feuille 1'!A1:D21");"SELECT SUM(Col4) WHERE Col1 = "&A2&" AND Col2 = '"&B2&"' AND Col3 = '"&C2&"' LABEL SUM(Col4) ''";0)

Ca fonctionne bien sur le fichier test, mais dupliqué à mon fichier, ca me met #N/A requête terminée sans résultat.

Je vais creuser

edit en fait dans le fichier test si je tire la formule ca me met le même message d'erreur. Pourtant les critères sont bien identifiés

J'ai l'impression que l'on ne peut prendre que la première ligne de chaque colonne en critère

Je vais voir ça !

Rechercher des sujets similaires à "somme ens via plage sheet"