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

Microsoft 365 VBA Problème dans un évènement Before Save

danielco

XLDnaute Accro
Bonjour,

Je rencontre un problème curieux. J'ai un évènement Before Close déclenchant un évènement Before Save :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.Save

...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim C As Range
  Application.EnableEvents = False
  Application.ScreenUpdating = False
  With Sheets("SAISIE")
    .Unprotect Password:="Jacques1956"
    For I = 7 To .Range("B7", .Cells(.Rows.Count, 2).End(xlUp)).Rows.Count - 2 Step 8
      .Cells(I, 7).MergeArea.UnMerge
      .Cells(I, 2).Resize(8, 69).Sort .Cells(I, 2), xlAscending, Header:=xlNo
      .Cells(I, 7).Resize(8).Merge
    Next I
    .Protect Password:="Jacques1956", AllowSorting:=True, AllowFiltering:=True, AllowFormattingColumns:=True, userinterfaceonly:=False
  End With
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub

La ligne en erreur (erreur 1004) est :
Code:
.Cells(I, 7).MergeArea.UnMerge

L'erreur ne se produit pas sur un enregistrement mais seulement à la fermeture.

Le mot de passe de protection des feuille est "Jacques1956".

Pouvez-vous me dépanner ?
Merci d'avance.

Daniel
 

Pièces jointes

  • test 2022 Mise en place des rendez-vous TEST.xlsm
    203.8 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Application.EnableEvents = False
Dans votre macro les events sont désactivés. Donc où est le souci ?
Si tu actives les évènements avant d'ouvrir le classeur, ça plante.
Là, je ne comprends pas. On ne peux pas activer quoi que ce soit AVANT d'ouvrir le classeur.
De plus le BeforeSave est indépendant. Pouvez vous préciser ?
 

danielco

XLDnaute Accro
Si le classeur désactive la gestion des évènements avant de se fermer (avec une erreur), comme c'est mon cas, quand je rouvre le classeur et que je le referme, il n'y a pas d'erreur parce que le "before close" et le "before save" ne s'exécutent pas. On voit que le "before close" s'exécute si un message demande si on veut ou non enregistrer le classeur.
De plus le BeforeSave est indépendant. Pouvez vous préciser ?
Je ne comprends pas ce que tu veux dire ?
 

danielco

XLDnaute Accro
@sylvanu
Je vais peut-être t'éviter de chercher inutilement. J'ai mis à tort un "ThisWorkbook.save" dans le "before close". Et depuis que je l'ai retiré, je n'ai plus d'erreur ? Donc, si tu constates la même chose, laisse tomber.
Je te remercie pour tes recherches.
Daniel
 
Dernière édition:

Discussions similaires

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