Enregistrer classeur vba

matthieu2701

XLDnaute Occasionnel
Bonjour,

Je souhaite enregistrer mon classeur dans un chemin définit. Il s'enregistre sous le nom que j'ai définis c'est a dire NOM Prénom PCE GAZ-Perd.

Cela fonctionne.

Par contre, lorsque je souhaite le réouvrir pour le modifier puis le ré-enregistrer j'ai un message d'errer qui est : "impossible d'accéder à NOM Prénom PCE Gaz-Perd.xlsm"

Je vous joint mon code. Pouvez m'aider à résoudre ce soucis ? Je souhaiterais qu'il indique que le fichier existe déjà et qui demande si je souhaite le remplacer ou pas.

Sub Enregistrer_Classeur()

With Sheets("Echéancier")
Nom = .Range("B2")
PCE = .Range("G6")
End With

If Nom = "" Or PCE = "" Then
MsgBox "Pour enregistrer le classeur d'un client, veuillez remplir les champs Nom Prénom et PCE et créer le dossier client.", vbInformation, "Information"
Exit Sub
End If

If Dir("Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours\" & "\" & Nom & " " & PCE, vbDirectory) = "" Then
MsgBox "Le dossier numérique de " & Nom & " " & PCE & " n'a pas été créé. Veuillez le créer puis recommencer.", vbCritical, "Attention"
Exit Sub
End If

If Dir("Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours\" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd", vbDirectory) <> "" Then
MsgBox "Le classeur de " & Nom & " a déjà été créé.", vbCritical, "Attention"
Exit Sub
End If

ChDir "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours\" & "\" & Nom & " " & PCE
ActiveWorkbook.SaveAs Filename:= _
"Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours\" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd", FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Merci par avance
 

matthieu2701

XLDnaute Occasionnel
Re : Enregistrer classeur vba

Bonjour matthieu2701, Bonjour le Forum,

Je veux bien essayer de t'aider (je suis débutant). Tu as ci-après le code de Herdet qui fonctionne également chez moi. Est-ce que tu peux le recopier, y compris Option Explicit, et dire à quel endroit ça plante (avec F8 par exemple) :
Code:
Option Explicit

Sub MOD_Enregistrer_Classeur()
Dim Nom As String, PCE As String
Dim Ext As String, Dossier As String, Fichier As String
Dim Reponse As Integer

    Ext = ".xls" ' extension à adapter selon la version d'Excel
    
    ThisWorkbook.Activate
    With Sheets("Echéancier")
      Nom = .Range("B2")
      PCE = .Range("G6")
      If Nom = "" Or PCE = "" Then
         .Range("B2").Select
         MsgBox "Pour enregistrer le classeur d'un client, veuillez remplir les champs Nom Prénom et PCE.", vbInformation, "Information"
         End
      End If
   End With
   
   Dossier = "D:\Excel\Aides\" & Nom & " " & PCE
   Fichier = Nom & " " & "Gaz-Perd" & Ext
   
   ' création du dossier s'il n'existe pas
   If Dir(Dossier, vbDirectory) = "" Then MkDir Dossier
   ChDir Dossier

   If Dir(Dossier & "\" & Fichier, vbNormal) <> "" Then
      Reponse = MsgBox("Le classeur de " & Nom & " existe déjà." & vbLf & vbLf & _
                       "Confirmez-vous son remplacement ?", vbYesNo, "Attention")
      If Reponse = vbNo Then End
   End If
   
   ' sauvegarde du fichier
   ThisWorkbook.SaveAs Filename:=Dossier & "\" & Fichier ', FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
La principale différence avec ton code, c'est de mettre une extension à ton fichier qui soit toujours la même.

Bonne chance et
A+

J'ai pas essayé avec Option Explicit. C'est obligatoire ?
 

Jack2

XLDnaute Occasionnel
Re : Enregistrer classeur vba

Bonjour,

Si ça marche non, mais cela oblige à définir les variables et donc de mieux comprendre ce que je fais (pratique quand on débute). Pour le code en question, les variables sont définies. Tu ne m'as pas dit si cela marchait !!

A+
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
309

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote