Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exporter en VBA en écrasant les anciens fichiers

    23 juillet 2018 à 13:07:45

    Hello tout le monde,

    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... 

    Une idée du problème ?

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      25 juillet 2018 à 11:06:18

      Bonjour,

      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 ?

      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown