IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Faire un lien entre une QUERY et les cellules sur la même ligne


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2019
    Messages : 1
    Par défaut Faire un lien entre une QUERY et les cellules sur la même ligne
    Bonjour à toustes !

    Désolé pour ce topic peu clair.. Je ne savais pas comment expliquer.

    J'ai besoin d'un peu d'aide, si vous avez du temps et des solutions à m'apporter, ce serait vraiment adoraaaaable !

    J'ai découvert la - merveilleuse - fonction QUERY dans google sheets, et elle m'aide beaucoup, mais je suis face à une difficulté : quand l'import via query est modifié, ça me décale tout mon tableau.
    Bon, c'est toujours pas très clair, alors voilà en vesion longue :

    J'ai deux tableaux, et je ne veux pas donner les accès aux infos des deux tableaux à tous mes collaborateur.rice.s.

    Tableau 1 : informations confidentielles sauf colonne 1, 2, et 3 (Nom, prénom, numéro de téléphone)
    Tableau 2 : informations publiques : fonction query qui va chercher ces 3 colonnes dans le tableau 1 en fonction d'un critère. On a grosso modo =QUERY(IMPORTRANGE("Tableau1");"select Col1,Col2,Col3 where Col7 contains 'Oui'")

    Jusqu'ici, tout va bien.
    Maintenant, arrive la difficulté. J'ai trois choses :

    - Tableau 1 est alimenté de nouvelles données régulièrement (c'est une réponse à un formulaire Gforms) et donc Tableau 2 évolue aussi en fonction des réponses au formulaire.
    - Tableau 2 est alimenté par de nouvelles informations relatives aux colonnes importées par la query, mais qui sont entrées manuellement sur les colonnes suivantes (en bleu dans le tableau).
    - les données de tableau 1 peuvent être modifiées de façon à ce que le critère d'import dans tableau 2 change. Résultat : une ligne disparaît dans l'import de tableau 2.

    Et c'est ici qu'intervient mon problème : la ligne 5 (par exemple) est supprimée dans l'import issu de la QUERY (Colonnes A B et C) mais les informations rentrées en D5, D6, D7 etc. ne bougent pas, et donc tout mon tableau 2 est décalé en-dessous de la ligne 5.

    Y-t-il moyen de faire un lien entre les données de l'import et les colonnes qui leur correspondent ?
    Autrement dit, si l'import ligne 5 disparaît, toute la ligne est supprimée.

    Merci beaucoup de votre aide, j'espère que c'et à peu près clair !!

    Félix

    Tableau 1 : https://docs.google.com/spreadsheets...it?usp=sharing

    Tableau 2 :
    https://docs.google.com/spreadsheets...it?usp=sharing

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Y-t-il moyen de faire un lien entre les données de l'import et les colonnes qui leur correspondent ?
    Autrement dit, si l'import ligne 5 disparaît, toute la ligne est supprimée.
    Franchement, j'ai envie de répondre "non".

    Tu importes des données (avec un contrôle assez "faible" au sein de tableau 2, puisque c'est un tableau 1 qui maîtrise ses données). Manuellement, tu ajoutes des données additionnelles dans tableau 2 mais tu ne créées aucun lien avec la query. Ce lien semble assez dur à créer de manière simple et automatique. Justement parce que tu ne contrôles pas vraiment ce que tu importes.

    Des idées pour avancer :
    - il faudrait déjà réussir à trouver un moyen de faire un lien, peut-être avec un hash des informations importées. Ca passera peut-être un peu de script pour faire une fonction custom : https://developers.google.com/apps-s...eets/functions
    - il faudrait en fait avoir un tableau avec le résultat de la query + une clé, avoir un deuxième tableau avec les informations manuelles + une clé, et joindre les tableaux selon la clé (façon JOIN de tables en SQL)
    - si une personne n’apparaît plus dans la query, alors ses données manuelles ne sont pas récupérées

    J'ai commencé à faire des essais ici : https://docs.google.com/spreadsheets...it?usp=sharing
    Tu coches les cases pour les personnes soient prises ou pas dans la QUERY().
    Ça calcule une clé.
    Tu ajoutes des données manuellement.
    Un dernier tableau assemble le tout mais j'ai pas encore eu le temps d'explorer un lien qui explique comment faire.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    J'ai trouvé une solution en m'inspirant de ce lien https://vinoaj.com/guides/2017/googl...ross-2-sheets/

    Le document est ici https://docs.google.com/spreadsheets...it?usp=sharing

    - La plage A:D contient les données d'origine.
    - La page G:I contient le résultat de la QUERY. Cette QUERY récupère les lignes de la plage d'origine pour lesquelles la case est cochée.
    - La plage Q:S contient des données entrées manuellement à propos des personnes
    - La plage J:K contient des formules magiques pour récupérer des données de la plage Q:S
    - La plage L:O contient des sous-parties des formules magiques, pour tester et comprendre ce que ça fait

    J'ai utilisé des plages nommées :
    1. by_hand_keys: la colonne Q
    2. by_hand_data: les colonnes R et S

    Cela permet de simplifier les formules magiques

    Prenons la formule magique en J7 par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(ISERROR(MATCH($F7;by_hand_keys;0));"No Data";VLOOKUP($F7;by_hand_data;2;FALSE))
    Le cœur de cette formule est VLOOKUP(). Son but est de recherchée la valeur de F7 (une clé calculée à partir des info retournées par QUERY) dans la plage by_hand_data. Il renvoie alors la valeur de la colonne 2 si la clé est trouvée. Sinon, ça renvoie une erreur.

    Pour éviter dans tes cellules en erreur avec #N/A dedans, l'idée de tester avec un IF si la clé est présente avant de chercher. La fonction pour chercher est MATCH mais elle renvoie aussi une erreur si elle ne trouve pas. D'où le ISERROR.

    Au final :
    - on essaye de faire un MATCH (en fait, on aurait pu mettre le même VLOOKUP mais je trouvais ça plus simple et c'est sûrement moins coûteux en calcul)
    - si le MATCH est en erreur, on affiche "No data"
    - sinon on fait le VLOOKUP car on sait qu'il va fonctionner

    Le reste n'est que de l'extension de formule.

Discussions similaires

  1. Action d'une liste déroulante, ou comment faire le lien entre une liste et un script
    Par Anju44 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 02/06/2014, 10h26
  2. [XL-2010] PB remplir une ComboBox avec les valeurs de plusieurs cellules sur la même lignes
    Par eviuss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2014, 07h01
  3. Réponses: 12
    Dernier message: 30/12/2010, 14h30
  4. [XL-2003] Adapter Formule qui fait référence à une cellule sur la même ligne
    Par toukii dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/06/2009, 00h25
  5. Faire le lien entre une listBox et des donnees
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 18/11/2008, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo