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

  • Initiateur de la discussion Initiateur de la discussion Orson83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
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
 
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
 
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 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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
243
Retour