Excel annulation sur sauvegarde

yzerfred

XLDnaute Nouveau
Bonjour à tous :),

Voilà mon problème : J'ai fait un tableau et je veux le sauvegarder. Je me sers donc de ActiveWorkbook.SaveAs Filename . Tout fonctionne bien, mais voilà , quand je clique sur annuler , il effectue la suite de ma macro. Je n'arrive pas à faire un saut pour éviter de faire une partie de ma macro.
En gros , si je n'enregistre pas , je veux aller direct à la ligne terminus.
Pourriez vous m'aider, s'il vous plait ? :confused:

Voilà mon code :


Code:
Sub NouvelleAnnee()

    annee = Parametre.Frame2.TextBox25.Value
EnregistrerSous:
    FichierEnregistrerSous = Application.GetSaveAsFilename(InitialFileName:= _
    "Périscolaire " & annee - 1 & " " & annee & ".xls", _
    fileFilter:="Fichiers Microsoft Excel (*.xls), *.xls")
    
    If FichierEnregistrerSous = False Then GoTo LaFin
        
    If Dir(FichierEnregistrerSous) <> "" Then
            Affichage = MsgBox("Un fichier du même nom existe déjà à cet emplacement." & _
                Chr(10) & Chr(10) & "Renommez le ou supprimer le.", vbExclamation, "NDLR")
            GoTo EnregistrerSous
        End If
        'On peut supprimer le fichier indésirable depuis la fenêtre "Enregistrer sous" sauf si on
        'essaie de supprimer le fichier ouvert, bien sûr.
        
        ActiveWorkbook.SaveAs Filename:=FichierEnregistrerSous, FileFormat:=xlNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False

LaFin:
 'Partie de macro à ne pas faire si je n'enregistre pas    
Terminus:
    Application.ScreenUpdating = True
    Application.Run "Aujourdhui"

End Sub
 

Catrice

XLDnaute Barbatruc
Re : Excel annulation sur sauvegarde

Bonjour,

Pour moi ton code semble OK.
Je l'ai testé partiellement, ca fonctionne.
Cependant, tu peux sans doute le simplifier comme suit :

Sub NouvelleAnnee()
annee = Parametre.Frame2.TextBox25.Value
EnregistrerSous:
FichierEnregistrerSous = Application.GetSaveAsFilename(InitialFileName:= _
"Périscolaire " & annee - 1 & " " & annee & ".xls", _
fileFilter:="Fichiers Microsoft Excel (*.xls), *.xls")

If FichierEnregistrerSous <> False Then
If Dir(FichierEnregistrerSous) <> "" Then
Affichage = MsgBox("Un fichier du même nom existe déjà à cet emplacement." & _
Chr(10) & Chr(10) & "Renommez le ou supprimer le.", vbExclamation, "NDLR")
GoTo EnregistrerSous
End If
ActiveWorkbook.SaveAs Filename:=FichierEnregistrerSous
End If
Application.ScreenUpdating = True
Aujourdhui
End Sub
 

Roland_M

XLDnaute Barbatruc
Re : Excel annulation sur sauvegarde

bonsoir

très important ! il faut déclarer la variable 'Variant' !
à la place de Chr(10) Vblf (retour ligne)

Code:
Sub NouvelleAnnee()
Dim FichierEnregistrerSous As Variant ' <<<<<<<<<<<<< déclarer As Variant !
Annee = Parametre.Frame2.TextBox25.Value
EnregistrerSous:
FichierEnregistrerSous = Application.GetSaveAsFilename(InitialFileName:= _
  "Périscolaire " & Annee - 1 & " " & Annee & ".xls", _
   fileFilter:="Fichiers Microsoft Excel (*.xls), *.xls")
If FichierEnregistrerSous = "" Or FichierEnregistrerSous = False Then GoTo LaFin
If Dir(FichierEnregistrerSous) <> "" Then
   Affichage = MsgBox("Un fichier du même nom existe déjà à cet emplacement." & _
   vbLf & vbLf & "Renommez le ou supprimer le.", vbExclamation, "NDLR")
   GoTo EnregistrerSous
End If
'On peut supprimer le fichier indésirable depuis la fenêtre "Enregistrer sous" sauf si on
'essaie de supprimer le fichier ouvert, bien sûr.
ActiveWorkbook.SaveAs Filename:=FichierEnregistrerSous, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
LaFin:
 'Partie de macro à ne pas faire si je n'enregistre pas
Terminus:
Application.ScreenUpdating = True
Application.Run "Aujourdhui"
End Sub

Roland
 
Dernière édition:

yzerfred

XLDnaute Nouveau
Re : Excel annulation sur sauvegarde

Bonjour Catrice,

Merci beaucoup pour ton aide, j'ai essayé ton code , et il fonctionne à merveille ! :) Merci encore !

Bonjour Roland,

Merci à toi également pour m'avoir répondu, et j'ai déclaré ma variable comme tu me l'as dit, et ... ça marche aussi ! :p J'ai mis également le Vblf et ça na rien changer sur l'affichage du message d'erreur. Je suppose qu'il vaut mieux mettre cette constante que de mettre le CHR(10) ...

J'ai une question qui va te sembler bête, mais à quoi sert de déclarer les variables si, lorsqu'on ne les déclare pas, ça fonctionne ? :confused: Le type de variable semble très important, mais quand on ne les déclare pas, quel type prennent -ils ? Que se passera-t-il si aucune variable est déclarée ? Dois-je reprendre tout mes lignes de code et renommer chaque variable ? :eek:

Merci encore d'avoir pris du temps pour me répondre. :p
 

Discussions similaires

Réponses
13
Affichages
1 K
Réponses
3
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 775
Messages
2 092 010
Membres
105 148
dernier inscrit
gegre