Insérer x lignes automatiquement en fonction des réponses d'une Query

Bonjour à tous,

Je n'ai pas trouvé la réponse mais je suis sûr que la question a déjà été posée, donc désolé par avance.

Je voudrais créer une formule / macro pour qu'en fonction du nombre de résultats rendus par ma Query, le meme nombre de lignes soit ajouté pour "expand" lesdits résultats.

Le cas d'espèce : j'ai une liste de codes projets et en face, des bons de commandes à des fournisseurs, dont le nombre varie en fonction des projets. Si pour le projet A la query retourne 5 résultats, je voudrais ajouter 4 lignes pour afficher tous les résultats, ainsi de suite sur tout le tableau. Je sais créer le countif pour compter les résultats et prévoir le nombre de lignes, mais après, je bloque :)

Voyez-vous comment faire?

Merci d'avance pour votre aide!

Bonjour,

mets un lien vers une copie simplifiée de ton projet, ce sera plus facile pour répondre

merci

Intéressant, mais pas simple,

juste une question, comment est établie la liste ? c'est juste une donnée d'entrée ? ou cela correspond aussi à une interrogation ?

#OP-0000761
#OP-0000822
#OP-0000847

une proposition avec en ligne 1 la liste des op

=query('BDC by project'!A:T;"Select A,T,G,J,L,M,P Where (A matches '"&textjoin("|";true;1:1)&"' AND S='No invoice in 2020') ";0)

https://docs.google.com/spreadsheets/d/1ORITnUABP5aQXCcHP_EjgCCuiqDSKpU0N-5ludQBz2U/edit?usp=sharing

La liste provient de l'analyse d'un autre onglet, qui met en évidence les projets sur lesquels il manque des factures. A l'heure actuelle la liste est copiée collée en valeur. Ensuite on applique la query sur toutes les lignes et si la query ne peut pas s'expander, alors on ajoute autant de lignes qu'il faut, ce qui est un peu fastidieux.

Je viens de tenter la solution proposée merci, mais elle ne résout pas le pb :.(

Pourquoi elle ne résout pas le problème ?

  • tu peux importer ta liste avec une requête en ligne 1
  • ensuite, si tu ne veux pas répéter l'op à chaque ligne, tu mets une MFC qui compare la valeur avec celle au-dessus
  • mais je peux aussi la laisser à sa place ...

refais une copie

avec MFC (à re-travailler un peu si tu acceptes la solution) et liste des ope en colonne

=query('BDC by project'!A:T;"Select A,T,G,J,L,M,P Where (A matches '"&textjoin("|";true;A:A)&"' AND S='No invoice in 2020') ";0)

j craisn pas contre qu'il n'y ait pas beaucoup d'autres solutions

Merci Mikhail, effectivement je comprends mieux comment ta solution est structurée et ça fonctionne très bien pour mon cas! Il n'y a pas de solution par macro selon toi, si on avait sur chaque ligne le nombre de résultats de chaque query? ça me servirait pour une autre analyse où je dois positionner des sous totaux (ou plutot il faudrait que si j'ai des projets qui se rajoutent ma ligne de sous total soit décalée de sorte à laisser la place pour que les résultats soient affichés).

Enfin déjà un grand merci pour cette solution!

Pour positionner des sous-totaux, je propose de les remplacer par un TCD

Hello, cette fois j'essaie d'utiliser la solution précédente dans le cas de figure suivant : j'ai un premier fichier avec une liste réduite de codes projets non consécutifs mais ordonnés (ex : #OP-0001010
#OP-0001011, #OP-0001012, #OP-0001016, #OP-0001017) et je voudrais utiliser query + texjoin pour aller chercher, pour chaque code de cette liste, la correspondance en chiffre d'affaires dans un tableau exhaustif de tous les codes.

A l'heure actuelle avec query (tableau final; select colonne cible where Col1 matches texjoin zone ci-dessus, ça me sort les valeur dans l'ordre du tableau final, ça ne se réduit pas à ma sélection, quelqu'un voit pourquoi?

Merci bcp pour votre aide,

Pas pigé, peux-tu mettre un exemple sur fichier ?

Hello, voici un fichier : https://docs.google.com/spreadsheets/d/1-OU2oyxjsEq3s7O1z9GHwMWZytw0XgEvIwz3McEaFjk/edit?usp=sharing

Avec une dizaine de valeur, dans mon fichier source, ça fonctionne, mais à partir d'une centaine, la query plante et me prends les valeurs de la source sans filtrer, dans l'ordre des lignes, sans prendre en compte les codes que je rassemble via textjoin. :(

Je ne vois aucune erreur dans ton fichier.

Tu as 28 codes dans "Données retenues", et seulement 10 sont communs avec "Source (dans un autre fichier en importrange)"

#OP-0001860
#OP-0001875
#OP-0002040
#OP-0002331
#OP-0002340
#OP-0002345
#OP-0002346
#OP-0002349
#OP-0002359
#OP-0002362

Ton query donne bien les 10 valeurs trouvées !


Toutefois, l'utilisation de textjoin est limitée en taille de caractères (50.000), et dans ce cas il faut passer par une autre astuce. Ici il n'y a que 335 caractères dans la série des 28 opés. Avec 100 on est encore loin du compte.

edit : j'ai fait un test avec 1000 opé retenues, et cela fonctionne toujours très bien.

Rechercher des sujets similaires à "inserer lignes automatiquement fonction reponses query"