Fonction QUERY _ Trouver valeurs d'une table n'existant pas dans une autre

Bonjour à tous,

Je rencontre quelques difficultés avec une formule QUERY, dont je ne maîtrise malheureusement que les fonctions de base.

Je souhaiterais afficher, dans une feuille "A", grâce à la fonction QUERY, les données d'une autre feuille "B" n'existant pas déjà dans une troisième feuille "C".
Le tout en me basant sur les données contenues dans la colonne A.

Est-il envisageable de procéder grâce à l'ajout d'une condition "SELECT ... WHERE" ?
=QUERY('feuille B'!A1:G;"SELECT A,B,C,D,E,F,G * WHERE A... )

Si oui, laquelle ? Si non, quel autre moyen de procéder ?

J'espère avoir été suffisamment clair dans mes explications. Si ce n'est pas le cas, je pourrai poster un exemple sur un fichier.
Merci d'avance pour votre aide !

Excellente journée.

Bonjour,

Il est possible avec query de comparer des données et de sélectionner des données qui sont différentes, si j'utilise votre exemple cela donnerait, si la clé de référence est dans chaque feuille en colonne A :

=QUERY('feuille B'!A1:G;"SELECT A,B,C,D,E,F,G where A != '"&'feuille C'!A1:A&"'")

En décortiquant :

=QUERY('feuille B'!A1:G = C'est la plage à filter

"SELECT A,B,C,D,E,F,G = Ce sont les données à importer

where A != = Où A est différent de

'"&'feuille C'!A1:A&"' = la plage en feuille C où on doit comparer la donnée

Bonjour Pierre,

Super !! Merci beaucoup pour le coup de main !
Tout fonctionne parfaitement.

Bon après-midi.

Bonjour à tous,

Je reviens sur ce sujet, finalement pas totalement résolu, avec un peu plus de détails :

J'ai un script me permettant, sur un fichier, de "basculer" des données d'un onglet "En Attente" à un autre appelé "Validé", en utilisant une case à cocher.
Mon onglet "En Attente" importe des données, par QUERY, d'un autre onglet lié à un formulaire.J'ai ajouté des conditions à QUERY afin que ne soient pas importées les données déjà présentes dans "Validé". Cela me permet, si erreur de validation, de pouvoir supprimer la ligne dans "Validé", afin qu'elle réaparaisse dans "En attente".
Voici la formule (donnée par PierreLepinay) : =

QUERY('Réponses au formulaire'!A2:G,"select A,B,C,D,E,F,G where G != '"&'validé'!G:G&"' and A is not null")

Mon problème = seule la dernière ligne envoyée vers "Validé" disparaît de "En attente".J'ai retourné le problème dans tous les sens, et je n'arrive pas à comprendre ce que je fais mal.

J'ai créé un fichier test, dont voici le lien : https://docs.google.com/spreadsheets/d/1A4fIBjPtbPpWdryOF7jbGUMpDF5LTDQhtWX9rgMbcRE/edit?usp=sharing

J'espère qu'un œil extérieur m'aidera à y voir plus clair !
Merci d'avance pour votre aide.

Bonjour,

Je crois comprendre, il y en a quelque sorte une boucle :

Vos données sont importées du formulaire vers en attente, puis si elles sont cochées, elles passent dans validé, mais si elles sont décochées il faut qu'elles retournent dans en attente.

Si c'est bien cela, votre souci est inhérent à Google Sheet, vos cases à cocher ne sont pas liées à vos lignes et ce n'est pas dynamique, il faut passer par un script.

J'avais fait un script similaire pour quelqu'un il y a peu :

changez les noms de feuille, le nombre de lignes d'en-tête si nécessaire, OUI par true et NON par false

function transfert() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const activSheet = ss.getSheetByName("Actif");
  const archivSheet = ss.getSheetByName("Archive");
  var activData = activSheet.getDataRange().getValues();
  var archivData = archivSheet.getDataRange().getValues();
  const nbLigneEnTete = 1;     

  for (var i = activData.length - nbLigneEnTete; i >= 0; i--) {
    if (activData[i][6] === 'OUI') {
      archivSheet.appendRow(activData[i]);
      activSheet.deleteRow(i + 1);}}

  for (var j = archivData.length - nbLigneEnTete; j >= 0; j--) {
    if (archivData[j][6] === 'NON') {
      activSheet.appendRow(archivData[j]);
      archivSheet.deleteRow(j + 1);}}
}

Bonjour Pierre, bonjour à tous,

M'étant remis sur le sujet cette semaine, seulement, je n'ai malheureusement pas réussi à trouver la solution à mon problème.
Il est probable que je n'aie pas compris exactement ce qui m'était proposé par Pierre.
Mes questions :
1. Le script proposé a-t-il vocation à remplacer mon script initial ?
2. Ma formule QUERY initiale (dans l'onglet "en attente") doit-elle, elle aussi, disparaître ? Si oui, par quoi dois-je la remplacer ?
Je vous remets ici, le lien du fichier test : https://docs.google.com/spreadsheets/d/1A4fIBjPtbPpWdryOF7jbGUMpDF5LTDQhtWX9rgMbcRE/edit?usp=sharing

Merci d'avance pour votre aide !
Excellente journée !

J'ai finalement réussi à trouver une solution en créant un onglet intermédiaire. Sur cet onglet, une simple fonction IFERROR(VLOOKUP donne l'info (ou non) de la présence des données dans "validé".
J'ai ensuite adapté ma formule QUERY en ne sélectionnant que les "NON".

Sujet clos ! Merci.

Rechercher des sujets similaires à "fonction query trouver valeurs table existant pas"