XL 2010 Concaténer 2 macro en 1 seule dans ThisWorkbook

Orson83

XLDnaute Impliqué
Bonjour la communauté,
J'ai un conflit entre 2 macro placées dans ThisWorkbook car elles contiennent le même argument "Private Sub Workbook_BeforeClose(Cancel As Boolean)".
Pensez-vous qu'il soit possible de concaténer ces 2 macro ?
VB:
'VERROUILLE LES PAGES A LA FERMETURE D'EXCEL
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
End Sub

'OUVRE EXCEL SUR LA PAGE ACCUEIL & NAVIGATION
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Worksheets("Accueil & Navigation").Activate
End Sub
Merci pour votre aide.
Tchotchodu31
 
Solution
Bonjour,
il suffit simplement de tout mettre à la suite :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
Application.ScreenUpdating = False
Worksheets("Accueil & Navigation").Activate
End Sub

Yoyo01000

XLDnaute Occasionnel
Bonjour,
il suffit simplement de tout mettre à la suite :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
Application.ScreenUpdating = False
Worksheets("Accueil & Navigation").Activate
End Sub
 

Orson83

XLDnaute Impliqué
Bonjour,
Je relance ce post car j'aimerai qu'à l'ouverture d'Excel tous les onglets soient masqués sauf l'onglet "Accueil & Navigation".
Le code de Yoyo1000 fonctionne mais il manquerait cet argument dans la deuxième partie du code.
Merci pour votre aide.
Tchotchodu31
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Tchotchodu,
Vous pouvez aussi mettre cette macro dans un Workbook_Open :
VB:
Private Sub Workbook_Open()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
End Sub
ou l'inclure dans la macro Workbook_BeforeClose
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
Worksheets("Accueil & Navigation").Activate
End Sub
 

Orson83

XLDnaute Impliqué
Bonjour Tchotchodu,
Vous pouvez aussi mettre cette macro dans un Workbook_Open :
VB:
Private Sub Workbook_Open()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
End Sub
ou l'inclure dans la macro Workbook_BeforeClose
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
Worksheets("Accueil & Navigation").Activate
End Sub
Bonjour Sylvanu,
Merci pour ces 2 options qui fonctionnent très bien.
Je vais opter pour le Workbook_BeforeClose qui traite la requête à la fermeture.
Très bon week-end.
Tchotchodu31
 

Orson83

XLDnaute Impliqué
Bonjour Tchotchodu,
Vous pouvez aussi mettre cette macro dans un Workbook_Open :
VB:
Private Sub Workbook_Open()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
End Sub
ou l'inclure dans la macro Workbook_BeforeClose
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Sheets
        Sh.Protect "TEST"
    Next
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Accueil & Navigation" Then GoTo EndConsolidation ' car feuille Accueil & Navigation n'est pas a traitée.
    Sh.Visible = False
EndConsolidation:
Next Sh
Worksheets("Accueil & Navigation").Activate
End Sub
Re bonjour Sylvanu,
Est-il possible d'inclure le positionnement dans la cellule A1 de Accueil & Navigation ?
Exemple : ("Accueil & Navigation").Range("A1") -> j'ai essayé mais ça ne marche pas à cause du .activate je pense.
Tchotchodu31
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 851
Membres
103 974
dernier inscrit
chmikha