Problème sauvegarde fichier

Bonsoir et meilleurs voeux à toutes et tous

J'ai un soucis avec la sauvegarde de mon fichier où je souhaite automatiser la création des dossiers au cas où ils n'existeraient pas comme en cet instant de changement d'année.

Pour l'avoir testé, la sauvegarde en pdf ne pose pas problème MAIS le soucis se situe au niveau de la création du nouveau dossier où je reçois une erreur 76.

voici le code que j'avais récupéré et adapté à ma sauce locale et bien sûr impossible de trouver la faute (:-

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")

If Left(Range("B15").Value, 7) = "Facture" Then 'on isole le nom du document à sauvegarder ainsi que son répertoire
repertoire = Left(Range("B15").Value, 7)
Else
repertoire = Left(Range("B15").Value, 5)
End If

chemin = "D:\prog_facturation\oenotheque\enregistrer\" & Year(Date) & "\" & repertoire & "\"
nom_fichier = repertoire & "_" & ref_doc & ".pdf"

If fs.FolderExists(chemin) Then ' le repertoire existe donc rien a faire

Else: fs.CreateFolder (chemin) ' le repertoire n'existe pas donc on le crée

End If
Set fs = Nothing

Edit modo : merci de mettre le code entre balises avec le bouton </>

merci d'avance pour votre aide

Bonsoir Gouyasse

L'erreur 76 veut dire chemin introuvable

Il faudrait donc :

1) Définir toutes les variables

2) Mettre un Debug.print pour connaitre le contenu de "Chemin"

Code à tester

Sub Test()
  Dim Repertoire As String, Chemin As String
  Dim Nom_fichier As String
  Dim Ref_Doc
  Dim fs As Object
  ' Créer unes instance de FSO
  Set fs = CreateObject("Scripting.FileSystemObject")
  'on isole le nom du document à sauvegarder ainsi que son répertoire
  If Left(Range("B15").Value, 7) = "Facture" Then
    Repertoire = Left(Range("B15").Value, 7)
  Else
    Repertoire = Left(Range("B15").Value, 5)
  End If
  Chemin = "D:\prog_facturation\oenotheque\enregistrer\" & Year(Date) & "\" & Repertoire & "\"
  Nom_fichier = Repertoire & "_" & Ref_Doc & ".pdf"
  ' Aide au débogage et arrêt du code
  Debug.Print Chemin
  Stop
  ' Tester si le dossier existe
  If fs.FolderExists(Chemin) Then
    ' le repertoire existe donc rien a faire
  Else
    ' le repertoire n'existe pas donc on le crée
    fs.CreateFolder Chemin
  End If
  Set fs = Nothing
End Sub

Dans la fenêtre d'exécution sera indiqué le chemin complet à voir si cela correspond à ce que vous souhaitez

A+

fs.CreateFolder Chemin

Merci pour la réponse et voici ce que me donne debug print:

D:\prog_facturation\oenotheque\enregistrer\2022\Facture\

ceci correspond bien au chemin désiré sauf que l'année (2022) n'existant pas, je souhaite créer un nouveau répertoire par le biais de la ligne suivante:

fs.CreateFolder Chemin

c'est là que çà coince avec erreur 76 et ce malgré que les variables ont bien été déclarées.

Re,

Pour moi c'est logique, car il faut créer le dossier 2022, puis le dossier Facture

Il faudrait peut-être essayer avec l'instruction "Mkdir" au lieu de "fs.CreateFolder"

A+

J'ai en effet travaillé en 2 étapes et Tout fonctionne parfaitement.

merci pour votre aide

Rechercher des sujets similaires à "probleme sauvegarde fichier"