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

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
 

ERIC S

XLDnaute Barbatruc
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....
 

Paf

XLDnaute Barbatruc
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+
 

Bomtala

XLDnaute Nouveau
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:

Bomtala

XLDnaute Nouveau
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 ?
 

ERIC S

XLDnaute Barbatruc
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
 

Bomtala

XLDnaute Nouveau
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 :/
 

ERIC S

XLDnaute Barbatruc
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 ?
 

Bomtala

XLDnaute Nouveau
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)
 

ERIC S

XLDnaute Barbatruc
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
 

Bomtala

XLDnaute Nouveau
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 ;)
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

ERIC S

XLDnaute Barbatruc
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

  • claseur_ES.xlsm
    20.2 KB · Affichages: 51
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 672
Messages
2 090 776
Membres
104 664
dernier inscrit
jth