XL 2021 Lier deux tableaux sur deux classeurs différents

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 !

brunocean

XLDnaute Occasionnel
Supporter XLD
Bonjour ,
comment lier les deux tableaux ?
j'ai un tableau dans le classeur TEST et le même dans le classeur résultats2 .
j'aimerais que le tableau dans resultats2 se mette à jour avec les changements sur TEST pour les cellules contenant un nombre (donc pas celles avec les %).
Ou alors si c'est plus facile l'ensemble. Merci
TEST dans le vrai classeur est en xlsm
 

Pièces jointes

Solution
Cette solution est meilleure car si le fichier de destination est ouvert il reste ouvert :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Me.Saved Then Me.Save 'évite l'invite à la fermeture
End Sub

Private Sub Workbook_Deactivate()
Dim nomfich$, fichier$, source As Range, wb As Workbook, dest As Range, col, i&, j%
nomfich = "resultats2.xlsx"
fichier = ThisWorkbook.Path & "\" & nomfich
If Dir(fichier) = "" Then MsgBox "Le fichier '" & nomfich & "' est introuvable !", 48: Exit Sub
On Error Resume Next: Set wb = Workbooks(nomfich): On Error GoTo 0
Set source = Me.Sheets(1).[G4]
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Me.Saved Then Me.Save
If wb Is Nothing Then Workbooks.Open fichier Else...
Bonjour
Je trouve risqué de comparer 2 tableaux donc l'un comporte des mois et l'autre non : rien de garantit qu'un tri n'ait pas mélangé les mois...

un % es un nombre pour Excel...

Il sont calculés dans un des 2 tableaux mais la l'autre : là encore risque d'incohérence...
 
RE

Je reste perplexe sur une copie à emplacement identiques : rien ne prouve qu'ils ne se désynchronisent pas (tri ou autre...)... Un ID commun est toujours conseillé...

On peut récupérer les valeurs de TEST par Powerquery et baser le tableau de Résultats sur le résultat de la requête : ainsi une actualisation maintient à jour...
 
RE

Je reste perplexe sur une copie à emplacement identiques : rien ne prouve qu'ils ne se désynchronisent pas (tri ou autre...)... Un ID commun est toujours conseillé...

On peut récupérer les valeurs de TEST par Powerquery et baser le tableau de Résultats sur le résultat de la requête : ainsi une actualisation maintient à jour...
merci mais mes tableaux ne sont pas des tableaux structurés, et j'ai lu que power query ne fonctionnera pas
 
Hello,

préambule : les cellules fusionnés, c'est MAL !!!
Défusionnez les cellules B85 à L110 et supprimez les colonnes vides
sélectionnez les cellules G4 à M27 du classeur TEST.xlsm (qui est déjà un classeur avec des liaisons), copier, activez le classeur resultats2.xlsx, dans le bouton Coller choisissez "Coller le lien".

NB : ça ne fonctionnera pas avec les cellules fusionnées !
 
Hello,

préambule : les cellules fusionnés, c'est MAL !!!
Défusionnez les cellules B85 à L110 et supprimez les colonnes vides
sélectionnez les cellules G4 à M27 du classeur TEST.xlsm (qui est déjà un classeur avec des liaisons), copier, activez le classeur resultats2.xlsx, dans le bouton Coller choisissez "Coller le lien".

NB : ça ne fonctionnera pas avec les cellules fusionnées !
merci je vais essayer
 
RE
merci mais mes tableaux ne sont pas des tableaux structurés, et j'ai lu que power query ne fonctionnera pa

Bien sûr que si !

On traite sans problème des plages de cellules, soit nommées issu du même classeur, soit même non nommées issues d'un classeur externe.

Nain porte quoi à dit:

classeur TEST.xlsm (qui est déjà un classeur avec des liaisons)

Effectivement si on utilise PowerQuery autant partir de la source de TEST. Tous ces ricochets sont inutiles...
 
Dernière édition:
Bonjour le forum,
préambule : les cellules fusionnés, c'est MAL !!!
Bah cela fait des années que je répète que les cellules fusionnées ne font de mal à personne !

Téléchargez les 2 fichiers joints dans le même dossier (le bureau) et voyez ces macros dans le ThisWorkbook de TEST.xlsm :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Me.Saved Then Me.Save 'évite l'invite à la fermeture
End Sub

Private Sub Workbook_Deactivate()
Dim nomfich$, fichier$, source As Range, dest As Range, col, i&, j%
nomfich = "resultats2.xlsx"
fichier = ThisWorkbook.Path & "\" & nomfich
If Dir(fichier) = "" Then MsgBox "Le fichier '" & nomfich & "' est introuvable !", 48: Exit Sub
Set source = Me.Sheets(1).[G4]
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Me.Saved Then Me.Save 'enregistrement du fichier
With Workbooks.Open(fichier) 'ouverture du fichier
    Set dest = .Sheets(1).[B88] 'modifiable
    col = Array(1, 3, 5, 6, 8, 10, 11) 'numéros des colonnes
    For i = 1 To 24
        For j = 1 To 7
            dest(i, col(j - 1)) = source(i, j)
        Next j
        If i Mod 2 Then dest(i, 12) = "=(RC[-9]+RC[-6])/RC[-1]"
    Next i
    .Close True 'enregistrement et fermeture du fichier
