Associer 2 tables dans Google Sheet

Avatar de l’utilisateur
AlexMondon

Membre tout neuf
Messages : 2
Inscription : 16 janv. 2024 17:37

Associer 2 tables dans Google Sheet

Message 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
Pièces jointes
Exemple structure données
Exemple structure données
MicrosoftTeams-image.png (80.97 Kio) Consulté 1869 fois
Avatar de l’utilisateur
NC_Quentin

Coach Numericoach
Invétéré
Messages : 32
Inscription : 10 oct. 2022 09:06
A remercié : 1 fois
Remercié : 11 fois

Re: Associer 2 tables dans Google Sheet

Message 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 !
 
Avatar de l’utilisateur
AlexMondon

Membre tout neuf
Messages : 2
Inscription : 16 janv. 2024 17:37

Re: Associer 2 tables dans Google Sheet

Message par AlexMondon »

Bonjour, 

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

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous