Sauvegarde

Manu -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à Tous,
J'aurais besoin d'aide et d'avis pro...
Voilà ce que j'ai écris :

Sub sauvegarde()
Repertoire = "R:\Technique-Maintenance\Sauvegarde-Stock\"
nom = "Sauvegarde de " & ThisWorkbook.Name & " du " & Format(Now, "dd mm yyyy") & ".xls"
If Dir(Repertoire, 16) = "" Then
MkDir Repertoire
ThisWorkbook.SaveCopyAs Repertoire & nom
End If
'------------
Fichier = Dir(Repertoire)
If Date - CDate(Left(Mid(Fichier, Len(ThisWorkbook.Name) + 19, Len(ThisWorkbook.Name)), 10)) > 90 Then
If MsgBox("La date de sauvegarde de votre fichier est périmée." & vbLf & "Voulez-vous procéder à une nouvelle sauvegarde", 292, "Information") = 6 Then
Kill Repertoire & Fichier
ThisWorkbook.SaveCopyAs Repertoire & nom
End If
Else
[e13] = "Il reste " & 90 - (Date - CDate(Left(Mid(Fichier, Len(ThisWorkbook.Name) + 19, Len(ThisWorkbook.Name)), 10))) & " jour(s) avant la prochaine sauvegarde AUTO "
End If
End Sub

Lors de l'exécution le message d'erreur est :

erreur d'exécution '13'
incompatibilité de type

Le fichier cible "R:\Technique-Maintenance\Sauvegarde-Stock\" est bien vide.

Voilà, merci de votre aide.
@++

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Pas de problème en déclarant les variables :
    Option Explicit
    Sub sauvegarde()
    Dim repertoire As String
    Dim nom As String
    Dim fichier As String
    
      repertoire = "R:\Technique-Maintenance\Sauvegarde-Stock\"
      nom = "Sauvegarde de " & ThisWorkbook.Name & " du " & Format(Now, "dd mm yyyy") & ".xls"
      If Dir(repertoire, 16) = "" Then
        MkDir repertoire
        ThisWorkbook.SaveCopyAs repertoire & nom
      End If
      '------------
      fichier = Dir(repertoire)
      If Date - CDate(Left(Mid(fichier, Len(ThisWorkbook.Name) + 19, Len(ThisWorkbook.Name)), 10)) > 90 Then
        If MsgBox("La date de sauvegarde de votre fichier est périmée." & vbLf & "Voulez-vous procéder à une nouvelle sauvegarde", 292, "Information") = 6 Then
          Kill repertoire & fichier
          ThisWorkbook.SaveCopyAs repertoire & nom
        End If
      Else
      [e13] = "Il reste " & 90 - (Date - CDate(Left(Mid(fichier, Len(ThisWorkbook.Name) + 19, Len(ThisWorkbook.Name)), 10))) & " jour(s) avant la prochaine sauvegarde AUTO "
      End If
    End Sub
    
    0