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 brunocean, le forum,
Au lieu de faire de simples formules vous devez utilisez du code 😢
Le code n'est pas indispensable, on peut créer manuellement des formules de liaison, les cellules fusionnées ne gênent pas.

Cela dit c'est laborieux et il vaut mieux créer/mettre à jour les formules de liaison par macro :
VB:
Sub Mise_a_jour_des_formules_de_liaison()
Dim nomfich$, fichier$, source As Range, form$, 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
Application.ScreenUpdating = False
ThisWorkbook.Activate
Set source = [G4]
form = "='[" & ThisWorkbook.Name & "]" & ActiveSheet.Name & "'!"
With Workbooks.Open(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)) = form & source(i, j).Address(0, 0) 'formule de liaison
        Next j
        If i Mod 2 Then dest(i, 12) = "=(RC[-9]+RC[-6])/RC[-1]"
    Next i
    .Save 'enregistrement du fichier
End With
End Sub
A+
 

Pièces jointes

Le code n'est pas indispensable, on peut créer manuellement des formules de liaison, les cellules fusionnées ne gênent pas.

@job75 effectivement, il n'est pas indispensable, on aurait pu faire des formules manuellement, mais oui, les cellules fusionnées gênent car on ne peut pas recopier la formule qui serait dans la première cellule ni faire un simple collage avec liaison, il faudrait soit faire un formule complexe qui prendrait en compte les décalages dus aux fusions, soit faire chaque formule individuellement. Donc je persiste et signe : les fusion c'est MAL ! 😡😀

NB : si le code n'était pas indispensable, pourquoi c'était votre premiere intention ? 😇
 
Parce que je ne trouve pas qu'ici les formules de liaison soient la solution la plus simple.
Soit c'est de la mauvaise foi soit c'est jessépakoi 😎
Votre code ne ferait il pas des formules de liaison ?
VB:
dest(i, col(j - 1)) = form & source(i, j).Address(0, 0) 'formule de liaison
Sans les fusions il n'y aurait donc eu aucune raison de faire du code, non ? 😉
 
- 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