Bonjour à toutes et à tous,
Me revoilà, à nouveau,
J'ai un petit problème de mise à jour des données "en live". Pour faire simple, j'ai le Fichier A où il y a des données qu'on met à jour qui m'intéresse, j'ai donc un Fichier B qui a des formules et des liens vers ce Fichier A, pour prendre trier les infos qui m'intéresse, dans ce cas là tout va bien, les fichiers A & B se mettent à jours dès modifications ETC, cependant actuellement j'ai un Fichier C qui est une copie du fichier B (le code ci-dessous), le problème est que dans ce Fichier C, les formules vont chercher dans le Fichier B, les formules fonctionnent cependant lorsqu'il y a une modification dans le fichier A et que le fichier B est fermé, le fichier C ne se met pas à jour...
Comment puis-je régler ce problème, je ne pense pas pouvoir vous joindre les fichiers "confidentialité".
D'avance merci,
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim AnswerYes As String
Dim AnswerNo As String
AnswerYes = MsgBox("Voulez-vous exécuter la macro COPIE ?", vbQuestion + vbYesNo, "User Repsonse")
If AnswerYes = vbYes Then
'créer une copie qui enregistre et remplace le fichier excel back office visualisation dans le disque M
Dim Wb1 As Workbook
Dim Wb2 As Workbook ' le secnd Excel / classeur
Set Wb1 = ActiveWorkbook ' L'excel actif
'enlève les messages de l'application Excel
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
Sheets("chantier").Select
ActiveSheet.Unprotect
Set Wb2 = Application.Workbooks.Add(1)
'enlève les boutons macros
Application.CopyObjectsWithCells = False
'copie la feuille actif du classeur 1 sur le classeur 2
Wb1.Sheets(Array(Wb1.Sheets(1).Name)).Copy Before:=Wb2.Sheets(1)
'Wb2.Sheets("Chantier").Select
Wb1.Sheets("VE POUR LES OBJETS").Visible = True
Wb1.Sheets(2).Activate
ActiveSheet.Unprotect
Wb1.Sheets(Array(Wb1.Sheets(12).Name)).Copy after:=Wb2.Sheets(1)
Wb2.Sheets("VE POUR LES OBJETS").Unprotect
'garde les couleurs d'origines !
ActiveWorkbook.Theme.ThemeColorScheme.Load ( _
"C:\Program Files (x86)\Microsoft Office\root\Document Themes 16\Theme Colors\Office 2007 - 2010.xml" _
)
'supprime la feuille vide
Wb2.Sheets(Wb2.Sheets.Count).Delete
'remasque la feuille VE pour objets du fichier d'origine + protège la feuille chantier du fichier d'origine
Wb1.Sheets("VE POUR LES OBJETS").Protect
Wb1.Sheets("VE POUR LES OBJETS").Visible = False
Wb1.Sheets(1).Activate
ActiveSheet.Protect
'reviens sur la copie et masque la feuille VE pour objets !
Wb2.Sheets(2).Activate
Wb2.Sheets("VE POUR LES OBJETS").Protect
Wb2.Sheets("VE POUR LES OBJETS").Visible = False
'On est dans l'Excel WB2 (second classeur Excel !)
'verouille les cellules pour la protection
Wb2.UpdateLinks = xlUpdateLinksAlways 'test mise à jour automatique !
Range("B2:J2701").Select
Selection.Locked = True
Selection.FormulaHidden = False
'protège la feuille !
Wb2.Sheets(1).Activate
Wb2.Sheets(1).Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
True, AllowUsingPivotTables:=True
Wb2.Sheets(1).Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
True, AllowUsingPivotTables:=True
Range("E1").Select
ChDir "chemin_exemple"
'ActiveWorkbook.SaveAs Filename:="CLASSEMENT " & ".xls"
'ThisWorkbook.SaveAs Filename:="CLASSEMENT ", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Wb2.SaveAs Filename:="CLASSEMENT ", FileFormat:=xlOpenXMLWorkbookMacroEnabled, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
Wb2.Close
Wb1.Saved = True
Else
End If
End Sub