Excel / macro pour masquer et afficher feuil.

Résolu
benji71 Messages postés 789 Statut Membre -  
benji71 Messages postés 789 Statut Membre -
Bonjour à tous et toutes,

J'espère que vous allez bien. Permettez-moi de commencer ce post par tirer mon chapeau aux « cadres » de ce site. Je suis un « habitué » de CCM et je suis tjrs surpris par la disponibilité dont ce que je nomme les cadres font preuve pour nous aider. Bien sur il y a toujours de nouveaux qui arrivent mais, je voudrais vraiment saluer ceux et celles qui donnent de leur temps pour nous aider...soyez en remercier...et en prenant le risque d'oublier les gens merci à vous chers : vaucluse, le pingou, gbinforme, mike-32, ériiic, raymond pentier, myta, m@rina, michel_m, pépé35530..pardon pour ceux que j'oublie...

Cela étant dit, j'ai une question pour tous.

Voici ma question : pourriez-vus m'aider à réaliser une macro pour masquer (une autre pour afficher) des feuilles dont le nom sur l'onglet commence par pfp_ ?

Dans mon classeur, j'ai plusieurs feuilles qui portent des noms différents.
La première feuille sert de menu. Je pensais mettre un bouton pour masquer et un bouton pour afficher les feuilles dont les noms commencent par pfp_

Une information qui à peut-être sont importance...j'ajoute régulièrement des feuilles dont le nom commence par pfp_

Merci de l'attention que vous porterez au présent post

Bien à vous

Berni///

6 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sub Cache_Onglets()
    Dim wks As Worksheet
    For Each wks In Worksheets
    If Left(wks.Name, 4) = "pfp_" Then
    wks.Visible = False
    End If
    Next wks
    End Sub

    Sub Affiche_Onglets()
    Dim wks As Worksheet
    For Each wks In Worksheets
    If Left(wks.Name, 4) = "pfp_" Then
    wks.Visible = True
    End If
    Next wks
    End Sub

    Bonne suite
    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour Benj71

    Option Explicit
    Sub MasquerfeuillesPFP()
    Dim wsh As Worksheet
    
      For Each wsh In Worksheets
        If Left(wsh.Name, 4) = "pfp_" Then wsh.Visible = xlSheetHidden
      Next wsh
    
    End Sub
    
    Sub AfficherfeuillesPFP()
    Dim wsh As Worksheet
    
      For Each wsh In Worksheets
        If Left(wsh.Name, 4) = "pfp_" Then wsh.Visible = xlSheetVisible
      Next wsh
    
    End Sub
    
    0
  3. benji71 Messages postés 789 Statut Membre 23
     
    Bonjour messieurs,

    merci d'avoir accepter de répondre à mon problème.
    pourriez-vous me dire quelle différence y a-t-il entre les deux propositions et si l'une est "meilleure" que l'autre ?

    j'observe une différence ; là ou f894009 ecrit wks, patrice33740 ecrit wsh...qu'elle différence y a-t-il ?

    merci de votre eclairage au combien précieux...

    tres cdlmnt

    berni///
    0
  4. benji71 Messages postés 789 Statut Membre 23
     
    bonsoir à tous,

    je me permets de relancer le post afin de voir si l'un ou l'une d'entre vous peut apporter un eclairage par rapport à ma question.

    merci à vous...

    benri///
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonsoir,

    Il n'y a aucune différence entre l'utilisation de wsh et wks.

    Quand on déclare une variable on peut lui donner le nom qu'on veut à condition de ne pas utiliser un nom réservé au langage : On aurait aussi bien pu utiliser Feuille (mais pas worksheet) .

    La différence réside plutôt dans l'utilisation des constantes nommées, f894009 utilise une des deux valeurs :
    - False
    - True

    Cela fonctionne très bien, mais pour ma part je préfère utiliser une des trois valeurs possibles :
    - xlSheetVisible
    - xlSheetHidden
    - xlSheetVeryHidden
    0
  7. benji71 Messages postés 789 Statut Membre 23
     
    merci patrice d'avoir apporter le complément d'info.

    tres cdlmnt,

    berni///
    0