Masquer onglets à l'enregistrement sauf un

Bonjour le forum

Je voudrais faire Masquer à l'enregistrement les onglets sauf un

Dans cette macro?

Option Explicit
Sub AfficherMasquerOnglets(Optional Affiche As Integer)
Dim Ws As Worksheet, Feuille As Worksheet, I As Integer
Dim LesFeuilles

  Application.ScreenUpdating = False
  Set Ws = ActiveSheet

  If Affiche = 0 Then
    Affiche = xlSheetVeryHidden
    For I = 1 To Sheets.Count
      If Sheets(I).Visible = xlSheetVeryHidden Then Affiche = True: Exit For
    Next I
  End If

  For Each Feuille In Sheets
    Select Case Feuille.Name
      Case "LEVET - LAGEDAMON"
      Case Else
        With Feuille
          .Unprotect
          .Visible = Affiche
          .Protect
        End With
    End Select
  Next Feuille
End Sub

Ou celle-ci?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.Range("A1").Select
Dim I As Integer

  For I = 2 To Sheets.Count  'Pour faire ouvrir sur l'Onglet Levet - LAGEDAMON mettre For I = 2 au lieu de 1
    If Sheets(I).Visible = True Then Sheets(I).Select: Exit Sub
  Next I

  End Sub

Merci à vous

Cordialement

PS: je ne peux pas fournir de fichier

Bonjour

Quel est le nom de l'onglet qui doit rester visible ?

Cordialement

Bonjour Dan

Onglet => LEVET - LAGEDAMON

Merci à toi

Bonjour à tous,

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim sh As Worksheet
    With Sheets("Levet - LAGEDAMON")
        .Visible = xlSheetVisible
        .Range("A1").Select
        For Each sh In Worksheets
            If sh.Name <> .Name Then sh.Visible = xlSheetVeryHidden
        Next I
    End With
End Sub

eric

Bonjour eriiic

Ça bug sur Next I

Merci à toi

Bonjour à tous,

Essaie avec

next sh

Cordialement,

Bonjour xorsankukai

OK super ça fonctionne

Autre question si je puis me permettre

Il peut arriver que j'ai 2 kinés donc la macro devient celle-ci

Ajout de "LEVET - MERLE"

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim sh As Worksheet
    With Sheets("LEVET - LAGEDAMON", "LEVET - MERLE")
        .Visible = xlSheetVisible
        .Range("A1").Select
        For Each sh In Worksheets
            If sh.Name <> .Name Then sh.Visible = xlSheetVeryHidden
        Next sh
    End With
End Sub

Merci à toi avec toutes mes excuses

Bien que ça ne me soit pas adressé, à tester :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim sh As Worksheet, feuil, i As Long
    feuil = Array("LEVET - LAGEDAMON", "LEVET - MERLE", "Feuil1")
    For i = 0 To UBound(feuil)
        Sheets(feuil(i)).Visible = xlSheetVisible
        Sheets(feuil(i)).Range("A1").Select
    Next i
    feuil = "," & Join(feuil, ",") & ","
    For Each sh In Worksheets
        If InStr(feuil, "," & sh.Name & ",") = 0 Then sh.Visible = xlSheetVeryHidden
    Next sh
End Sub

eric

Re Eric

Ça bug sur cette ligne

Sheets(feuil(i)).Range("A1").Select

Merci à toi

Depuis 6 ans que tu viens tu n'as pas acquis qu'avoir le message d'erreur et un fichier de travail faisait gagner du temps à tout le monde, toi y compris ?

Enlève le "Feuil1" de l'array, je l'avais ajouter pour tester vu que tu n'avais rien fourni.

Re,

Oh! P$$$$N!!!

Quel C$N!!!

Merci à vous tous pour vos contributions

Bonne fin de journée

Cordialement

Bonjour le forum

Je n'ai pas été jusqu'au bout et veuillez m''excuser

J'ai voulu ce matin faire fonctionner le programme mais je me suis rendu compte que ça n’enregistrait pas sur LEVET - LAGEMAMON mais sur LEVET - MERLE

Je vous sollicite encore une fois.

Cordialement

Bonjour,

fait 'Enregistrer sous...' pour renommer ton fichier.

eric

Bonjour eriiic

Non ça ne change rien mais je crois que c'est encore de ma faute (ah! si pouvais mettre le fichier!)

Je crois que cette macro à laquelle j'ajoute aussi LEVET - MERLE doit être modifiée

La voici ci-dessous

Si c'est ça encore toutes mes excuses

Sub AfficherMasquerOnglets(Optional Affiche As Integer)
Dim Ws As Worksheet, Feuille As Worksheet, i As Integer
Dim LesFeuilles

  Application.ScreenUpdating = False
  Set Ws = ActiveSheet

  If Affiche = 0 Then
    Affiche = xlSheetVeryHidden
    For i = 1 To Sheets.Count
      If Sheets(i).Visible = xlSheetVeryHidden Then Affiche = True: Exit For
    Next i
  End If

  For Each Feuille In Sheets
    Select Case Feuille.Name
      Case "LEVET - LAGEDAMON", "LEVET - MERLE"
      Case Else
        With Feuille
          .Unprotect
          .Visible = Affiche
          .Protect
        End With
    End Select
  Next Feuille
End Sub

Comment ça 'ça ne change rien' ???

Si tu fais Enregistrer sous avec le bon nom, il ne peut être que bon.

Et il faut un minimum de logique pour programmer...

Rien qui concerne l'enregistrement du fichier avec le nom correct là-dedans

Bonjour

il faut mettre les CodeName ses mieux

A voir

Sub MasquerOnglet()
Dim Onglet As Object
    For Each Onglet In ThisWorkbook.Sheets
        With Onglet
            Select Case .Name
                Case Feuil1.Name, Feuil2.Name '= CodeName.Name
                    .Visible = -1
                Case Else
                    .Visible = 2
            End Select
        End With
    Next Onglet
Application.Goto [A1], True
End Sub

Sub DecacheOnglet()
Dim Onglet As Object
    For Each Onglet In ThisWorkbook.Sheets
        With Onglet
            .Visible = -1
        End With
    Next Onglet
Application.Goto [A1], True
End Sub

A+

Maurice

Bonsoir le forum

Il fallait ajouter tout simplement la ligne ci dessous dans la macro

AfficherMasquerOnglets
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.Range("A1").Select
Dim I As Integer

  AfficherMasquerOnglets

  For I = 2 To Sheets.Count
    If Sheets(I).Visible = True Then Sheets(I).Select: Exit Sub
  Next I
  End Sub

Merci à tous

Effectivement sans fichier pas évident

Bonne fin de soirée à tous

Cordialement

Rechercher des sujets similaires à "masquer onglets enregistrement sauf"