Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bomtala

XLDnaute Nouveau
Bonjour,

J'ai codé un bouton pour qu'il enregistre mon fichier excel après avoir créé un document dans un emplacement cible. La macro fonctionne parfaitement à un détail prêt:

Lorsque la fenêtre de sauvegarde s'ouvre, si je souhaite annuler l'enregistrement, le document s'enregistre tout de même. Je pense que la solution à mon problème est toute bête mais je n'arrive pas à la trouver ...

Voila la macro, merci de votre aide.

Private Sub CommandButton2_Click()

Dim chemin As String
Dim mondossier As String
Dim Fichier As String
On Error GoTo fin

'Nom du chemin
chemin = "C:\Users\"

'Nom du dossier
mondossier = Range("E8").Value

'nom du fichier
Fichier = Range("E8").Value & "_" & Range("B10").Value & ".xlsm"

'teste de la présence du dossier
If Dir(chemin & mondossier, 16) = "" Then MkDir chemin & mondossier

ChDrive "T:"
ChDir chemin & mondossier

Application.GetSaveAsFilename Fichier, "Fichier xlsm (*.xlsm*), *.xlsm*"
ActiveWorkbook.SaveAs Filename:=Fichier

fin:
End Sub
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Bonjour

à première vue (pas testé), ton getsave ouvre la boite de dialogue mais tu forces ensuite une autre sauvegarde par le saveas

essaie de supprimer la ligne saveas car je pense que quand cela te parait fonctionner (quand tu n'annules pas), tu fais 2 sauvegardes.

A noter qu'avec ton gatsave, tu proposes le nom mais qu'il est modifiable je pense....
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Bonjour Bomtala, ERIC S,


peut_être avec cette modif:
Code:
...
Sauve = Application.GetSaveAsFilename Fichier, "Fichier xlsm (*.xlsm*), *.xlsm*"
If Sauve Then
    ActiveWorkbook.SaveAs Filename:=Fichier
Else  ' Facultatif
    MsgBox "Enregistrement annulé"
End If
...
A+
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Merci de vos réponses à tous les deux. ERIC S, ta solution fonctionne parfaitement

Je remet le code dans sa version finale si ça peut servir à quelqu'un d'autre 😉

Private Sub CommandButton2_Click()

Dim chemin As String
Dim mondossier As String
Dim Fichier As String
On Error GoTo fin

'Nom du chemin
chemin = "C:\Users\"

'Nom du dossier
mondossier = Range("E8").Value

'nom du fichier
Fichier = Range("E8").Value & "_" & Range("B10").Value & ".xlsm"

'teste de la présence du dossier
If Dir(chemin & mondossier, 16) = "" Then MkDir chemin & mondossier

ChDrive "C:"
ChDir chemin & mondossier

Application.GetSaveAsFilename Fichier, "Fichier xlsm (*.xlsm*), *.xlsm*"

fin:
End Sub
 
Dernière modification par un modérateur:
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Bonjour, je ré-ouvre ce sujet car la macro ci-dessus qui fonctionnais jusqu'alors, me pose aujourd'hui problème.
Lorsque j'appuis sur mon bouton la fenêtre de sauvegarde s'ouvre au bon emplacement mais lorsque j'appuis sur enregistrer, elle se ferme mais le fichier ne se sauvegarde pas ...

Je n'ais pas changé l'emplacement de base de mon fichier. Avez vous une idée ?
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Bonjour

premier point à regarder je pense : en cas d'erreur tu sors. C'est peut-être ce qui arrive
pour tester met la ligne On error.... en commentaire
tu verras si une erreur est générée
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Salut ERIC S

Alors, le "On error" je l'avais placé parce que cette macro m'envoyait un message d'erreur lorsque j'annulais la sauvegarde.

J'ai suivis ton conseil : Aucun message d'erreur ne s'affiche que je sauvegarde ou que j'annule. Malheureusement mon fichier ne se sauvegarde pas :/
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Re

je ne comprends pas vraiment test dernières lignes :
1/ tu testes la présence du fichier sur C:
2/ tu changes de disque en allant sur T
3/ tu changes de répertoire C:.....
4/ le getsave te permet de déterminer un nom en te proposant le contenu de T: ????
5/ il faut faire une sauvegarde derrière, que tu peux annuler comme le proposait PAF, avec un test pour ne pas sauvegarder tout le temps

donc, je ne vois pas pourquoi cela marchait et je ne comprends pas ta balade entre C et T, où veux-tu créer ton répertoire et où veux-tu enregistrer ?
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

En fait, entre T et C, c'est une erreur de ma part. mon fichier est destiné à travailler sur T.
Pour simplifier l'explication sur le forum j'ai modifier T en C pour être sur le bureau ( pour que tout le monde puisse me répondre).

La macro créé un dossier à un emplacement spécifique avec un nom spécifique tirée des cellules de l'Excel. C'est la présence de ce dossier qui est testé.

De même le nom du fichier est tiré des cellules de l'Excel. Le fait de mettre mon emplacement me garantie de sauvegarder le fichier au bon endroit (enfin c'est ce qu'il me semble)
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Re

essaie

Code:
sauve = Application.GetSaveAsFilename(Fichier, "Fichier xlsm (*.xlsm*), *.xlsm*")

 If sauve = "Vrai" Then
     ActiveWorkbook.SaveAs Filename:=Fichier
 Else  ' Facultatif
     MsgBox "Enregistrement annulé"
 End If

par contre je n'ai pas encore bien compris où tu veux enregistrer : il ne faudrait pas un \ entre chemin et mondossier
chemin & "\" & mondossier
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

J'ai intégré les lignes de code mais ça ne me donne pas de résultat.

Je veux créer un sous-dossier dans un dossier contenu sur le disque T. Le fichier Excel serait alors enregistré dans le sous dossier.

J'ai essayé de placé le "\" mais ça n'a rien changé ...

Merci quand même pour ton aide 😉
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Bonjour à tous,

essaye en modifiant comme suit :
Code:
 If VarType(sauve) = vbBoolean Then
     MsgBox "Enregistrement annulé"
 Else
    ActiveWorkbook.SaveAs Filename:=Fichier
 End If

bon après midi
@+
 
Re : Mon fichier se sauvegarde même si j'annule ma demande (macro vba)

Re

le fichier suivant a l'air de fonctionner chez moi

edit :bonjour Pierrot - j'avais aussi un comportement bizarre sur le getsave avec les * après les xlsm
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
892
Réponses
2
Affichages
653
Réponses
3
Affichages
788
Réponses
9
Affichages
716
Retour