Page 1 sur 1

Associer 2 tables dans Google Sheet

Publié : 16 janv. 2024 17:48
par AlexMondon
Bonjour,J'ai 2 feuilles de donnée que je souhaiterai associer en une seule comme dans l'exemple ci dessous.Pensez-vous que ce soit faisable ?Attention, comme montré à la fin de l'exemple, Un même plan peut avoir plusieurs indices et je souhaiterais les voir dans mon résultat final.

Merci pour votre aide

Re: Associer 2 tables dans Google Sheet

Publié : 18 janv. 2024 11:40
par NC_Quentin
Bonjour !

Je ne sais pas s’il y a une solution sous forme de formules (j’ai essayé, mais je me heurtais à des limitations innées du tableur et je ne savais pas comment les contourner). En revanche, j’ai une solution sous la forme d’une fonction personnalisée, ce qui est mieux que rien !

Image

C’est très basique, et il y a sûrement des problèmes dans des cas particuliers (typiquement avec des lignes vides), mais cela donne une bonne base pour commencer. Si besoin, je peux sûrement complexifier un peu la fonction et traiter les erreurs éventuelles qu’il pourrait y avoir, mais en l’état c’est fonctionnel.

Pour l’ajouter à votre Google Sheets, vous n’avez qu’à faire ceci :

    1. Aller dans Extensions > Apps Script. Si ce n’est pas déjà fait, cela créera un projet Apps Script lié à votre fichier Google Sheets. En tous les cas, cela ouvre un nouvel onglet.
    2. Si c’est un nouveau projet Apps Script, vous pouvez simplement copier le code suivant dans l’éditeur ouvert devant vous :

Code : Tout sélectionner

/**
 * Renvoie une jointure de deux tableaux contenant une colonne de données commune servant de lien. Le tableau résultant sera constitué des colonnes du tableau 1 puis des colonnes du tableau 2, mais sans la colonne de jointure dans le tableau 2.
 *
 * @param {A1:C7} array1 Une plage contenant le premier tableau de données
 * @param {D1:E8} array2  Une plage contenant le deuxième tableau de données
 * @param {1} col1  L’index de colonne pour le premier tableau donnant la colonne commune aux deux tableaux, afin de réaliser la jointure. Par exemple, si le tableau est en A1:C7 et que la colonne est en A, l’index est 1.
 * @param {2} col2  L’index de colonne pour le deuxième tableau donnant la colonne commune aux deux tableaux, afin de réaliser la jointure. Par exemple, si le tableau est en D1:E8 et que la colonne est en E, l’index est 2.
 * @customfunction
 */
function JOINTABLES(array1, array2, col1, col2) {
  try{
    const joinIndex1 = col1 - 1;
    const joinIndex2 = col2 - 1;
    const result = ;
    for(const row1 of array1){
      const currentJoinValue = row1[joinIndex1];
      for(const row2 of array2){
        if(row2[joinIndex2] === currentJoinValue){
          // On met les valeurs de la ligne du premier tableau, suivies de celles du deuxième tableau, mais sans la jointure
          result.push([...row1, ...row2.slice(0, joinIndex2), ...row2.slice(joinIndex2+1)])
        }
      }
    }
    return result
  }catch(err){
    return "Erreur ! Vérifiez que vous avez bien mis des plages en entrée, ainsi que le bon numéro de colonne pour chaque tableau permettant de faire la jointure."
  }
}

Image

    3. Pensez à cliquer sur l’icône de disquette dans le menu en haut pour enregistrer la modification de code !

Image

Et c’est tout. Vous pouvez désormais utiliser la fonction JOINTABLES dans votre fichier, en suivant la petite documentation que j’ai mise.

En attendant que quelqu’un trouve une façon de le faire tout en formules, j’espère que cela pourra vous être utile !
 

Re: Associer 2 tables dans Google Sheet

Publié : 20 janv. 2024 08:57
par AlexMondon
Bonjour, 

Je vais tester tout ça. 
Merci beaucoup pour le temps consacré. 
Bonne journée