VBA: Masquer les onglets d'un classeur excel

Signaler
Messages postés
2
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
28 janvier 2010
-
 scribetout -
Bonjour,

Voilà, j'ai créé un classeur contenant de nombreuses applications (Chaque onglet est une application à part entière). Dans la feuille menu j'ai créer des liens hypertext permettant de selectionner une application (onglet).
Je souhaite que seule la feuille menu soit visible et que l'on puisse se rendre d'une feuille à l'autre à partir du Menu.
De plus, une fois l'onglet fermé, seul l'onglet Menu doit être visible.
je vosu remercie d'avance.
L.E.

10 réponses

Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
Pour masquer un onglet :
Sheets("Base").Visible = False
pour le rendre visible :
Sheets("Base").Visible = true

Bonne journée
Messages postés
22
Date d'inscription
jeudi 10 août 2006
Statut
Membre
Dernière intervention
8 juillet 2010

Voila comment je vois ça...

Dans ton menu :
Affecte des macros sur chaque lien et et tape cette macro :

Private Sub Nom_du_lien()
On error GoTo Err
Sheets("Nom_de_la_feuille").Visible = True 'Attention Max 33 Caractères
Err:
MsgBox "Feuille déja ouverte", vbCritical
End Sub


Et dans ta feuille insére un lien "fermer", ou tu affecteras la macro suivante :

Private Sub Fermer_Nom_du_lien()
Sheets("Nom_de_la_feuille").Visible = False
Sheets("Menu").Select
End Sub


Voila
------------
Même joueur joue encore
Messages postés
131
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
17 mars 2010

Salut,
Sinon tu peux masquer seulement les onglets :
With ActiveWindow
.DisplayWorkbookTabs = False
End With
Comme ça tu n'utilises que le select pour changer de page.

Nanardino64
Développons-nous, développeurs.
Messages postés
2
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
28 janvier 2010

nanardino64
je te remercie bcp.
Juste une autre question sur une des feuilles(Applications) j'ai des textBox et un bouton "calculer" qui permet d'afficher le résultat de mon calcul dans un autre textbox (Résultat).
Le probleme est que j'ai un message d'erreur sur la différence entre dates.

Dim SirsFD1, SirsFD2 As Date, FxJ As Double
SirsFD1 = FixLegDate1.Value 'date dans le textbox1 au format dd/mm/aaaa
SirsFD2 = FixLegDate2.Value ' 'date dans le textbox2 au format dd/mm/aaaa
FixDays.Value = (SirsFD2 - SirsFD1)
' Le textbox "Fixday" doit afficher le résultat de la 'différence entre les dates du textbox1 et le Textbox2
End if


Message: "incompatibilité type"
Messages postés
22
Date d'inscription
jeudi 10 août 2006
Statut
Membre
Dernière intervention
8 juillet 2010

Tu peut pas soustraire des pommes avec des poires....

Je crois avoir vu un snipet la dessus... Je vais chercher un peu

------------
Même joueur joue encore
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

pas mal d'erreur dans ce code!

- ta façon de declarer tes variables n'est pas bonne:
Dim SirsFD1, SirsFD2 As Date
ici seul SirsFD2 est de type date SirsFD1 est de type Variant

- une textbox comme sont nom l'indique contient du texte donc on ne peu travailler avec les dates comme tu le fais!

Dim SirsFD1 As Date, SirsFD2 As Date, FxJ As Double
if isDate(FixLegDate1.Value) then
   ' datevalue permet de transformer une chaine en date
   SirsFD1 = datevalue(FixLegDate1.Value) 'date dans le textbox1 au format dd/mm/aaaa
Else
   msgbox "'FixLegDate1' ne contient pas de date !", VbExclamation
End If
If isDate(FixLegDate2.Value) then
   SirsFD2 = datevalue(FixLegDate2.Value) 'date dans le textbox2 au format dd/mm/aaaa
   exit sub
Else
   msgbox "'FixLegDate2' ne contient pas de date !", VbExclamation
   Exit sub
End If
' datediff calcule une difference entre 2 dates et renvoie soit un nombre de jour("d") soit un nombre de mois("m") soit un nombre d'année("y")
' ici il renvoie un nombre de jour positif ou négatif 
FixDays.Value = DateDiff("d", SirsFD2, SirsFD1)
' Le textbox "Fixday" doit afficher le résultat de la 'différence entre les dates du textbox1 et le Textbox2
End if


A+
Bonjour,

je suis dans la même galère que Daddynetty, j'ai ceci, sauf que la feuille "Menu" doit être la dernière du classeur (complètement à droite) sinon celles d'après restent visibles et je ne sais pas pourquoi. dès que j'aurais une réponse, je la communiquerai.
Sub Masquer_feuilles()
Dim F As Integer
    Application.ScreenUpdating = False
    For F = 1 To Worksheets.Count
        If Sheets(F).Name <> "Menu" Then
        Sheets("Menu").Activate
        Sheets(F).Visible = False
    End If
    Next F
    Application.ScreenUpdating = True

End Sub


Par contre j'ai une question par rapport à ce code de nanardino64
With ActiveWindow
.DisplayWorkbookTabs = False
End With 

Où doit-on le mettre ce code, car c'est ce que je cherche.

merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Tu as également dans la barre d'outil présente lorsque tu as ton userform affiché, un onglet affichage, dont l'utilisation de permet de choisir d'afficher l'objet (le userform) ou le code


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et zut (le me suis trompé de discussion !) Prière d'ignorer lmon message précédent


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bonjour,

Je te signale que je suis débutant, je cherché à faire comme toi: masquer tous les onglets et ne laisser qu'un seul visible.
Solution sur ce fil --> Tapez le texte de l'url ici.

Cordialement,
Scribetout