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 :
- by_hand_keys: la colonne Q
- by_hand_data: les colonnes R et S
Cela permet de simplifier les formules magiques
Prenons la formule magique en J7 par exemple :
=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.
Partager