Bonjour à tous,
J'ai réalisé une petite application sur Excel 2003.
Cependant, ladite application est parfois utilisée avec Excel 97.
Par avance, mea culpa pour la longueur du post ! :unsure:
Il arrive une chose très bizarre.
Dans 'ThisWorkbook', j'ai bien une procédure 'Workbook_BeforeClose' et une procédure 'Workbook_Open'.
-----------
Voici le code de Workbook_BeforeClose :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim CmdB As CommandBar
Dim ws As Worksheet
If Sheets('Algo').Cells(1, 2) = '' Then
Cancel = True
MsgBox ('Vous ne pouvez pas fermer cette application ainsi. Utilisez la flèche ''Quitter'' de l'Accueil.')
Exit Sub
End If
Application.ScreenUpdating = False
For Each CmdB In Application.CommandBars
CmdB.Enabled = True
Next CmdB
Application.DisplayFormulaBar = True
Sheets('Bienvenue').Activate
For Each ws In Worksheets
ws.Protect ('xxxx')
Next ws
End Sub
--------------
Voici le code de Workbook_Open :
Private Sub Workbook_Open()
Dim CmdB As CommandBar
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Worksheets
ws.Unprotect ('xxxx')
Next ws
Sheets('Accueil').Rows('14:200').RowHeight = 0
With Sheets('Algo')
.Range('A1').Value = ''
.Range('A2').Value = ''
.Range('B1').Value = ''
End With
Application.Caption = 'CA - Gestion Budgétaire'
ActiveWindow.Caption = 'G - Exercice 2005'
For Each CmdB In Application.CommandBars
CmdB.Enabled = False
Next CmdB
For Each ws In Worksheets
ws.Protect ('xxxx')
Next ws
Application.ScreenUpdating = True
Bienvenue.Show
-----------
Par ailleurs, j'ai écrit ce code qui figure dans un module de classe :
Sub QuitterApplication()
'Bouton Quitter sur la feuille 'Accueil'
Application.ScreenUpdating = False
Unprotect
Sheets('Bienvenue').Activate
With Sheets('Algo')
.Range('B1').Value = 'X'
End With
Protect
Application.ScreenUpdating = True
Application.Caption = 'Microsoft Excel'
ActiveWindow.Caption = 'Classeur 1'
If Sheets('Algo').Range('A2').Value = '' Then
ActiveWorkbook.Close savechanges:=False
Else
ActiveWorkbook.Close savechanges:=True
End If
End Sub
-----------
Pourquoi tout ceci ? Pour 'empêcher' l'utilisateur de fermer l'application à l'aide de la croix en haut à droite. Si l'utilisateur essaie de faire ceci, comme la cellule B1 de la feuille Algo vaut '', Excel renvoie le message 'Vous ne pouvez pas quitter l'application ainsi etc etc...'.
Du coup, pour quitter l'application, l'utilisateur est obligé de cliquer sur le bouton macro 'Quitter' figurant sur ma feuille. A ce bouton macro correspond la procédure QuitterApplication.
Avec Excel 2003, tout fonctionne parfaitement. En cliqunt sur le bouton macro 'Quitter', Excel se ferme complètement.
A l'inverse, avec Excel 97, si l'utilisateur clique sur le bouton macro 'Quitter', la macro tourne, mais in fine, Excel 97 ne se ferme pas ! Plus précisément, comme le prévoit entre autre le 'BeforeClose', le feuille 'Bienvenue' est activée, la barre de formule est réaffichée etc... mais à la fin du code, mon classeur est toujours ouvert. L'utilisateur est alors obligé de finalement cliquer sur la flèche en haut à droite (sic !), l'invite de demande d'enregistrement des modifications apparaît, et il doit saisir 'Oui'.
Et le plus drôle dans tout cela : avec ce même Excel 97, si j'insère un espion dans la procédure 'BeforeClose' et que j'exécute la macro pas à pas via la touche 'F8', là... Excel 97 se ferme (comme 2003) !!!
Dans l'attente d'une solution (autre que 'ne pas travailler qu'avec Excel 2003' - lol !!).
Merci infiniement par avance.
J'ai réalisé une petite application sur Excel 2003.
Cependant, ladite application est parfois utilisée avec Excel 97.
Par avance, mea culpa pour la longueur du post ! :unsure:
Il arrive une chose très bizarre.
Dans 'ThisWorkbook', j'ai bien une procédure 'Workbook_BeforeClose' et une procédure 'Workbook_Open'.
-----------
Voici le code de Workbook_BeforeClose :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim CmdB As CommandBar
Dim ws As Worksheet
If Sheets('Algo').Cells(1, 2) = '' Then
Cancel = True
MsgBox ('Vous ne pouvez pas fermer cette application ainsi. Utilisez la flèche ''Quitter'' de l'Accueil.')
Exit Sub
End If
Application.ScreenUpdating = False
For Each CmdB In Application.CommandBars
CmdB.Enabled = True
Next CmdB
Application.DisplayFormulaBar = True
Sheets('Bienvenue').Activate
For Each ws In Worksheets
ws.Protect ('xxxx')
Next ws
End Sub
--------------
Voici le code de Workbook_Open :
Private Sub Workbook_Open()
Dim CmdB As CommandBar
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Worksheets
ws.Unprotect ('xxxx')
Next ws
Sheets('Accueil').Rows('14:200').RowHeight = 0
With Sheets('Algo')
.Range('A1').Value = ''
.Range('A2').Value = ''
.Range('B1').Value = ''
End With
Application.Caption = 'CA - Gestion Budgétaire'
ActiveWindow.Caption = 'G - Exercice 2005'
For Each CmdB In Application.CommandBars
CmdB.Enabled = False
Next CmdB
For Each ws In Worksheets
ws.Protect ('xxxx')
Next ws
Application.ScreenUpdating = True
Bienvenue.Show
-----------
Par ailleurs, j'ai écrit ce code qui figure dans un module de classe :
Sub QuitterApplication()
'Bouton Quitter sur la feuille 'Accueil'
Application.ScreenUpdating = False
Unprotect
Sheets('Bienvenue').Activate
With Sheets('Algo')
.Range('B1').Value = 'X'
End With
Protect
Application.ScreenUpdating = True
Application.Caption = 'Microsoft Excel'
ActiveWindow.Caption = 'Classeur 1'
If Sheets('Algo').Range('A2').Value = '' Then
ActiveWorkbook.Close savechanges:=False
Else
ActiveWorkbook.Close savechanges:=True
End If
End Sub
-----------
Pourquoi tout ceci ? Pour 'empêcher' l'utilisateur de fermer l'application à l'aide de la croix en haut à droite. Si l'utilisateur essaie de faire ceci, comme la cellule B1 de la feuille Algo vaut '', Excel renvoie le message 'Vous ne pouvez pas quitter l'application ainsi etc etc...'.
Du coup, pour quitter l'application, l'utilisateur est obligé de cliquer sur le bouton macro 'Quitter' figurant sur ma feuille. A ce bouton macro correspond la procédure QuitterApplication.
Avec Excel 2003, tout fonctionne parfaitement. En cliqunt sur le bouton macro 'Quitter', Excel se ferme complètement.
A l'inverse, avec Excel 97, si l'utilisateur clique sur le bouton macro 'Quitter', la macro tourne, mais in fine, Excel 97 ne se ferme pas ! Plus précisément, comme le prévoit entre autre le 'BeforeClose', le feuille 'Bienvenue' est activée, la barre de formule est réaffichée etc... mais à la fin du code, mon classeur est toujours ouvert. L'utilisateur est alors obligé de finalement cliquer sur la flèche en haut à droite (sic !), l'invite de demande d'enregistrement des modifications apparaît, et il doit saisir 'Oui'.
Et le plus drôle dans tout cela : avec ce même Excel 97, si j'insère un espion dans la procédure 'BeforeClose' et que j'exécute la macro pas à pas via la touche 'F8', là... Excel 97 se ferme (comme 2003) !!!
Dans l'attente d'une solution (autre que 'ne pas travailler qu'avec Excel 2003' - lol !!).
Merci infiniement par avance.