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

L28 Messages postés 176 Statut Membre -  
L28 Messages postés 176 Statut Membre -
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!



--
Cherche Quelqu'un qui sait si l'on peut changer un processeur sur un PC portable (ou la carte mère complète avec Processeur intégré) et si oui ou on peu l'acheter.

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. L28 Messages postés 176 Statut Membre 132
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Est-ce que tu utilises (ou simplement installé) un fichier perso de macros ?
    0
  4. L28 Messages postés 176 Statut Membre 132
     
    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
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. L28 Messages postés 176 Statut Membre 132
     
    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