Comme le titre l'indique, j'ai fait une procédure pour exporter un certain nombre de feuilles d'un classeur dans deux répertoires distincts. Comme les fichiers ont toujours le même nom, je souhaite écraser les anciens pour les remplacer par les fichiers à jour.
Voici le code en question :
Sub export()
Dim id As String
Dim exalead As String
Dim sheet As Worksheet
Dim workbk As Workbook
Dim i As Long
If MsgBox("Vous allez écraser les anciennes versions des fichiers CSV", vbOKCancel + vbInformation, "Demande de confirmation") = vbOK Then
Application.ScreenUpdating = False
For i = 4 To Sheets().Count
Application.DisplayAlerts = False
id = ThisWorkbook.Worksheets(i).name
ThisWorkbook.Sheets(i).Activate
If Range("A1").Value = "sec_partner_level_1" Then
exalead = "R:\secured\"
Else
exalead = "R:\unsecured\"
End If
ThisWorkbook.Sheets(i).Copy
ActiveWorkbook.SaveAs FileName:=exalead & id & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False, ReadOnlyRecommended:=True
ActiveWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
Next
ThisWorkbook.Sheets(1).Activate
ThisWorkbook.Sheets(1).Activate
Range("J16").Value = "Last export : " & Now()
MsgBox "Exportation terminée"
End If
End Sub
Sauf que problème : il n'enregistre rien, et laisse les anciennes versions en l'état...
Selon moi cela vient du fait que tu n'initialise pas les objets suivants
Dim sheet As Worksheet
Dim workbk As Workbook
De plus tu es sur de cette ligne là :
For i = 4 To Sheets().Count
tu souhaites bien copier les feuilles 4 jusqu'a la derniere ?
Exporter en VBA en écrasant les anciens fichiers
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.