Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Annuler fenetre "enregistrer sous"

  • Initiateur de la discussion Initiateur de la discussion yves03
  • Date de début Date de début

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 !

yves03

XLDnaute Occasionnel
J'utilise cette macro pour copier une feuille dans un fichier, mais je voudrais pouvoir sortir de la macro si l'on appuie sur le bouton "Annuler" de la fenetre "enregistrer sous".
J'ai fait diverse tentative avec :

Code:
If x = false then exit sub

ça fonctionne à moitie, car j'ai
Code:
Activesheet.copy
avant, et si je le met apres, ça ne marche pas.

Si vous avez une idéé, voici le code:

Merci d'avance.

Code:
Sub Archive()
Dim archivage As String
Dim nom As String
Dim datt As String

Sheets("Historique Cde").Unprotect password:="yves"
If Range("A3").Value = "" Then
MsgBox "Archivage impossible, votre Historique est vide !! ", vbExclamation, "Attention..."
Exit Sub
End If

archivage = MsgBox(" Voulez-vous archivez votre Historique des Commandes ?", vbYesNo + vbExclamation, "Archivage")
If archivage = 7 Then Exit Sub
MsgBox "L'Historique des Commandes sera éffacé et sauvegardé ", vbInformation, "INFO"

ActiveSheet.Copy

datt = CStr(Format(Date, "dd mmmm yyyy"))
nom = CStr("Archive Cde ") & datt & ".xls"
Application.Dialogs(xlDialogSaveAs).Show nom

Application.ScreenUpdating = False
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
Sheets("Historique Cde").Unprotect password:="yves"
Call effacehisto
Sheets("Historique Cde").Protect password:="yves"
Application.ScreenUpdating = True
End Sub
 
Re : Annuler fenetre "enregistrer sous"

Bonjour yves,

Voilà la méthode que j'utilise en général, ça permet de faire un test avant de faire l'enregistrement :

Code:
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogSaveAs)
rep = FD.Show
If rep = False Then Exit Sub
FD.Execute
 
Re : Annuler fenetre "enregistrer sous"

bonsoir


Il me met une erreur sur cette ligne
Dim FD As FileDialog


Peut être utilises tu une version d'Excel antérieure à 2002. Dans ce cas tu peux essayer:


Code:
Sub ChoixFichier()
    'La variable est de type Variant car elle peut prendre les valeurs:
        'Booleenne: (Vrai/Faux) quand l'utilisateur ne sélectionne rien, ou annule l'opération.
        'String: pour renvoyer le nom du fichier sélectionné.
    Dim Fichier As Variant
    
    'Affiche la boîte de dialogue "Ouvrir"
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    
    'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
    'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
    If Fichier = False Then Exit Sub
    
    'Affiche le chemin et le nom du fichier sélectionné.
    MsgBox Fichier
    
End Sub


bonne soirée
michel
Microsoft Excel MVP

 
Re : Annuler fenetre "enregistrer sous"


Oui j'utilise Excel 2000.

Ta macro fonctionne, mais par contre je ne sais pas comment l'adapter a ma macro que j'ai mis dans le 1er post.
Si quelqu'un pouvait m'aider.
Merci d'avance
 
Re : Annuler fenetre "enregistrer sous"

Bonsoir Yves,

Michel n'a pas l'air d'être là, alors essaie ceci et dis nous si cela convient:
Code:
Sub Archive()
    Dim archivage As String
    Dim nom As String,[COLOR=red] Fichier As Variant[/COLOR]
    Dim datt As String
    Sheets("Historique Cde").Unprotect Password:="yves"
    If Range("A3").Value = "" Then
        MsgBox "Archivage impossible, votre Historique est vide !! ", vbExclamation, "Attention..."
        Exit Sub
    End If
    archivage = MsgBox(" Voulez-vous archivez votre Historique des Commandes ?", vbYesNo + vbExclamation, "Archivage")
    If archivage = 7 Then Exit Sub
    MsgBox "L'Historique des Commandes sera éffacé et sauvegardé ", vbInformation, "INFO"
    datt = CStr(Format(Date, "dd mmmm yyyy"))
    nom = CStr("Archive Cde ") & datt & ".xls"
    [COLOR=red]Fichier = Application.GetSaveAsFilename(InitialFileName:=nom, FileFilter:="Classeur excel (*.xls),*.xls")[/COLOR]
 
[COLOR=red][COLOR=black]  'Si choix annuler, sortir[/COLOR]
 
[/COLOR]   [COLOR=red]If Fichier = False Then Exit Sub[/COLOR]
 
    ActiveSheet.Copy
 
    Application.ScreenUpdating = False
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    ActiveWorkbook.Close True[COLOR=red], Filename:=Fichier[/COLOR]
    Application.DisplayAlerts = True
    Sheets("Historique Cde").Unprotect Password:="yves"
    Call effacehisto
    Sheets("Historique Cde").Protect Password:="yves"
    Application.ScreenUpdating = True
End Sub

Tu remarqueras que j'ai ajouté un Filename:=Fichier à la fermeture du fichier, mais tu peux y mettre la variable Nom si tu ne veux pas que l'utilisateur change le nom du fichier proposé dans la fenêtre d'enregistrement.

A bientôt
 
Dernière modification par un modérateur:
Re : Annuler fenetre "enregistrer sous"

Merci de ton aide encore une fois.
Il y a un petit probleme, la partie annuler de la fenetre enregistrer fonctionne, par contre quand je veux enregistrer le fichier, la macro se bloque ici

Code:
If Fichier = False Then Exit Sub

Si tu as une idée
Merci
 
Re : Annuler fenetre "enregistrer sous"

Yves,

Oui, excuses moi j'ai fait une erreur de logique:

Déclarer Fichier comme ceci: Dim Fichier As Variant

Code:
 [COLOR=red]If Fichier <> False Then[/COLOR]
    ActiveSheet.Copy    
    Application.ScreenUpdating = False
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    ActiveWorkbook.Close True[COLOR=red], Filename:=Fichier[/COLOR]
    Application.DisplayAlerts = True
    Sheets("Historique Cde").Unprotect Password:="yves"
    Call effacehisto
    Sheets("Historique Cde").Protect Password:="yves"
    Application.ScreenUpdating = True
[COLOR=red]End IF[/COLOR]

A bientôt
 
Dernière modification par un modérateur:
- 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

Réponses
2
Affichages
411
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…