Afficher / masquer des onglets par demande [Résolu]

Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
- - Dernière réponse : ines_sah
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
- 19 nov. 2019 à 14:51
Bonjour,

J'aimerais créer la macro qui me permettrait de :
-> Cacher tous mes onglets excel sauf 3
-> Demander à l'ouverture du excel si l'utilisateur souhaite ouvrir un onglet caché correpondant à une archive

Auriez-vous des idées?

Merci
Afficher la suite 

7 réponses

Messages postés
27013
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
1921
0
Merci
Bonjour,

Déclencher une macro à l'ouverture d'un classeur
Private Sub Workbook_Open()

Masquer une feuille
Sheets(4).Visible = False

Afficher une feuille
Sheets(4).Visible = True


rien de bien compliqué comme tu peux le voir...

Si tu as un souci, il faudrait :
- Nous montrer le code que tu as essayé de faire
- Expliquer en détail le souci rencontré et les éventuels messages d'erreur.

Commenter la réponse de jordane45
Messages postés
4611
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 décembre 2019
118
0
Merci
Bonjour Ines, bonjour le forum,

Le code ci-dessus, à placer dans le composant ThisWorkbook et à adapter (au niveau des onglets à masque/afficher) répond à ta première question :
Private Sub Workbook_Open()
Dim O As Integer

For O = 1 To Worksheets.Count
    Select Case O
        Case 1, 5, 7
            Worksheets(O).Visible = True 'affiche les onglets numéros 1, 5 et 7
        Case Else
            Worksheets(O).Visible = False 'masque les autres onglets
    End Select
Next O
End Sub


[Édition]
Bonjour jordane nos posts ses sont croisés...

À plus,
ThauTheme
Commenter la réponse de ThauTheme
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
0
Merci
Merci à tous les 2 pour vos réponses

@Tautheme j’ai pris ton code ça marche niquel cependant, j’aimerais que les onglets masqués ne soit pas visibles pas d’autres utilisateurs quand ils font clic droit sur la barre Excel.
Par ailleurs j’aimerais pouvoir ouvrir une boîte de dialogue pour laisser l’utilisateur ouvrir un onglet masqué en donnant le nom de cet onglet..

Pouvez -vous m’aider ?
jordane45
Messages postés
27013
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
1921 -
Bonjour
Pour ça, à la place de l'attribut visible , il faut utiliser le xlVeryHidden

https://docs.microsoft.com/fr-fr/office/troubleshoot/excel/hide-sheet-and-use-xlveryhidden
Commenter la réponse de ines_sah
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
0
Merci
Yes Jordane45 ça fonctionne niquel.

Du coup 50% du problème est résolu.

Comment faire maintenant pour ouvrir une boîte de dialogue, demander à rentrer le nom d’un onglet caché en input (sachant que c’est toujours le même format mois_annee) et rendre visible l’onglet ainsi désigné ?

Merci pour votre aide :)
jordane45
Messages postés
27013
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
1921 -
Dis voir..... tu cherches un minimum... ou tu t'attends qu'on te donnes directement toutes les réponses ???
Car bon... ce n'est pas trop la philosophie de ce forum...
Tu es sensé avoir cherché un minimum tu sais...

Pour les boites de dialogue, soit tu utilises un inputbox
Soit tu créés un Userform (dans lequel tu pourrais mettre une liste déroulante de chaque feuille )
Commenter la réponse de ines_sah
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
0
Merci
Oui je cherche . Voici ce que j’ai essayé :
Private Sub Test()



Dim x As String, y As Integer, i As Integer



y = Month(Date)

x = Switch(y = 1, "Janvier_i", y = 2, "Février_i", y = 3, "Mars_i", y = 4, "Avril_i", y = 5, "Mai_i", y = 6, "Juin", y = 7, "Juillet", y = 8, "Aout_2019", y = 9, "September_2019", y = 10, "Octobre", y = 11, "Novembre", y = 12, "Décembre_2019") _



Dim Mois As String

Mois = InputBox("Renseigner le nom de l'archive que vous souhaitez ouvrir au format Mois_Année")



For i = 2019 To 2021

If Mois = x Then Sheets(x).Visible = True



Next

End Sub



Résultat : la boîte de dialogue s’ouvre mais l’onglet ne s’ouvre pas ..
Peut être auriez vous une idée ??
Merci :)
Commenter la réponse de ines_sah
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
0
Merci
Bonsoir,



J’ai aussi essayé le code ci-dessous mais j’ai un message d’erreur de compilation au niveau de ma boucle if :


Private Sub Test()

 

Dim x As String, y As Integer, i As Integer

 

y = Month(Date)

For i = 2019 To 2021

x = Switch(y = 1, "Janvier_i", y = 2, "Février_i", y = 3, "Mars_i", y = 4, "Avril_i", y = 5, "Mai_i", y = 6, "Juin_i", y = 7, "Juillet_i", y = 8, "Aout_i", y = 9, "September_i", y = 10, "Octobre_i", y = 11, "Novembre_i", y = 12, "Décembre_i") _

 

Dim Mois As String

Mois = InputBox("Renseigner le nom de l'archive que vous souhaitez ouvrir au format Mois_Année")

 

If Mois = x Then Sheets(x).Visible = True

Else: MsgBox ("Non valide")

 

End If

 

Next

End sub 


EDIT : Ajout des balises de code


N.B j’ai corrigé les i manquants dans ma première formule
jordane45
Messages postés
27013
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
1921 -
Dans ton input tu indiques
Mois = InputBox("Renseigner le nom de l'archive que vous souhaitez ouvrir au format Mois_Année")

Donc... la valeur de Mois est sous la forme mmm_YYYYY
Donc... la variable Mois ne peut jamais être égale à X

Bref...
ton code devrait ressembler à un truc du genre
Private Sub Test()
    Dim Mois As String
    Dim x As String
    Dim y As Integer
    Dim m As Integer
    Dim F As String
    
    Mois = InputBox("Renseigner le nom de l'archive que vous souhaitez ouvrir au format Mois_Année")
    
    If (Mois <> "") Then
        splM = Split(Mois, "_")
        m = splM(0)
        m = splM(1)
    End If
    
    x = Switch(m = 1, "Janvier", m = 2, "Février", m = 3, "Mars", m = 4, "Avril", m = 5, "Mai", m = 6, "Juin", m = 7, "Juillet", m = 8, "Aout", m = 9, "September", m = 10, "Octobre", m = 11, "Novembre", m = 12, "Décembre")
    F = x & "_" & y
    Debug.Print "Feuille à afficher : " & F
    
    Sheets(F).Visible = True




End Sub


NB: A l'avenir, merci d'utiliser les balises de code pour poster ton code sur le forum.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Commenter la réponse de ines_sah
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
0
Merci
Merci beaucoup pour votre aide. J’ai modifié un peu et ça fonctionne bien
Commenter la réponse de ines_sah