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 = NothingEdit 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 SubDans la fenêtre d'exécution sera indiqué le chemin complet à voir si cela correspond à ce que vous souhaitez
A+
fs.CreateFolder CheminMerci 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 Cheminc'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