Ouverture fichiers (boucle) validation "MAJ liaisons" boite

Bonjour à tous,

Débutant dans le langage VBA, je suis confronté à un problème que je ne parviens pas à résoudre.

La macro constituée me permet la compilation de plusieurs fichiers ( au même format ) en un seul fichier.

A.XLS + B.XLS + .... = fichierunique.xls

La logique est d'ouvrir le fichier A.XLS /copier/coller en valeur dans fichier unique.xls/ fermer A.XLS puis passer à B.XLS et ainsi de suite via une boucle.

Néanmoins, il apparait que l'ensemble de ces fichiers ont des liaisons avec d'autres fichiers. Par conséquent, je souhaiterais savoir (afin de ne pas répéter l'action x fois) comment écrire dans ma macro : lors de chaque ouverture de fichier, à l'arrivée des boites de dialogues, tu " mets à jours les liaisons" (1ère boite de dialogue) et "continuer" lors de l'apparition de la deuxième boite.

D'avance je vous remercie pour les éléments de réponse que vous pourrez m'apporter.

Jeremy.

Ps: ci-joint, la macro.

20macro-compil.zip (24.05 Ko)

Bonjour,

modifications à tester

Sub Compilation()

Dim fichier, nomfich  As String
Dim Chemin, chemFin As String
Dim model, fiche As Workbook
Dim DernLigne As Long

Application.DisplayAlerts = False 'Evite les messages d'Excel
Application.EnableEvents = False 'Evite l'exécution éventuelle de macros liées aux fichiers ouverts

'Chemin = "D:\Profiles\JeJEAUNET\Bureau\test\" 'Chemin du répertoire contenant les fichiers
Chemin = ThisWorkbook.Worksheets("Compilation").TextBox1.Text
fichier = Dir(Chemin & "\" & "*.xls")
chemFin = ThisWorkbook.Worksheets("Compilation").TextBox4.Text
nomfich = ThisWorkbook.Worksheets("Compilation").TextBox3.Text
' instruction ajoutée
Application.AskToUpdateLinks = False
'
Do Until fichier = ""

 ' Fiche vide à remplir
Set model = Application.Workbooks.Open(ThisWorkbook.Worksheets("Compilation").TextBox2.Text)

'Set fiche = Application.Workbooks.Open(Chemin & "\" & fichier)
' instrutction modifiée
Set fiche = Application.Workbooks.Open(Chemin & "\" & fichier, UpdateLinks:=True)
'
    fiche.Worksheets("Matrice").Select 'nom de la feuille source (commune à tous les fichiers sources)
    Worksheets("Matrice").Protect userinterfaceonly:=True, Password:="TEST"
    Rows("2:" & Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row).Select 'selectionner de la ligne 2 à la derniere ligne non vide

    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Copy

    model.Activate
    Sheets("Feuil1").Select
    Cells(65535, 1).End(xlUp)(2).Select 'recherche de la première ligne vide
    ActiveSheet.Paste
    model.Save

    fiche.Close

    fichier = Dir
Loop
' instruction ajoutée
Application.AskToUpdateLinks = True
'
enregist = chemFin & "\" & nomfich & ".xls"
model.SaveAs Filename:=enregist
Range("A2").Select
ActiveWorkbook.Close

Set model = Application.Workbooks.Open(ThisWorkbook.Worksheets("Compilation").TextBox2.Text)
Rows("2:" & Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row).Delete 'selectionner de la ligne 2 à la derniere ligne non vide
Range("A2").Select
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.EnableEvents = True
Application.DisplayAlerts = True

End Sub

Merci beaucoup pour la rapidité de la réponse, ça fonctionne c'est ok !

Rechercher des sujets similaires à "ouverture fichiers boucle validation maj liaisons boite"