End With
Application.EnableEvents = True
End Sub
Le fichier de destination est mis à jour quand on ferme ou désactive le fichier source.

Edit : Set source = Me.Sheets(1).[G4] au lieu de Set source = [G4]

A+
 

Pièces jointes

Dernière édition:
@job75 si si, les fusion c'est MAL, très TRES mal même. Ca empêche un tas de truc et là ça vous oblige à macroter (alors qu'il n'y a aucune macro dans le fichier et l'utilisateur ne saura pas forcément maintenir votre code) au lieu d'utiliser des fonctionnalités de base du tableur (une simple collage avec liaison). Moi j'ai HORREUR de réinventer la roue et les fusions ne sont rien de plus qu'un présentation, rien à voir avec de la gestion.

JièL, Membre des AMIS
Anti Macros Inutilement Superfétatoires
😇
 
@job75 si si, les fusion c'est MAL, très TRES mal même. Ca empêche un tas de truc et là ça vous oblige à macroter (alors qu'il n'y a aucune macro dans le fichier et l'utilisateur ne saura pas forcément maintenir votre code) au lieu d'utiliser des fonctionnalités de base du tableur (une simple collage avec liaison). Moi j'ai HORREUR de réinventer la roue et les fusions ne sont rien de plus qu'un présentation, rien à voir avec de la gestion.

JièL, Membre des AMIS
Anti Macros Inutilement Superfétatoires
😇
le souci des feuilles excel c'est le fait qu'adapter les colonnes pur une style de tableau , cela implique que le modèle est figé sur toute le hauteur de la feuille. Un des fichiers que j'ai partagés est tiré d'une feuille avec plusieurs petits tableaux d'où mon besoin de fusionner les cellules.
 
@brunocean je connais bien le problème "Excel" qui mélange données et présentation. Je me doute que ça n'est pas volontaire mais du coup vous vous obligez à des gymnastiques qui font que ça complique largement qqchose qui est normalement TRES simple comme vous le constatez ici.
Au lieu de faire de simples formules vous devez utilisez du code 😢
 
Cette solution est meilleure car si le fichier de destination est ouvert il reste ouvert :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Me.Saved Then Me.Save 'évite l'invite à la fermeture
End Sub

Private Sub Workbook_Deactivate()
Dim nomfich$, fichier$, source As Range, wb As Workbook, dest As Range, col, i&, j%
nomfich = "resultats2.xlsx"
fichier = ThisWorkbook.Path & "\" & nomfich
If Dir(fichier) = "" Then MsgBox "Le fichier '" & nomfich & "' est introuvable !", 48: Exit Sub
On Error Resume Next: Set wb = Workbooks(nomfich): On Error GoTo 0
Set source = Me.Sheets(1).[G4]
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Me.Saved Then Me.Save
If wb Is Nothing Then Workbooks.Open fichier Else wb.Activate 'ouverture du fichier s'il n'est pas ouvert
With ActiveWorkbook
    Set dest = .Sheets(1).[B88] 'modifiable
    col = Array(1, 3, 5, 6, 8, 10, 11) 'numéros des colonnes
    For i = 1 To 24
        For j = 1 To 7
            dest(i, col(j - 1)) = source(i, j)
        Next j
        If i Mod 2 Then dest(i, 12) = "=(RC[-9]+RC[-6])/RC[-1]"
    Next i
    If wb Is Nothing Then .Close True Else .Save 'enregistrement et fermeture du fichier si nécessaire
End With
Application.EnableEvents = True
End Sub
 

Pièces jointes

@brunocean je connais bien le problème "Excel" qui mélange données et présentation. Je me doute que ça n'est pas volontaire mais du coup vous vous obligez à des gymnastiques qui font que ça complique largement qqchose qui est normalement TRES simple comme vous le constatez ici.
Au lieu de faire de simples formules vous devez utilisez du code 😢

@brunocean je connais bien le problème "Excel" qui mélange données et présentation. Je me doute que ça n'est pas volontaire mais du coup vous vous obligez à des gymnastiques qui font que ça complique largement qqchose qui est normalement TRES simple comme vous le constatez ici.
Au lieu de faire de simples formules vous devez utilisez du code 😢
Pour ne pas être obligé de faire des fusions de cellules, il faudrait ne travailler que sur le haut de la feuille ,un tableau à coté de l'autre pas pratique du tout au moment des impressions.
Microsoft devrait étudier de couper une feuille et de pouvoir repartir avec une nouvelle présentation mais bon c'est pas d'actualité loll
 
- 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

Discussions similaires

Réponses
1
Affichages
257
W
Réponses
1
Affichages
203
Retour