Macro enregistrer sous plusieurs fichiers

Bonjour,

J'ai un fichier de calcul, qui a des liaisons, et en cellule I1, il faut renseigner le nom du pays, enregistrer sous le nom du fichier, rompre les liaisons, et faire la même chose pour tous les pays. Je voudrais créer une macro pour qu'il reconnaisse automatiquement les pays depuis une liste prédéfinie (fichier Analyse), qu'il saisisse le pays en cellule I1, enregistrer le fichier en rompant les liaisons, etc. Il peut renommer le fichier Envoi pays_"pays" qu'il va prendre de la cellule I1

Ci-dessous la macro qui ne fait qu'enregistrer sous. L'idée est donc de la mettre en automatique pour tous les pays de la liste.

merci d'avance.

Cordialement,

Hajar

Sub Archiver()

Dim CM As Workbook

Dim OM As Worksheet

Dim CC As Workbook

Dim NC As String

Dim extension As String

Dim chemin As String, nomfichier As String

Dim lks As Variant

Set CM = ThisWorkbook

Set OM = ThisWorkbook.ActiveSheet

NC = ThisWorkbook.FullName

Application.ScreenUpdating = False

If OM.Range("I1").Value = "" Then

MsgBox "Vous devez renseigner le nom en I1 !"

Range("I1").Select

Exit Sub

End If

extension = ".xlsx"

chemin = "C:\Users\utilisateur\Desktop\Envois\Pays\"

nomfichier = OM.Range("I1") & "_Envoi pays_" & extension

Application.DisplayAlerts = False

CM.SaveAs Filename:=chemin & nomfichier, FileFormat:=51

Application.DisplayAlerts = True

Set CC = ActiveWorkbook

On Error Resume Next

CC.ActiveSheet.DrawingObjects(1).Delete

On Error GoTo 0

lks = CC.LinkSources(1)

If Not IsEmpty(lks) Then

For i = 1 To UBound(lks)

CC.BreakLink Name:=lks(i), Type:=xlExcelLinks

Next i

End If

Workbooks.Open NC

CC.Close SaveChanges:=True

Application.ScreenUpdating = True

End Sub

17envoi-pays.xlsx (14.78 Ko)
7analyse.xlsx (10.17 Ko)

Bonjour,

à tester, la macro doit être dans le fichier "analyse.xlsm"

j'ai supposé que les fichiers "analyse.xlsm" et "Envoi pays.xlsx" sont dans le même répertoire

et que les fichiers (pays) crées seront enregistrés dans le même répertoire

Option Explicit
Sub Archiver()
Dim wk1 As Workbook, CC As Workbook
Dim wk2 As String, chemin As String, extension As String, Pays As String
Dim i As Integer, n As Integer
Dim lks As Variant

chemin = ThisWorkbook.Path & "\"
Set wk1 = ThisWorkbook
wk2 = "Envoi pays.xlsx"
extension = ".xlsx"

Application.ScreenUpdating = False

For n = 4 To 11  'adapter à la plage de cellules Nom de ville
    Pays = wk1.Sheets("Feuil1").Range("D" & n)  'adapter à la plage de cellules Nom de ville
    If Pays <> "" Then
        Workbooks(wk2).Sheets("2017").Range("I1") = Pays
        Workbooks(wk2).SaveAs Filename:=chemin & Pays & "_Envoi pays_" & extension, FileFormat:=51
        Set CC = Workbooks(Pays & "_Envoi pays_" & extension)

        On Error Resume Next
        CC.ActiveSheet.DrawingObjects(1).Delete

        On Error GoTo 0
        lks = CC.LinkSources(1)
        If Not IsEmpty(lks) Then
            For i = 1 To UBound(lks)
                CC.BreakLink Name:=lks(i), Type:=xlExcelLinks
            Next i
        End If

        CC.Close SaveChanges:=True
        Workbooks.Open chemin & wk2
    End If
Next n
Application.ScreenUpdating = True
End Sub
17analyse.xlsm (18.34 Ko)

Bonjour,

Un grand merci pour la macro elle est parfaite !

deux remarques si tu le permets:

1- Il faut obligatoirement ouvrir le fichier Envoi pays pour que la macro démarre (je l'ai réalisé après deux tentatives de lancer la macro), mais ce n'est pas un souci.

2- Vu que les fichiers sont liés, une fois la macro est lancée, il faut à chaque fois cliquer sur "Continuer" pour les messages de liens qui apparaissent. Cette étape peut elle être automatisée ? Sinon en cliquant sur continuer uniquement suis je sure d'avoir les fichiers qui s'actualisent avec les bons liens ?

Merci d'avance.

Cordialement,

Hajar

essai en ajoutant en début de macro

Application.DisplayAlerts = False

et en fin de macro

Application.DisplayAlerts = True

Parfait merci beaucoup !

bonne journée

Cdt

Hajar

Rechercher des sujets similaires à "macro enregistrer fichiers"