QUERY - Résultat des lignes au même emplacement

Bonjour à tous,

j'espère que vous allez bien!

Je viens à la recherche d'aide à la mise en place de 3 fichiers qui communique.

Dans mon cas, j'ai 3 fichiers :

1 - Fichier de saisi (le seul fichier avec de la saisi de donnée considéré comme "maître")

2 - Fichier de Projet (à l'avenir il y en aura 1 par projet)

3 - Fichier salarié

Actuellement quand je rentre des données dans mon fichier "maître", le fichier Projet récupère les informations correspondant.

Les 3 types de fichiers sont identiques à 2/3 détails près.

Je me sers des formules QUERY et IMPORTRANGE pour récupérer les informations qui m'intéresse de mon fichier maître, dans mon fichier Projet.

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!Salarié3") ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' ")

Mon problème, c'est quand le résultat s'affiche, les donnée récupérer sont affiché sans respecter les lignes où les données ont été récupéré donc en supprimant les lignes vide.

Chaque ligne = un jour de la semaine

1 onglet = 1 mois

Dans le fichier Projet 1 et Fichier de saisi, j'ai mis pour exemple des couleurs pour montrer le résultat voulu dans les colonnes Salarié 3.

Le résultat dans la colonne Salarié 1est bon, mais vu que j'utilise que IMPORTRANGE, cela récupère toutes les lignes de tout les projets.

Pour le fichier Salarié 1, pas de problème car un simple IMPORTRANGE suffit, mais je vous met le lien pour aider à comprendre le fonctionnement.

Je vous met l'accès au 3 fichiers ci-dessous.

Fichier de saisi : https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0/edit?usp=sharing

Fichier Projet 1 : https://docs.google.com/spreadsheets/d/10UR3agqUscUgw8XdhSlR3FzyK0omx2_fxSqbFZWcC9Y/edit?usp=sharing

Fichier Salarié 1 : https://docs.google.com/spreadsheets/d/1GIjyBU3qvQ80UuSJaDjwkLgLZsHqETlCCRMLBAmwF1E/edit?usp=sharing

J'espère avoir réussi à expliquer mon problème,

Je vous remercie d'avance, bonne journée à tous!

Bonjour,

Tu peux mettre ça en L6 du fichier Projet1 et copier vers le bas :

=if(isna(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!m6:r36") ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&J6&""))=true;"";QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!m6:r36") ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&J6&""))

Cordialement,

Fil.

Bonjour Filoche, et merci beaucoup pour ta réponse et la solution!

Je vais aller regarder un peu plus les fonctions if et isna (qui devient ESTNA dans mon tableau automatiquement d'ailleurs).

Merci, et bonne journée ! :)

On peux l'écrire plus simplement comme ceci :

=iferror(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!m6:r36") ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&J6&""))

Super, merci!

Est-ce que je peux te demander quel est différence entre les deux si ça ne te dérange pas ?

Je suis pas encore très à l'aise avec toutes les formules

Elles font exactement la même chose...

La différence est basée uniquement sur le type d'erreur rencontré...

Iferror est généraliste, ISNA uniquement sur non adressé... 😉

D'accord, je te remercie pour ton aide !

Je vais me renseigner un peu plus sur iferror et ISNA,

Bonne journée ! :)

Bonjour,

je reviens ici pour un autre conseil sur le même projet.

Dans le fichier Projet, il y a un menu déroulant pour choisir le Salarié voulu en tête de colonne.
Je cherche à ce que la formule donné par Filoche (encore merci!) recherche en fonction de la cellule salarié du menu déroulant.

Je suis à cours d'idée pour créer ce type de formule.

Est-ce que cela peut se faire via formule, ou faut-il regarder du côté de AppScript?

Merci,

Bonne journée :)

Tu peux le modifier comme ça :

=iferror(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!m6:r36") ; "SELECT Col4, Col5 WHERE Col3 = '"&M4&"' and Col1 = "&J6&""))

Merci pour ta réponse !

Je pense que je n'ai pas bien expliqué ma demande.

Je voudrais garder la même recherche, c'est-à-dire, de rechercher uniquement les correspondances avec le projet 1 mais aussi que cela dépende du menu déroulant avec le nom des Salariés.

Pour expliquer, cela me permet de trier ma liste de salarié dans le fichier Salarié, pour éviter d'avoir pleins de colonnes avec des salariés n'ayant pas travailler sur le projet 1.

Je n'arrive pas vraiment à visualiser comment faire, et via quel formule.

EDIT + d'explications:

Je vais avoir +20 salariés dans le Fichier de saisi, et je voudrais éviter d'avoir la totalité des salariés dans le fichier Projet 1, seulement ceux ayant travaillé sur le Projet 1.
Dans l'idée, chaque "block" de colonne par salarié dans le fichier Projet serait vide si je ne rentre pas de nom de salarié grâce au menu déroulant.

EDIT :

J'ai trouvé une solution :

CONCAT la feuille du fichier de Saisi, avec la cellule du menu déroulant dans une cellule mise à l'écart (ex: Q4)

=CONCAT("Janvier!" ; K4)

Puis j'ai modifié la formule :

=SIERREUR(QUERY(IMPORTRANGE("url" ; $Q$4) ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&I6&""))

L'importrange récupère la valeur de la cellule Q4 qui égale à la feuille du fichier source et le nom de la plage nommé que j'ai donné (ex: Salarié_1)

Ce n'est peut être pas encore la meilleure méthode. Mais si ça peu aider certains !

Tu peux simplifier comme ça :

=IFERROR(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; CONCAT("Janvier!" ; $C$4)) ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&I6&""))

Ha mais oui effectivement!

J'étais content d'avoir trouvé la solution, que j'avais pas encore poussé l'optimisation. J'ai encore du mal à maîtriser l'outil.

Merci beaucoup Filoche !

Je reviens concernant la formule que tu m'as donné Filoche

=iferror(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ; "Janvier!m6:r36") ; "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&J6&""))

Je viens de remarquer, s'il n'y a pas de résultat dès la première ligne, j'ai ce message d'erreur : "Le résultat du tableau n'a pas été développé, pour ne pas écraser les données de H9."

Ca ne le fait pas forcément tout le temps, j'ai laissé le fichier sur une erreur pour montrer l'exemple.

Et la dernière ligne trouvé par la formule est en dessous de du tableau.

J'ai fait plusieurs simulations de saisie, si je copie les valeurs de la colonne Salarié 1 aux autres Salariés, je n'ai pas le problème.

Par contre à l'inverse, cela ne fonctionne pas. Je pense que le problème vient des valeurs que j'ai pu saisir, mais je ne vois d'où ça vient.

Si jamais tu as une idée ?

EDIT : Si je met 8 dans la colonne (D) heure ça fonctionne.
Si je met 8 dans la colonne heure (D) + 13O dans la colonne (E) salaire ça ne fonctionne pas.

Et ça ne le fait pas tout le temps...

Voilà, c'est réparé !

=IFERROR(QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1oCGGUZzVlE3F0reyIw3xvJcM6g6ejMu4vUt2g5ixhf0" ;"Janvier!"&$C$4); "SELECT Col4, Col5 WHERE Col3 = 'Projet 1' and Col1 = "&I6&"";0))

Salut Filoche,

Désolé de ma réponse tardive, merci beaucoup cela fonctionne. Je vais essayer de faire plusieurs simulations pour voir si je n'ai pas d'autres problèmes.

Bonne journée ! :)

Rechercher des sujets similaires à "query resultat lignes meme emplacement"