Vba: Excel ne se ferme pas, Classeur masqué, BeforeClose

Fermé
L28 Messages postés 157 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 27 octobre 2019 - 19 déc. 2013 à 19:53
L28 Messages postés 157 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 27 octobre 2019 - 14 avril 2014 à 18:57
Bonsoir,

J'ai un petit problème de programmation sur VBA:

Je me suis fait un fichier excel Budget, pour gérer au mieux mes dépenses. Afin de l'améliorer et le rendre nomade j'ai crée un deuxième, sans macro, qui ne comporte que les dépenses. Celui ci a pour but d'être modifiable par mon Windows Phone.

Pour cela je dois assurer une liaison entre les deux. Pour faire simple une plage de donnée est partagée entre le fichier Budget et le fichier Dépenses.

Pour importer mes données, j'ouvre le fichier Dépenses en masqué et le fichier Budget en Principal. Lorsque je veux fermer le fichier Budget. Je ferme les deux classeurs à l'aide des codes suivants.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Select Case MsgBox("Sauvegarder les fichiers ?", vbYesNoCancel, "Fermeture d'Excel")
Case vbYes
Workbooks("Depenses").Worksheets("Depenses").Range("MDepenses").Value = Workbooks("Budget").Worksheets("BudgetGlob").Range("Depenses").Value
Workbooks("Depenses").Save
Workbooks("Budget").Save
Workbooks("Depenses").Close
Cancel = False
Application.Quit
Case vbNo
Workbooks("Depenses").Close
Application.Quit
Case Else
Cancel = True
End Select
End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Workbooks.Open ("C:\Users\Greg\Desktop\Depenses.xlsx")
Workbooks("Budget").Worksheets("BudgetGlob").Range("Depenses").Value = Workbooks("Depenses").Worksheets("Depenses").Range("MDepenses").Value
ActiveWindow.Visible = False
Workbooks("Budget").Activate
Application.ScreenUpdating = True
End Sub

Pourtant Excel ne se ferme pas. Les classeurs sont fermés mais pas excel et je ne comprends pas pourquoi. De plus lorsque j'ouvre le fichier budget une nouvelle fois, les deux tableaux sont masqués.

Merci d'avance pour votre aide!
Bonne soirée!


5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
19 déc. 2013 à 22:56
Bonjour,

Workbooks("Depenses") ne serait-ce pas plutôt Workbooks("Depenses.xlsx") ?
et idem pour toutes les lignes Workbooks.

Lorsque je modifie ces lignes, ton code fonctionne correctement
0
L28 Messages postés 157 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 27 octobre 2019 132
16 janv. 2014 à 20:07
Bonjour et bonne année!

Je suis désolé de ne pas avoir donné de "nouvelles" avant, mais j'étais très occupé.

L'ajout de l'extension ne résout pas le problème malheureusement. J'ai réussi à résoudre celui des tableaux masqués. Mais pour la fermeture d'excel j'ai toujours le même problème. Tous se ferme, je n'ai plus de projet ouverts dans VBA, mais excel en lui même ne se ferme pas...

En tout cas merci tout de même pour ta réponse!

Pour l'instant j'utilise une méthode... barbare... expliqué au lien suivant:
https://answers.microsoft.com/fr-fr/office/forum/office_2010-excel/pour-quitter-excel-en-vba-jutilise-applicationquit/dd5efa26-ba01-4a12-a907-21118a5ff334

Shell("taskkill /F /IM Excel.exe")

On a donc le code suivant:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Select Case MsgBox("Sauvegarder les fichiers ?", vbYesNoCancel, "Fermeture dExcel")
            Case vbYes
                Application.ScreenUpdating = False
                Workbooks("Depenses.xlsx").Worksheets("Depenses").Range("MDepenses").Value = Workbooks("Budget.xlsm").Worksheets("BudgetGlob").Range("Depenses").Value
                
                Workbooks("Depenses.xlsx").Activate
                ActiveWindow.Visible = True
                Workbooks("Depenses.xlsx").Save
                Workbooks("Depenses.xlsx").Saved = True
                Workbooks("Depenses.xlsx").Close
                
                Workbooks("Budget.xlsm").Save
                Workbooks("Budget.xlsm").Saved = True
                'Cancel = False
            Case vbNo
                Application.ScreenUpdating = False
                Workbooks("Budget.xlsm").Saved = True
                Workbooks("Depenses.xlsx").Saved = True
                Workbooks("Depenses.xlsx").Close
            Case Else
                Cancel = True
            End Select
            Application.ScreenUpdating = True
    Shell ("taskkill /F /IM Excel.exe")
End Sub


Pour ceux que ça pourrai intéresser ou si quelqu'un trouve la raison de cette non fermeture...

Je fermerai le sujet d'ici peu sauf si quelqu'un trouve un autre solution.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
16 janv. 2014 à 21:10
Bonjour,

Est-ce que tu utilises (ou simplement installé) un fichier perso de macros ?
0
L28 Messages postés 157 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 27 octobre 2019 132
9 avril 2014 à 16:00
Bonjour,

Désolé je n'ai pas eu de notification de votre réponse.

Il s'agit d'un fichier perso que j'ai créé personnellement. Le système ci dessus fonctionne bien que je ne l'(apprécie pas de trop (il suffit de travailler en parallèle sur un autre fichier excel pour tout perdre)

Je ne sais pas si j'ai répondu à votre question
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
10 avril 2014 à 21:44
Bonsoir L28,

Ma question il y a longtemps que je l'ai oubliée pour savoir si la réponse est adaptée ;-)

C'est sûr que la méthode 'barbare' doit présenter pas mal de risques et le quit me semble plus adapté.
Il faudrait peut-être fermer aussi ton fichier perso qui lui continue de dérouler sa procédure ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
L28 Messages postés 157 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 27 octobre 2019 132
14 avril 2014 à 18:57
Bonsoir gbinforme,

Actuellement voici ce que j'effectue:

Lors de la fermeture d'excel (croix fermer)
- demande si on veux sauvegarder
si oui on sauvegarde les deux fichier
on ferme le fichier "dépenses"
on ferme le fichier "budget"

on essaye de quitter Excel

Mais la dernière ne fonctionne pas...

Ferme le fichier de macro perso? fermer le projet vba? comment fais on?
0