Problème liens à jour entre 3 fichiers Excel

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

Bonjour

Si C est une copie de B, autant utiliser B, non ?

Sinon à part ouvrir le fichier pour qu'il se mette à jour... il n'y a pas de possibilité de mise à jour des liaisons d'un classeur fermé...

Hello Chris,

Le problème est que je fais une copie pour éviter de donner le fichier original qui est bien plus lourd car il a beaucoup de MACRO.

La copie prend l'essentiel ce qui permet d'avoir un fichier bien léger.

Je m'attendais pas à aucune possibilité :(

Peut-être en copiant les feuilles sources également dans la copie ?

RE

Voir aussi si au lieu de liaisons par formules, tu ne pourrais pas utiliser PowerQuery... sans aucun contexte difficile de donner des pistes

Re,

je vais essayer de faire un exemple très simple avec des fichiers nommés A, B & C.

avec PowerQuery ce serait automatique ?

Re,

Voici les fichiers Exemple (A,B & C ) avec les formules rechercheV, j'ai volontairement enlevé le chemin.

11fichier-a.xlsx (8.54 Ko)
7fichier-b.xlsx (10.00 Ko)
9fichier-c.xlsx (8.77 Ko)

Encore merci pour vos recherches !

RE

Avec un exemple aussi simpliste et pas de contexte opérationnel je ne vois pas comment t'aider...

Le principe de PowerQuery est d'aller chercher l'info dans un ou n fichier fermés ou ouverts (mais c'est la version enregistrée qui est considérée dans ce cas) et de l'utiliser dans un classeur

re,

Ah, sorry, alors pour un peu de contexte. Fichier A = Saisi d'info sans formule ni rien, Fichier B, on a une feuille source qui prend les infos du Fichier A, puis la feuille 1 du fichier B fait un RechercheV pour chercher l'info dans Fichier B_SOURCE et finalement le Fichier C qui est une copie du FICHIER B via le CODE.

Je ne peux pas mettre du PowerQuery dans mon VBA, si ?

RE

On peut mais cela n'a généralement pas d'intérêt en dehors de l'actualisation ou de la mise à disposition de paramètres

J'avais compris le principe mais ce qui n'est pas clair c'est l’intérêt de cette approche d'un point de vue opérationnel.

C peut directement interroger A et B...

Re,

As-tu une autre solution que de copier le fichier B ? Car le fichier A, tout le monde a accès et le B je suis le seul à le modifier cependant moi je veux leur donner une copie avec laquelle ils peuvent faire n'importe quoi mais que les liens se mettent à jour...Car nous avons trop de novices d'Excel.

Vincent

Bonjour

Interroger n'est pas copier : on accède au contenu mais on ne peut le modifier comme quand tu regardes une page web

Re,

Que veux-tu dire par "interroger" ?

Avec cette méthode il y aurait toujours un fichier C ou tu parles de protéger correctement le B ?

RE

Tu n'as vraiment aucune notion de base de données ?

Quant tu cherches une info sur le web elle s'affiche à l'écran, tu peux la lire mais pas la modifier.

Là c'est la même chose : la requête accède aux fichiers A et B et affiche leurs données, tout ou partie, selon les principes et la forme définis dans la requête.

Les données peuvent donc être utilisées dans C mais même si on modifie ce qui est affiché, ces modifs disparaitront et les données de la source réapparaitront

Re,

Comment je peux faire du coup ?

Car le fichier C, sert uniquement pour visualiser.

Bonjour

Travailler par requête PowerQuery mais sans fichiers représentatifs, on ne peut t'aider concrètement

Re bonjour,

Peut-on donc avec du VBA excel faire appel à PowerQuery ?D'avance merci

Bonjour

Toujours des questions vagues et hors contexte ...

VBA peut invoquer PowerQuery mais en général on se limite à des actualisations ou éventuellement des passages de paramètre car il est contreproductif de construire des requêtes par VBA.

Bonjour,

Désolé, c'est vraiment un terrain nouveau pour moi, PowerQuery serait donc capable de mettre à jour les liens à l'ouverture du fichier C ?

Cela permettrait de mettre à jour tous les statuts.

RE

Relis mes messages : comme déjà dit c'est comme une page web.

Si tu as regardé hier le prix du machin chose sur amazon, ojd avec le même lien, tu auras le nouveau prix, identique ou + ou - cher

PowerQuery interroge la source, et selon le besoin on peut obtenir une copie volatile, éventuellement réorganisée autrement dans le classeur ou bien construire dessus un TCD...

Rechercher des sujets similaires à "probleme liens jour entre fichiers"