Création boutons pour afficher/masquer feuilles d'un même classeur

Bonsoir à tous,

Je cherche à savoir comment on fait des boutons pour afficher ou masquer une feuille excel:

j'ai un classeur avec 19 feuilles d'annexes (sur le même classeur) et sur la page de garde je souhaiterai créer 19 boutons permettant chacun d'afficher ou de masquer une seule feuille correspondante.

J'ai vu que c'était une macro qui me permettrait d'arriver au résultat mais n'ayant aucune connaissance je cherche un coup de main svp.

Est-ce que quelqu'un peut me guider pour que j'apprenne à le faire par moi même ou alors éventuellement me créer le code en m'expliquant ce que je dois modifier pour que ça fonctionne.

Je vous avoue que je suis toujours aussi naze en excel mais je persévère même si ces derniers jours je me suis heurté à plein de difficultés par manque de connaissance et de logique "informatique".

Merci d'avance et bonne soirée;

Bonjour,

Le mieux serait de joindre un fichier exemple avec la page de garde et les noms de feuille.

Voici tout de même un tir à blanc avec ce code (à placer dans le module de la feuille page de garde) qui repose sur l'hypothèse que les noms de feuilles soient listés dans un tableau structuré nommé "Liste" sur cette feuille page de garde. La macro s'exécute au double clic sur un nom de feuille :

private sub worksheet_beforedoubleclick(byval target as range, cancel as bobolean)

if not intersect(target, range("Liste")) is nothing then
    cancel = true
    sheetname = target.value
    on error goto fin
    sheetname = sheets(sheetname).name
    with sheets(sheetname)
        .visible = not .visible
        target.offset(0, 1).value = iif(.visible = true, "Visible", "Masquée")
    end with
end if
fin:
end sub

Cdlt,

Bonjour 3GB,

Merci, j'ai essayé mais je n'ai pas réussi. Une fois de plus je me heurte à mes compétences très limitées.

Voilà le fichier. tu verras, ce sont les cellules de couleur violettes que j'aimerai dans l'idéal remplacer par des boutons (bouton "enfoncé" = page active ; bouton "normal" = page inactive).

Avec toute l'aide que je demande, je vais finir par vous rendre fou

Merci encore

Bonjour toutes et tous

coucou 3GB,^^

@Joebarkill

est-ce comme cela ci-joint ?, une autre façon

se sont des Shapes qui, redirige dans un des onglets du classeur

crdlt,

André

Bonjour Andre13,

Déjà super pour moi car j'ai trouvé comment tu as fait le renvoi sur les autres feuilles en regardant les propriétés d'une cellule que tu as modifié: c'est en fait un lien de renvoi sur le classeur. Trop bien je saurai faire ça maintenant.

Pour la suite du coup: N'y a t'il pas une solution pour que le bouton affiche/masque la feuille correspondante du classeur.

Car là c'est un super début cependant si je peux me permettre, cette solution la laisse toutes les feuilles du classeurs "visibles" en permanence.

Bonjour Joebarr, Salut André ,

Voici mon idée de départ adaptée au fichier : pas de bouton, double-clic sur les cellules de la plage nommée "NomsFeuilles" (initialement les cellules violettes) permet de masquer ou afficher la feuille et change la couleur de la cellule ayant subi le double-clic.

Private Sub worksheet_beforedoubleclick(ByVal Target As Range, cancel As Boolean)

If Not Intersect(Target, Range("NomsFeuilles")) Is Nothing Then
    cancel = True
    sname = Target(1).Value
    On Error GoTo fin
    sname = Sheets(sname).Name
    With Sheets(sname)
        .Visible = Not .Visible
        Target.Interior.Color = IIf(.Visible = True, RGB(0, 255, 0), 255)
    End With
End If

fin:
End Sub

Par ailleurs, les fusions de cellules empêchent une utilisation normale d'excel. Il serait bien de n'avoir aucune fusion de cellules. Il est possible d'agumenter la hauteur des lignes et la largeur des colonnes.

Cdlt,

Re,

Oh pétard la solution de 3Gb est 1 000 fois mieux, héhé j'opte de suite

merci 3GB, plus facile et moins contraignant que ma façon ^^^

@3GB, perso: merci, est-il possible de faire un clic droit et de se rediriger sur l'onglet en question ? tout en gardant la même mise en forme que tu as si bien réalisé

crdlt,

André

OUAH

Trop bien 3GB;

J'ai combiné les 2 propositions et c'est vraiment super:

double clic rend la feuille visible et du coup le lien renvoi à la page si la page est active.

C'est trop top :-)

Tu l'as créé où la plage nommée "NomsFeuilles"?

Tu peux m'expliquer comment je dois faire pour éditer le code depuis le fichier que tu as créé (c'est pour changer les couleurs) et du coup apprender un peu par des trucs "simples"

