[RESOLU] Une instruction s'éxécute 2 fois ...

richert90

XLDnaute Occasionnel
Bonjour à tous : voici le code qui pose problème:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Application.ScreenUpdating = False
    
    Dim Sauvegarde As String
    
    Sauvegarde = MsgBox("Do you want to save a copy of analysis?", vbyesno)
    If Sauvegarde = vbYes Then
        Call Save1
    End If
    
    'On nettoie la feuille "carac"
    Sheets("carac").Select
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
    ActiveSheet.DrawingObjects.Delete 'Supprime tous les objets de la feuille "carac"
    
    'On supprime les onglets sauf les 2 initiaux
    For Each onglet In Worksheets
        Application.DisplayAlerts = False
        If onglet.name <> "carac" And onglet.name <> "results" Then
            Sheets(onglet.name).Activate
            ActiveWindow.SelectedSheets.Delete
        End If
    Next onglet
     
    'On nettoie enfin la feuille "results"
    Sheets("results").Select
    Range("A:A,B:B").Select
    Selection.ClearContents 'D'abord on nettoie les 2 premières colonnes
    Cells(1, 1).Select
     For Each Legraph In ActiveSheet.ChartObjects 'Puis On supprime les graphiques deja existant.
        Legraph.Delete
    Next
    

Application.DisplayAlerts = False
Application.ActiveWorkbook.Close
Application.DisplayAlerts = True

Application.ScreenUpdating = True
    
End Sub

Je veux en fait proposer à l'utilisateur de garder une copie de l'analyse faite puis je veux que fichier excel se ferme (sans enregistrement) et sans le message : "Voulez-vous enregistrez...."

Quand j’exécute cela l'instruction suivante se fait deux fois:

Code:
    Sauvegarde = MsgBox("Do you want to save a copy of analysis?", vbyesno)
    If Sauvegarde = vbYes Then
        Call Save1
    End If

C'est à dire que je vois ce message à l'écran 2 fois avant de quitter Excel... alors qu'il devrait le faire qu'une seule fois. Je ne vois pas du tout pourquoi ça fait ça
Merci de votre aide.

Voici le contenu de la procédure Save1 que j'apelle si l'utilisateur veut garder une copie:

Code:
Public Sub Save1() 'copie sauvegarde classeur

    Dim nom1 As String
    
    nom1 = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.name
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom1
    rep = MsgBox("Your database is saved in the same record as the original file, under the name : " & nom1, vbYes + vbInformation, "Copie sauvegarde classeur")
    
End Sub
 
Dernière édition:
G

Guest

Guest
Re : Une instruction s'éxécute 2 fois ...

Bonjour,

la ligne :
Code:
Application.ActiveWorkbook.Close
Rapelle l'évènement Workbook_BeforeClose

Solution possible:

Après la ligne
Code:
Application.ScreenUpdating = False

Rajouter la ligne
Code:
Application.enableEvents=False

En fin de macro (après la ligne incriminée: ActiveWorkBook.close)
Code:
Application.enableEvents=True

A+
 

richert90

XLDnaute Occasionnel
Re : Une instruction s'éxécute 2 fois ...

Bonjour Hasco et fhoest;
merci de vos réponses, en effet je pense que bizarrement c'est l'instruction pour ne pas enregistrer (les 3 lignes de code à la fin) qui fait qu'il me demande 2 fois de garder une copie du fichier, je veux juste une fois cette instruction et ensuite qu'il ferme le fichier sans enregistrer et donc sans la demande d'enregistrement associée ^^
Ce W.E je n'ai pas Excel , j'essayerai donc vos propositions dès lundi matin; en espérant que cela marche :)
Bon weekend et merci de votre aide :)
 

Discussions similaires