Problème enregistrement dans un autre dossier
Bonjour,
J'ai aujourd'hui besoin de votre aide concernant un code VBA utilisé pour l'enregistrement d'un fichier excel dans un autre dossier, tout en le renommant, lorsque l'on appuie sur un bouton disponible sur la fiche.
J'ai pu trouver une possibilité de code en glanant sur internet, cependant lorsque je tente de le mettre en place, j'ai une erreur d'exécution 1004 "La méthode SaveAs de l'objet Workbook a échoué"
Je souhaite en fait que ce fichier soit copier sur un autre dossier, partagé, en le renommant selon des variables apparaissant sur la feuille excel, préalablement remplie par l'utilisateur.
Voici mon code :
Dim nom As String
Dim prenom As String
Dim datecrea As String
Dim etat As String
Sub Sauvegarde()
Dim NomFichier As String
NomFichier = "\\srv-pierre\DGAS-PRS\1-SBSL\FICHES MOBILITES\TESTS\" & etat & nom & prenom & datecrea & ".xlsm"
ActiveWorkbook.SaveAs Filename:=NomFichier, FileFormat:=52
End SubJe précise que le lecteur est un emplacement réseau, et que c'est l'ordinateur qui m'a donné ce chemin pour y accéder...
Merci par avance pour votre aide !
Bonjour et bienvenue sur le forum
Je pense que l'erreur vient de la valeur de NomFichier
Que représentent exactement : "etat", "prenom" et " datecrea" ? des dossiers ? des variables ? du texte ?
Bye !
ce sont des variables, qui sont tous du texte hormis la date qui est la date du jour de création de la copie.
bonsoir Fusamasa, gmb et le forum
si ce sont des variables les noms doIvent servir a quelque chose, une variable seule ne sert a rien, voit l'exemple ci dessous, qui enregistre en .pdf et en .xlsx un documment dont tu doit changer les noms des chemins
Private Sub CommandButton1_Click()
Dim NomFicXL As String, CheminXL As String
Dim NomFicPDF As String, CheminPDF As String
Dim DLig As Long
Dim shp As Shape
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Sheets("Feuil1")
'sauvegarde a partir de la dernière ligne écrite
DLig = Sht.Range("A" & Rows.Count).End(xlUp).Row
Dim NomDeFichier As String
'donner le nom au fichier
NomDeFichier = Sht.Range("B11").Value & " - " & Sht.Range("D10").Value
NomFicXL = NomDeFichier & ".xlsx"
NomFicPDF = NomDeFichier & ".pdf"
'pensez a changer le chemin et créer les dossiers
CheminPDF = "D:\essai perso\facturePDF" & "\"
CheminXL = "D:\essai perso\Facturexlsx" & "\"
' Sauvegarder le classeur actif dans le chemin et le nom determiné
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=CheminXL & NomFicXL, FileFormat:=xlOpenXMLWorkbook, _
Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
' Exporter en PDF
ActiveWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminPDF & NomFicPDF, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "Votre sauvegarde porte la référence : " & " " & NomFicXL & vbCrLf _
& "Le fichier PDF à été créé sous le nom : " & NomFicPDF
Application.ScreenUpdating = False
Application.EnableEvents = False
'fermer et ré-ouvrir le classeur source, pas trouvé autre solution pour éviter _
que le classeur source garde le nom de la sauvegarde
Workbooks.Open Filename:="C:\Users\Pascal\Desktop\test pdf et xlsx"
ThisWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End SubBonjour,
Je suis désolé mais je ne comprends pas ce que tu veux dire.
Mes variables sont des données récupérées dans des cellules sur ma feuille. Je les ai déclarées ainsi car je m en sert dans un autre sub pour d autres choses.
Autant pour moi, je n'avais aperçu qu'une partie du code sur portable hier soir.
Je reviens vers vous dès que j'aurais revu mon code !
Re-Boujour à tous !
J'ai refais mon code en m'inspirant de celui proposé en exemple plus haut, cependant j'ai toujours la même erreur de méthode SaveAs ayant échoué. Je dois vraiment pas être doué je pense :p
Sub Sauvegarde()
Dim NomFichier As String
Dim Chemin As String
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Sheets("Fiche Mobilité")
NomFichier = Sht.Range("B5").Value & " - " & Sht.Range("B4").Value & " - " & Sht.Range("D10") & "" & Sht.Range("B10")
Chemin = "\\srv-pierre\DGAS-PRS\1-SBSL\SBSL\FICHES MOBILITES\TEST" & "\"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Chemin & NomFichier, FileFormat:=52, _
Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
MsgBox "La Fiche Mobilité est enregistrée et les services concernés sont notifiés"
Application.DisplayAlerts = False
Application.Quit
End SubRe-Bonjour !
J'ai pu trouver réponse à mon problème ! C'était tout simplement le format du contenu d'une de mes cellules qui, lors de l'enregistrement, redirigeait vers un dossier inexistant ( à cause d'un "\" qui n'aurait pas dû se trouver là) :s
Merci d'avoir pris de votre temps pour répondre à une cruche comme moi !