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.
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 SubMerci beaucoup pour la rapidité de la réponse, ça fonctionne c'est ok !