XL 2010 Afficher onglets d'une liste

erwanhavre

XLDnaute Occasionnel
Bonjour
Encore besoins de vos lumières ..
voir pj
j'aimerai qu'en appuyant sur les boutons on affiche uniquement les onglets concerné dans la liste.

Exemple: lorsque l'on appuie sur le bouton Jean Jacques on aurai uniquement les onglets Nom1 prénom1 et Nom5 prénom5

est ce faisable ?

Merci
 

Pièces jointes

  • Classeur1.xlsx
    15.7 KB · Affichages: 41

erwanhavre

XLDnaute Occasionnel
Bonjour Lone wolf
voir nouvel pj
il s'agit de "formes" auxquelles j'affecterai la macro
pourquoi pas le double clics car ce n'est qu'un exemple de tableau le vrai comporte près de 80 lignes donc plus ou moins 80 onglets à "démasquer" lol
 

Pièces jointes

  • Classeur1.xlsx
    15.6 KB · Affichages: 33

job75

XLDnaute Barbatruc
Bonsoir erwanhavre, Lone-wolf,
Code:
Sub Affiche()
Dim prenom$, t, s As Object, nom$, i%
Application.ScreenUpdating = False
With Sheets("Liste")
    prenom = .DrawingObjects(Application.Caller).Text
    t = .[A4].CurrentRegion.Resize(, 6) 'tableau VBA, plus rapide
    For Each s In Sheets
        nom = Replace(s.Name, "é", "e")
        If nom <> .Name Then
            s.Visible = prenom = "Tous"
            For i = 2 To UBound(t)
                If t(i, 1) & " " & t(i, 2) = nom And t(i, 6) = prenom Then s.Visible = xlSheetVisible: Exit For
            Next i
        End If
    Next s
    .Activate
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    30.8 KB · Affichages: 29

kingfadhel

XLDnaute Impliqué
Bonsoir,
Une piste:
VB:
// Pour jaques
Sub Jaques()
    Call hidesheets
    Sheets("Nom1 prénom1").Visible = True
    Sheets("Nom5 prénom5").Visible = True
    Sheets("Liste").Select
End Sub

Sub hidesheets()
Dim xWs As Worksheet
    Dim xName As String
    For Each xWs In Application.ActiveWorkbook.Worksheets
        If xWs.Name <> "Liste" Then
            xWs.Visible = xlSheetHidden
        End If
    Next
End Sub
@+
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Fichier (3) avec des cases à cocher :
Code:
Sub Affiche()
Dim prenom$, vis As Boolean, t, s As Object, nom$, i%
Application.ScreenUpdating = False
With Sheets("Liste")
    With .DrawingObjects(Application.Caller)
        prenom = .Text
        vis = .Value = xlOn
    End With
    t = .[A4].CurrentRegion.Resize(, 6) 'tableau VBA, plus rapide
    For Each s In Sheets
        nom = Replace(s.Name, "é", "e")
        If nom <> .Name Then
            For i = 2 To UBound(t)
                If t(i, 1) & " " & t(i, 2) = nom And t(i, 6) = prenom Then s.Visible = vis: Exit For
            Next i
        End If
    Next s
    .Activate
End With
End Sub
A+
 

Pièces jointes

  • Classeur(3).xlsm
    34.7 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 181
Messages
2 085 997
Membres
103 083
dernier inscrit
SALAHBEN