Je me réponds tout seul pour voir où est rentré le code: clic droit sur la feuille (barre de recherche basse) et "voir le code".

Du coup reste 1 question:

Où a été crée la plage "NomsFeuilles" car si je dois en ajouter une, je dois modifier cette plage si je modifie les noms des feuilles plus rien ne fonctionnera c'est bien ça?

re,

ERRATUM: NomFeuilles il faut aller dans le ruban regarder Formule puis Gestionnaire de Noms et clic gauche sur NomFeuilles

='apercu général'!$S$13:$V$18;'apercu général'!$S$26:$V$31;'apercu général'!$B$33;'apercu général'!$J$33

c'est pour cela qu'il a signalé de ne pas faire de fusion de cellules, le logiciel Excel n'aime pas trop

je vais te faire voir en vidéo comment réaliser un bluf si, j'ose dire de semblant de fusion de cellules que j'ai appris par un Excelien sur ce forum

...

Re,

Merci à tous les 2 pour ce retour !

@André : Voici un essai, non testé, avec une macro clic-droit (toujours dans le module de la feuille aperçu général) :

Private Sub worksheet_beforerightclick(ByVal Target As Range, cancel As Boolean)

If Not Intersect(Target, Range("NomsFeuilles")) Is Nothing Then
    cancel = True
    sname = Target(1).Value
    On Error GoTo fin
    sname = Sheets(sname).Name
    With Sheets(sname)
        if .visible = true then
            .activate
        else
            msgbox "Cette feuille est masquée !" & vblf & vblf & _
            "Merci de l'afficher préalablement en double-cliquant sur la cellule.", vbinformation
        end if
    End With
End If

fin:
End Sub

Si la feuille est masquée, on demande à l'utilisateur de l'afficher, sinon on l'active.

@Joe : La plage nommée est l'union des cellules qui étaient violettes sur le fichier que j'ai téléchargé. Je les ai toutes sélectionnées en gardant la touche ctrl appuyée. Dans la petit barre de référence (qui se trouve à gauche de la barre de formules), j'ai tapé "NomsFeuilles". Elle est consultable et modifiable en se rendant dans le gestionnaire de noms (volet "Formules").

Edit : En effet, la fusion de cellules n'apporte que des problèmes et aucun bénéfice. Je ne m'attendais pas à cette présentation mais plutôt à une liste de tous les noms de feuille : ça aurait été plus simple.

Cdlt,

Re,

merci 3GB vraiment chapeaux ^^^^^

j'ai testé nickel chrome

je vais faire la petite vidéo pour semblant de fusion, arf non je ne peux plus car il faut tout remodifier

Merci André !

@Joe : "Tu peux m'expliquer comment je dois faire pour éditer le code depuis le fichier que tu as créé (c'est pour changer les couleurs) et du coup apprender un peu par des trucs "simples""

Pour consulter et modifier le code VBA, il faut aller sur le volet Développeur/Visual Basic (alt+F11)/Double-clic sur le module de la feuille "aperçu général" qui se trouve dans la fenêtre de projets à gauche de l'éditeur.

Pour activer le volet Développeur, il faut aller sur le volet Fichier/Options/Personnaliser le ruban/Cliquer sur "Développeur".

En effet, cette présentation n'est pas viable... Il faut la liste des noms de feuille sur une colonne (sans fusion ), puis mettre cette liste sous forme de tableau structuré pour gérer automatiquement le redimensionnement (on assure une mise à jour automatique de la plage).

Par ailleurs, si on double-clique sur un nom de feuille qui n'existe pas, il y a une gestion d'erreur qui permet (en principe) de sortir de la procédure sans qu'il ne se passe rien.

Edit : @André, tu te décourages ? . SI tu parles de la solution de Steelson, il me semble qu'il existe un tuto sur ce forum, le lien suffirait peut-être ?

Cdlt,

Re,

@3GB

non t'inquiètes pas j'ai retrouvé, merci en tout cas beau taf

crdlt,

André

Franchement un grand merci :-)

J'ai maintenant une mise en page vraiment plus propre et fonctionnelle.

Pour le moment c'est super, ça correspond à ce que je souhaite avec le classeur actuel.

Je sais que je devrai réfléchir à tout modifier pour l'adapter à Excel et non l'inverse..

Good job et encore merci

Trop happy

Merci André pour ce tuto très clair !

Juste au cas où, le code ne marchera plus que pour la cellule en haut à gauche (les autres cellules ayant une valeur vide). Je préconise donc, pour la plage "NomsFeuilles", d'avoir une seule cellule par nom de feuille car cette fusion n'a pas lieu d'être. Ensuite, il faudra juste modifier la plage "NomsFeuilles" dans le gestionnaire de noms.

Cdlt,

Rechercher des sujets similaires à "creation boutons afficher masquer feuilles meme classeur"