VB/VBA pour afficher/masquer une liste de feuilles d'un excel.

VBATEST Messages postés 2 Statut Membre -  
VBATEST Messages postés 2 Statut Membre -
Bonjour,

Je souhaiterai une macro qui me permet d'afficher certaines feuilles et de masquer les autres,
J'ai un tableau en feuill1 avec le nom de chaque feuille dans la première colonne et un "1" ou "0" dans la seconde pour savoir si je dois afficher oui ou non.
Pour faire cette macro étant novice j'ai un peu de mal :

Voici la base qui ne marche malheureusement pas

Sub Afficher1()
'
' Afficher1 Macro
'
Sheets("Feuil1").Select
Dim L As Integer
Dim I As Integer
I = Range(A:A)
L = 1
For L = 1 To Range("B65356").End(xlUp).Row
    If Range(I & L) = 1 Then
Sheets(I).Visible = False
Next L 
   End If


Auriez vous une idée de comment je peux modifier ma macro pour cela fonctionne ? suis-je dans la bonne direction ?

Merci par avance

Configuration: Macintosh / Safari 12.1.1

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    bonjour,

    voici une macro avec les noms des feuilles en colonne A et mettre x dans la colonne B pour masquer la feuille correspondante

    Faire Alt f11 pour accéder à l'éditeur. ensuite aller dans le module de la feuille concernée en la sélectionnant en haut à gauche.

    copier coller ce code:

    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Var As Variant
    If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
     Application.ScreenUpdating = False
     On Error Resume Next
     If Target.Value = "" Then
         Var = ActiveSheet.Cells(Target.Row, Target.Column - 1)
       Worksheets(Var).Visible = True
        Else
         Var = ActiveSheet.Cells(Target.Row, Target.Column - 1)
       Worksheets(Var).Visible = xlSheetHidden
         End If
    End If
      Application.ScreenUpdating = True
    End Sub
    
    


    Voilà

    0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, suggestion:
    Option Explicit
    
    Private Sub Afficher1()
    Dim nomfeuille As Range
    Set nomfeuille = Sheets("Feuil1").[A1]
    Do While nomfeuille <> ""
        Select Case nomfeuille.Offset(0, 1)
            Case 1
                Sheets(nomfeuille.Value).Visible = True
            Case 0
                Sheets(nomfeuille.Value).Visible = False
        End Select
        Set nomfeuille = nomfeuille.Offset(1, 0)
    Loop
    End Sub
    0
  3. VBATEST Messages postés 2 Statut Membre
     
    Merci beaucoup, je vais essayer avec ca !
    0