XL 2010 Lier deux cellules de classeurs différents. [RESOLUE]

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 !

AngelNight

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais lier deux cellules de deux classeurs différents, qui ne seront pas ouvert en même temps.

Exemple :
• Si je modifie la cellule A1 du classeur 1, ça se répercute automatiquement dans la cellule A1 du classeur 2.
• Et inversement : si je modifie la cellule A1 du classeur 2, ça se répercute automatiquement dans la cellule A1 du classeur 1.

Cette formule de "BOISGONTIER" correspond à ce que je cherche, mais seulement pour deux cellules du même classeur :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
Sheets(2).[A3] = Target
End If
End Sub


(Source : https://www.excel-downloads.com/threads/lier-deux-cellules.100601/#post-571335)

Mes connaissances en VBA sont très limités, donc je serais reconnaissant si vous pouviez fournir une réponse détaillé et facilement compréhensible.

Je vous remercie par avance.

Cordialement,
AngelNight
 
MISE A JOUR APRES LA REMARQUE DE JOB CI-DESSOUS
(merci Job)

Bonjour,

ci-joint 2 classeurs dont les cellules A1 de Feuil1 sont synchronisées.

Le principe: quand on change le contenu de la cellule A1, on sauvegarde ce contenu le registre windows

Dans Feuil1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

  If Not Intersect([A1], Target) Is Nothing Then SaveSetting "Sync", "data", "A1", [A1].Formula
End Sub

Quand on active l'autre classeur, on récupère le contenu du registre et on l'affecte à A1 de Feuil1

Dans ThisWorkbook
Code:
Private Sub Workbook_Activate()
  Feuil1.[A1].Value = GetSetting("Sync", "data", "A1", "")
End Sub
 

Pièces jointes

Dernière édition:
Re,

Pour éviter le problème que j'ai soulevé enregistrer le classeur à chaque modification de A1 :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1], Target) Is Nothing Then _
  SaveSetting "Sync", "data", "A1", [A1].Formula: ThisWorkbook.Save
End Sub
A+
 
Bonjour AngelNight,Iznogood1, le forum,

La solution avec SaveSetting va bien à condition qu'il n'y ait qu'un seul utilisateur des fichiers.

Si les fichiers peuvent être ouverts par plusieurs utilisateurs voici une solution :
Code:
Private Sub Workbook_Activate()
Dim i%, dat As Date, memdat As Date, n%, wb As Workbook, ouvre As Boolean
'---initialisations à adapter---
Dim chemin(1 To 2), fichier(1 To 2)
chemin(1) = Me.Path & "\"
chemin(2) = Me.Path & "\"
fichier(1) = "Fichier1.xlsm"
fichier(2) = "Fichier2.xlsm"
'---dates/heures de dernière modification---
On Error Resume Next 'si un fichier n'est pas trouvé
For i = 1 To UBound(chemin)
  dat = 0
  dat = FileDateTime(chemin(i) & fichier(i))
  If dat > memdat Then memdat = dat: n = i
Next
If Me.FullName = chemin(n) & fichier(n) Then Exit Sub
'---copie la cellule "Cible"---
Application.EnableEvents = False 'désactive les évènements
Set wb = Workbooks(fichier(n))
If wb Is Nothing Then ouvre = True: Application.ScreenUpdating = False: _
  Set wb = Workbooks.Open(chemin(n) & fichier(n))
Evaluate("'" & wb.Name & "'!Cible").Copy Evaluate("'" & Me.Name & "'!Cible") 'cellules nommées
If ouvre Then wb.Close False
Application.EnableEvents = True ' réactive les évènements
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Evaluate("'" & Me.Name & "'!Cible") 'cellule nommée
  If Sh.Name = .Parent.Name Then If Not Intersect(Target, .Cells) Is Nothing Then Me.Save
End With
End Sub
Les fichiers doivent avoir des noms différents et toutes les cellules synchronisées sont nommées Cible.

Fichiers joints à télécharger dans le même dossier (le bureau) pour tester.

A+
 

Pièces jointes

- 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
4
Affichages
148
Réponses
3
Affichages
537
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Retour