Fusion de deux tableaux excel issus de fichier différent

  • Initiateur de la discussion Initiateur de la discussion debutantexcel22
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

debutantexcel22

Guest
Bonjour,

J'ai un fichier excel avec un tableau A et un autre fichier excel avec un tableau B.
Je souhaiterais récupérer dans le fichier excel avec le tableauB, des champs du tableauA sachant que le tableauA a un champ commun avec le tableauB.
J'ai une solution avec recherchev mais celle ci me convient pas étant donné le nombre de champs et d'enregistrements élevés à récupérer. Cela m'oblige à adapter ma formule aux nombreuses cellules.
Je suis sous excel 2007. Existe t-il une macro simple permettant de le faire ou avez-vous une autre idée (consolidation de tableau par exemple ) ?
Merci pour votre aide.
 
Re : Fusion de deux tableaux excel issus de fichier différent

Bonjour debutantexcel22 et bienvenue !

Avec les explications que tu as fournies, tu risques d'obtenir:
- soit plein de réponses allant dans des sens divers
- soit très peu de réponses (voire pas du tout)

Ne pourrais-tu illustrer ta demande avec quelques exemples dans un fichier (de préférence au format .xls), sans données confidentielles et avec -ça peut toujours être utile- des commentaires supplémentaires?

A bientôt
 
Re : Fusion de deux tableaux excel issus de fichier différent

Soit par exemple j'ai un fichier1 de la forme
idproduit anneeCommande descriptif

J'ai un fichier2
idproduit dateLivraison responsableCommande

Et je voudrais dans le fichier2
idproduit anneeCommande descriptif dateLivraison responsableCommande

Mon idproduit est de la forme AA123 (mélange de lettres et chiffres)

Merci
 
Re : Fusion de deux tableaux excel issus de fichier différent

Re-bonjour,

Le principe de base, j'avais compris dans les grandes lignes. Ce que je te proposais, c'était de nous donner un exemple plus complet. Dans ton premier message, tu disais:
J'ai une solution avec recherchev mais celle ci me convient pas étant donné le nombre de champs et d'enregistrements élevés à récupérer. Cela m'oblige à adapter ma formule aux nombreuses cellules.
C'est pour cette raison qu'un fichier aurait été utile: je ne vois pas, avec les infos que tu donnes, où se situerait le problème. Ce que tu ne dis pas non plus, c'est si ton idproduit revient plusieurs fois (doublons)
 
Re : Fusion de deux tableaux excel issus de fichier différent

Bonjour debutantexcel22
Comme le dit Modeste (Bonjour, Modeste), une réponse précise et adaptée sera plus facile sur la base d'un extrait de votre fichier. Difficile de travailler sans support...​
ROGER2327
#2320
 
Re : Fusion de deux tableaux excel issus de fichier différent

Re...
Une proposition :
Code:
[COLOR="DarkSlateGray"][B]=INDEX(DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)-1);EQUIV($D2;[tableau1.xls]Feuil1!$A$2:$A$16;0))[/B][/COLOR]
en E2, et recopié en E2:G… renvoie la valeur cherchée dans le champ nommé en tête de colonne.
Par exemple, si vous mettez "nombres" en E2, vous obtiendrez les valeurs correspondantes en colonne E.
Le problème se règle donc avec une formule unique.
Voyez le classeur joint.​
ROGER2327
#2327
 

Pièces jointes

Re : Fusion de deux tableaux excel issus de fichier différent

Re...
Analyse de la formule :
Code:
[COLOR="DarkSlateGray"]=INDEX(DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)-1);EQUIV($D2;[tableau1.xls]Feuil1!$A$2:$A$16;0))
[/COLOR]

Le principe est le suivant :

Soit
Code:
[COLOR="DarkSlateGray"]=INDEX([I]Tableau_1_col[/I];[I]no_lig[/I])[/COLOR]
avec Tableau_1_col : plage à une colonne et no_lig : entier strictement positif inférieur au nombre de ligne de Tableau_1_col.
Cette formule renvoie la valeur de la cellule de rang no_lig dans Tableau_1_col.

Dans le cas qui nous occupe, on veut prendre une valeur dans une des colonnes de la feuille Feuil1 du classeur tableau1.xls.
Par exemple la colonne intitulée "personne". C'est la colonne 10 (ou J). Dans ce cas, Tableau_1_col est une plage du genre $J$2:$J$16. (On peut la choisir plus courte ou plus longue en fonctiondes besoins.)
Pour ne pas avoir à changer le nom de cette plage si on veut un autre champ que le champ "personne", on va déterminer la colonne utile en recherchant le rang la colonne intitulée "personne" sans savoir que c'est la colonne 10. Pour ce faire, on utilise

Code:
[COLOR="DarkSlateGray"]=EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)[/COLOR]
Cette formule prend une valeur dans la cellule E$1, la compare aux valeurs contenues dans la plage [tableau1.xls]Feuil1!$A$1:$R$1 et renvoie le rang de la cellule de cette plage qui contient la valeur de E$1. (Le 0 placé en fin de formule est là pour une raison technique que vous trouverez dans l'aide d'Excel.) Si on a mis "personne" en E$1, la formule renvoie 10.

Considérons maintenant la formule :
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)-1)[/COLOR]
Dans notre exemple où on considère qu'on a mis "personne" en E$1, elle équivaut à :
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;10-1)[/COLOR]
ou encore :
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;9)[/COLOR]
Cette formule (voir l'aide d'Excel) renvoie la plage [tableau1.xls]Feuil1!$A$2:$A$16 décalée de 0 ligne et de 9 colonnes à droite, c'est-à-dire [tableau1.xls]Feuil1!$J$2:$J$16.
C'est bien la référence au champ "personne".

Si au lieu de "personne" on avait mis "produit" en E$1,
Code:
[COLOR="DarkSlateGray"]=EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)[/COLOR]
aurait renvoyé 5.
Alors,
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;EQUIV(E$1;[tableau1.xls]Feuil1!$A$1:$R$1;0)-1)[/COLOR]
équivaudrait à
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;5-1)[/COLOR]
ou encore à
Code:
[COLOR="DarkSlateGray"]=DECALER([tableau1.xls]Feuil1!$A$2:$A$16;0;4)[/COLOR]
et renverrait la plage [tableau1.xls]Feuil1!$A$2:$A$16 décalée de 0 ligne et de 4 colonnes à droite, c'est-à-dire [tableau1.xls]Feuil1!$E$2:$E$16. Autrement dit, la référence au champ "produit".

On voit ainsi que la même formule permet de faire référence à la colonne qu'on voudra en mettant son intitulé en E$1.

Le reste de la formule permet de trouver, grâce au champ "Idproduit", le numéro de ligne correct dans la plage déterminée par la fonction DECALER. C'est nettement plus simple, et un coup d'œil à l'aide d'Excel vous permettra de voir le pourquoi du comment...​
Bon courage.
ROGER2327
#2330
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour