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

Signaler
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
-
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019
-
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

7 réponses

Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609
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.

Messages postés
1400
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
16 avril 2020
138
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
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019

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 ?
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609
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
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019

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 :)
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609
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 )
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019

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 :)
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019

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
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609
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
Messages postés
6
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
19 novembre 2019

Merci beaucoup pour votre aide. J’ai modifié un peu et ça fonctionne bien