Liaison dynamique entre classeur

Bonsoir,
Je voudrais créer un onglet qui sélectionne les lignes liées de deux autres onglets de la même façon que si on faisait une jointure de tables sur une clé unique en base de données. Le modèle de données prévu dans Excel permet de créer un lien manuellement entre 2 feuilles mais oblige l'utilisation d'un tableau dynamique croisé pour afficher les résultats. Ce qui m'embête car mes données ne contiennent aucun chiffre ou nombre donc pas besoin de calcul. Les fonctions de RechercheH & V ne conviennent pas non plus.
J'ai donc pensé à écrire une macro dans le l'événement Activate() de l'onglet 3 qui permet d'afficher les données liées des 2 autres feuilles.
Question : Il ya t-il un moyen simple de faire cela ou dois-je nécessairement passer par du code?
Exemple concret :

Fichier joint : 3 onglets avec l'onglet Lien créé manuellement. C'est le résultat attendu d'où la question ci-dessus.
Pour info : Les feuilles Liste et Auteur qui contiennent mes données et qui sont mis à jour régulièrement et manuellement par les utilisateurs.

Merci d'avance pour vos conseils

12lien-classeur.xlsx (149.80 Ko)

Bonjour,
Une proposition de ce que je comprends !
Cdlt.

16lien-classeur.xlsx (29.01 Ko)

Merci Jean-Eric, je vais regarder ça

Bonjour Jean-Eric,

J'ai testé la requête dans l'éditeur de requêtes avancées mais elle contient des erreurs de référence cyclique :

Requête dans l'éditeur

image

Erreur de référence cyclique obtenue lorsque je valide avec le bouton OK

image

Merci d'avance pour toute aide supplementaire

J'ai trouvé d'où venait l'erreur.

Il fallait faire : Nouvelle requête/ Combiner des requêtes / Ajouter
Ensuite la formule utilisée fonctionne. J'enregistre les résultats de la requête dans le troisième onglet Tab_Fusion et je nomme la requête List_PE_Contrib
Voici le résultat :

image

En revanche lorsque je mets à jour les deux premiers onglets (Tab_PE et Tab_Contrib) la table Tab_Fusion n'est pas mise à jour automatiquement. je suis obligé soit de cliquer sur le nom de la requête List_PE_Contrib pour faire actualiser, soit de passer par le menu Données/Actualiser tout.

Question 1 : Existe-il un moyen d'actualiser automatiquement cette requête dès l'activation de la feuille Tab_Fusion?

Question 2 : Cette solution existe et est simple puisque qu'on passe par l'outil PowerQuery intégré dans Excel. Selon vous, pour une question de maintenance, devrais -je privilégier cette solution manuelle avec (éventuellement une actualisation automatique si possible) ou devrais-je passer par un code VBA pour effectuer cette fusion de table autrement?

Merci d'avance

Bonjour

Dédié au tables, PowerQuery est plus adapté qu'Excel, tableur non fait pour manipuler des tables.

Tu peux ajouter une ligne de VBA pour actualiser à l'activation de l'onglet : ThisWorkbook.RefreshAll

Merci 78Chris,
L'instruction ThisWorkbook.RefreshAll fonctionne mais le rafraîchissement complet du classeur se voit malheureusement à l'écran. En outre le tableau final (onglet 3) qui contient le résultat de la requête est sélectionné dans sn intégralité.
J'ai essayé de mettre l'instruction Application.ScreenUpdating = False avant le RefreshAll puis la valeur à True après le RefreshAll mais rien à faire. L'instruction Range("1:1").Select n'annule pas la sélection du tableau.

Merci d'avance pour toute idée

Bonjour,
Une proposition basée sur mon précédent post !?
Cdlt.

10lien-classeur.xlsm (34.32 Ko)
Private Sub Worksheet_Activate()
    Me.ListObjects(1).QueryTable.Refresh BackgroundQuery:=False
End Sub
Rechercher des sujets similaires à "liaison dynamique entre classeur"