Comment lier deux tableaux sous condition ?

Bonjour,

(Désolé pour le titre du sujet, impossible pour moi de le formuler correctement)

Un peu de contexte pour, peut-être, rendre plus compréhensible ma demande :

  • J'utilise un google sheet pour faire mes comptes.
  • Sur la première feuille de mon document j'ai plusieurs tableaux. Je m'en sers, entre autre, pour avoir une vue globale et piloter mon budget.
  • Les feuilles 2 à 13 sont les 12 mois de l'année. Je m'en sers essentiellement pour y entrer mes dépenses.

J'ai ce tableau en feuille 1 :

  • En colonne A, il s'agit d'une liste déroulante.
  • En colonne B, se sont des cases à cocher.
ABC
1CatégorieA inclure dans le budget
2JardinFalse
3EssenceTrue
4CourseTrue
5AnimauxTrue
6LoisirTrue
7Entretien voitureFalse
8ExtraFalse

Et celui-ci en feuille 2, "Janvier" :

  • En colonne F, la même liste déroulante que dans le tableau précédent est reprise (dans un ordre différent).
  • En colonne G, le cumul des dépenses regroupées par catégorie.
FGHIJK
21CatégorieCoût
22Loisir150 €
23Course200 €
24Entretien voiture0 €
25Extra60 €
26Animaux15 €
27Jardin320 €
28Essence210 €

Et je voudrais, dans une cellule de la feuille 2, (J21 admettons), additionner les valeurs de la colonne G (de mon tableau en feuille 2) à la condition que les catégories soient cochées ("TRUE") en feuille 1.

Et cela, sans que se soit dépendant de la position des catégories dans les colonnes. Car leurs positions sont amenées à varier selon le trie des données réalisé.

Et dernier point, je ne souhaite pas créer un autre tableau, qui reprendrait celui en feuille 1 auquel on ajouterai "Janvier" en colonne C, "Février" en colonne D, "Mars" en colonne E, etc... avec les coûts associés.

J'espère qu'une solution existe.

Merci pour votre aide et votre temps.

Bonjour,

Si j'ai bien compris (si vous pouviez partager une copie du fichier ce serait pratique), une proposition :

=LET(
    categ; FILTER(Feuil1!B2:B8; Feuil1!C2:C8);
    REDUCE(0; categ;
        LAMBDA(acc; v; acc + XLOOKUP(v; Feuil2!G22:G28; Feuil2!H22:H28))
    )
)

Adaptez vos plages bien entendu. L'idée c'est de 1) filtrer la feuille 1 pour récupérer toutes les catégories sélectionner, puis 2) de parcourir cette liste et de faire la somme des valeurs correspondantes trouvées dans la feuille2 à l'aide de XLOOKUP.


Formule en Français selon vos paramètres :

=REDUCE(0; FILTRE(Feuil1!B2:B8; Feuil1!C2:C8);
        LAMBDA(acc; v; acc + RECHERCHEX(v; Feuil2!G22:G28; Feuil2!H22:H28))
 )

Bonjour,

C'est possible avec QUERY

=QUERY(A2:G;"select sum(G) where F = '"&FILTER('Feuille 1'!B:B;'Feuille 1'!C:C=TRUE)&"' label sum(G)''")

15forum.xlsx (13.23 Ko)

Merci pour vos propositions !

Je n'ai pas partagé de document google sheet pour une question de vie privée. Mon compte google étant à mon nom et prénom.

Pour simplifier les choses, je le partage au format Excel. (Je n'étais pas sur de la compatibilité des formules entre les deux applis).

Pour ce qui est de vos propositions, c'est en dehors de mes compétences actuelles, je vais avoir besoin de temps pour comprendre et faire mes essais en adaptant correctement tout ça.

Merci encore !

Bonjour,

Ci-joint ma formule corrigée (décalage des colonnes). Quant à Excel, REDUCE est compatible mais QUERY non.

Cependant, dans GSheets, il suffirait de copier/coller les formules dans une cellule tout simplement il me semble.

11forum2.xlsx (13.54 Ko)

Bonjour,

C'est un peu différent, pour coller à votre besoin, voici un formule fonctionnelle avec QUERY :

=QUERY(A2:G;"select sum(G) where F MATCHES '"&TEXTJOIN("|";1;FILTER(Feuil1!A:A;Feuil1!B:B=VRAI))&"' label sum(G)''")

image

Ta solution PierreLepinay fonctionne parfaitement.

Je ne connaissais pas la fonction QUERY, il s'agit d'ailleurs d'une requête si j'ai bien compris.
Je n'ai pas compris comment cela fonctionnait mais ça a l'air très flexible. Je vais me pencher dessus.

Pour ta solution Saboh12617, elle fonctionne quand j'ouvre le fichier, mais si je clique (flèche rouge) pour modifier/copier la formule, les accolades sautent et une erreur #NOM? apparait (deuxième screen). Je les ai remises mais l'erreur persiste. Il s'agit peut-être d'une erreur de manipulation de ma part. Je n'ai donc pas su la transposer à mon Google sheet.

image image

Merci à vous deux, mon problème est solutionné.

Salut ebierre,

Comme tu peux le constater il y a des préfixes un peu bizarres devant les noms de formules en MAJUSCULES : "_xlfn." ou encore "_xlfn.xlws.".

Si tu les retires puis que tu c/c la formule dans GSheets tu n'auras plus d'erreur #NOM.

NOTA : je viens de constater que ton screenshot est sur une "ancienne version" d'Excel (2016 ou 2019 j'ai l'impression). Les formules proposées ne sont disponibles que dans les dernières versions d'Excel (>2024) et Google Sheets. C'est pour ça que tu as ces préfixes devant les formules : elles n'existent pas encore.

NOTA2 : d'où l'intérêt de préciser votre version d'Excel sur votre profil, si plus tard vous souhaitez faire des demandes sur Excel.

Merci pour les précisions !

Je me doutais bien que c'était de mon côté que ça bloquait.

Effectivement, le doc était issu d'une version Excel de 2016.

Bien, content que vous ayez trouvé la solution.


Petite note : faites attention, mon approche s'attend à ce que vous précisiez correctement les plages de travail. Si elles s'allongent, il faut en tenir compte dans la formule. C'est pourquoi je recommande l'usage des Utiliser des tableaux dans Google Sheets - Aide Éditeurs Google Docs (la formule s'adapte alors automatiquement).

A l'inverse l'approche de Pierre est en colonne entière. C'est pratique mais attention à ne surtout pas placer de données dans un autre tableau en dessous de A:G !


Bonne journée

Rechercher des sujets similaires à "comment lier deux tableaux condition"