Débutant total bloqué sur message "nom ambigu detecte Workbook_BeforeClose"

guigui971

XLDnaute Junior
Bonjour à tous,
Moi qui me débrouille pas mal en EXCELL, j'essaye de me mettre aux macros...
Et là je me trouve vraiment nul! Sauvez-moi!

J'ai pu en mettre en place une première macro en suivant pas à pas ce que j'ai trouvé sur le site "VBA Express".
Ainsi je me retrouve avec dans ThisWorkbook les lignes suivantes :

Option Explicit
Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)
End Sub
Option Explicit

Jusque là tout marche impec.
Mais, lorsque je veux ajouter une autre macro, on me dit de coller son code également dans ThisWorkbook.
Donc je colle à la suite de ce qui est ci-dessus :
Option Explicit
Const WelcomePage = "Macros"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Turn off events to prevent unwanted loops
Application.EnableEvents = False
'Evaluate if workbook is saved and emulate default propmts
With ThisWorkbook
If Not .Saved Then
Select Case MsgBox("Do you want to save the changes you made to '" & .Name & "'?", _
vbYesNoCancel + vbExclamation)
Case Is = vbYes
'Call customized save routine
Call CustomSave
Case Is = vbNo
'Do not save
Case Is = vbCancel
'Set up procedure to cancel close
Cancel = True
End Select
End If
'If Cancel was clicked, turn events back on and cancel close,
'otherwise close the workbook without saving further changes
If Not Cancel = True Then
.Saved = True
Application.EnableEvents = True
.Close savechanges:=False
Else
Application.EnableEvents = True
End If
End With
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Turn off events to prevent unwanted loops
Application.EnableEvents = False
'Call customized save routine and set workbook's saved property to true
'(To cancel regular saving)
Call CustomSave(SaveAsUI)
Cancel = True
'Turn events back on an set saved property to true
Application.EnableEvents = True
ThisWorkbook.Saved = True
End Sub
Private Sub Workbook_Open()
'Unhide all worksheets
Application.ScreenUpdating = False
Call ShowAllSheets
Application.ScreenUpdating = True
End Sub
Private Sub CustomSave(Optional SaveAs As Boolean)
Dim ws As Worksheet, aWs As Worksheet, newFname As String
'Turn off screen flashing
Application.ScreenUpdating = False
'Record active worksheet
Set aWs = ActiveSheet
'Hide all sheets
Call HideAllSheets
'Save workbook directly or prompt for saveas filename
If SaveAs = True Then
newFname = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xls), *.xls")
If Not newFname = "False" Then ThisWorkbook.SaveAs newFname
Else
ThisWorkbook.Save
End If
'Restore file to where user was
Call ShowAllSheets
aWs.Activate
'Restore screen updates
Application.ScreenUpdating = True
End Sub
Private Sub HideAllSheets()
'Hide all worksheets except the macro welcome page
Dim ws As Worksheet
Worksheets(WelcomePage).Visible = xlSheetVisible
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = WelcomePage Then ws.Visible = xlSheetVeryHidden
Next ws
Worksheets(WelcomePage).Activate
End Sub
Private Sub ShowAllSheets()
'Show all worksheets except the macro welcome page
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = WelcomePage Then ws.Visible = xlSheetVisible
Next ws
Worksheets(WelcomePage).Visible = xlSheetVeryHidden
End Sub​

Et c'est là que çà merdoie puisque lorsque je veux sauvegarder, j'ai un message d'erreur qui me dit
"erreur de compilation nom ambigu detecte Workbook_BeforeClose"

J'ai bien compris que le problème vient d'une redondance dans mes 2 groupes de codes, mais vu que je n'y connais rien, je fais appel aux spécialistes.

Merci d'avance et bonne soirée.
 

Fred0o

XLDnaute Barbatruc
Re : Débutant total bloqué sur message "nom ambigu detecte Workbook_BeforeClose"

Bonjour Guigui,

Peux-tu me dire dans quelle procédure l'erreur apparaît ? Chez moi, lorsque je protège le classeur et fais une sauvegarde, je n'ai pas de message d'erreur

A+
 

guigui971

XLDnaute Junior
Re : Débutant total bloqué sur message "nom ambigu detecte Workbook_BeforeClose"

Salut Fred0o,

Qu'entends tu par procédure?
Je précise que ce n'est pas une macro que j'ai ajouté pour protéger le classeur, mais une tentative en manuel, à partir du menu de EXCEL...

Merci
 

Fred0o

XLDnaute Barbatruc
Re : Débutant total bloqué sur message "nom ambigu detecte Workbook_BeforeClose"

Bonsoir,

En fait, une procédure est un bloc d'instructions qui commence par "Sub" ou "Function" et qui se termine par "End".
J'ai bien compris que tu as protégé manuellement le classeur mais j'ai aussi compris que c'est lorsque tu enregistre, qu'une procédure (Sub ou Function) se lance et plante en te mettant l'erreur 1004.

Peux-tu me préciser quelle est cette procédure et également la poster sur le fil ?
Normalement, lorsqu'une macro plante, tu cliques sur Débugger et tu verras une ligne en surbrillance. Ce serait bien que me dises aussi sur quelle ligne elle plante.

A+
 

guigui971

XLDnaute Junior
Re : Débutant total bloqué sur message "nom ambigu detecte Workbook_BeforeClose"

Salut,
Quand tu dis que çà peut commencer par Sub, je constate que çà peut visiblement commencer aussi par "Private Sub"

Effectivement, le deboguage me renvoie à :

Private Sub HideAllSheets()
'Hide all worksheets except the macro welcome page
Dim ws As Worksheet

Worksheets(WelcomePage).Visible = xlSheetVisible

For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = WelcomePage Then ws.Visible = xlSheetVeryHidden
Next ws

Worksheets(WelcomePage).Activate
End Sub

Je t'ai mis en orange la ligne
A+
 

Discussions similaires

Réponses
2
Affichages
216

Statistiques des forums

Discussions
312 344
Messages
2 087 447
Membres
103 546
dernier inscrit
mohamed tano