Résolu Office 365 Créer un menu d'onglets

lucarn

XLDnaute Junior
Bonjour,
J'ai un fichier qui peut faire plus d'une centaine d'onglets.
Je donne donc un nom codé à chaque onglet de type F1, F2, etc.
Mais pas facile de se rappeler que F78 correspond à la fiche Machin chouette.
Je voudrais donc avoir un onglet Menu sur lequel est noté tous les F avec pour chacun, son objet : F78 Machin chouette
Et donc cliquer dessus pour que l'onglet s'ouvre.
Cela implique que j'écrive l'objet moi-même (à moins, que la macro puisse aller chercher l'objet dans une cellule).
 
Ce fil a été résolu! Aller à la solution…

Dranreb

XLDnaute Barbatruc
Boujour.
Ça doit pouvoir se faire avec une Sub Worksheet_SelectionChange dans le module de l'objet Worksheet représentant la feuille "Menu"
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Un exemple dans le fichier pas fourni ;)

Les codes sont dans module1, dans le module de la feuille "Menu" et dans le module de ThisWorkbook.
Le menu s'actualise à l'ouverture du fichier et à chaque activation de la feuille 'Menu'.

edit: Bonsoir à toutes et tous, @Lolote83 :), @Dranreb et @fanfan38 :)
 

Fichiers joints

Dernière édition:

Lolote83

XLDnaute Accro
Bonsoir,
Fanfan, j'ai testé ta version. Un petit HIC !!!!
A chaque clic sur un bouton, l'intégralité des boutons est reconstitué et du coup on se retrouve avec une multitude de boutons.
Voir copie ci-dessous
1579024996818.png
Sinon, l'idée est pas mal !!!!
@+ Lolote83
 

patricktoulon

XLDnaute Accro
et
bonsoir
et j'en rajoute une !! ;)
tu met ca dans le sheets acceuil (celui ou doit être ton menu )
exemple la cellule C6 devient un bouton
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$C$6" Then MenuX: Cancel = True Else Cancel = False
End Sub
et dans un module standard tu met

VB:
Function MenuX()
    Dim barre As CommandBar, i&
    On Error GoTo suite
    delmenu
suite:

    Set barre = CommandBars.Add("MenuSheetx", msoBarPopup, False, True)
    For i = 1 To Sheets.Count
        With barre.Controls.Add(msoControlButton, 1, , , True)
            .Caption = Sheets(i).Name & ":" & Sheets(i).CodeName
            .Tag = i
            .FaceId = 358
            .OnAction = "openSheet"

        End With


    Next
barre.ShowPopup
  
End Function
Sub openSheet()
Sheets(Val(CommandBars.ActionControl.Tag)).Activate
End Sub
Function delmenu()
    On Error Resume Next
    CommandBars("MenuSheetx").Delete
End Function
prévoir un delmenu dans le beforeclose du classeur
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
delmenu
End Sub
rien n'existe a l'ouverture ,rien n'existe a la fermeture ;)
demo3.gif
 

eriiiic

XLDnaute Barbatruc
Bonjour à tous,

c'est sans doute joli patrick, mais avec + de 100 onglets pas sûr que l'écran suffise... ;-)
Ca le prend en compte ?
J'imagine plus une liste avec ascenseur.
eric
 

patricktoulon

XLDnaute Accro
Bonjour eriiiic
et bien tu sequence en sub menu ;)
VB:
Function MenuX()
    Dim barre As CommandBar, i&,cpop ac object
    On Error GoTo suite
    delmenu
suite:

    Set barre = CommandBars.Add("MenuSheetx", msoBarPopup, False, True)
    Set cpop = barre.Controls.Add(msoControlPopup, 1, , , True)
    cpop.Caption = "de 1 a 10"
    For i = 1 To Sheets.Count
               With cpop.Controls.Add(msoControlButton, 1, , , True)
                .Caption = Sheets(i).Name & ":" & Sheets(i).CodeName
                .Tag = i
                .FaceId = 358
                .OnAction = "openSheet"
              End With
         If i Mod 10 = 0 Then
            Set cpop = barre.Controls.Add(msoControlPopup, 1, , , True)
            cpop.Caption = "de " & i + 1 & "  a " & i + 10
        End If
    Next
    barre.ShowPopup
End Function
demo3.gif

on peut meme y ajouter un textbox pour taper le nom du sheets recherché si tu veux ;)
 

lucarn

XLDnaute Junior
Bonjour tout le monde,

Bon, je vois que ma question a fait fumer des cerveaux et je vous en remercie.
Je vais essayer de faire fonctionner tout cela, mais je ne vous cache pas que je ne comprends pas grand-chose à ce que vous dites.
En tous cas, merci beaucoup de votre aide. Et puis, ça m'a fait rire de voir le surenchérissement.
Bonne journée
 

lucarn

XLDnaute Junior
Je reformule ma demande car je me rends compte que j'avais oublié un détail majeur.
Cette fois, je pense que ça va être compliqué....

En fait, je voudrais fournir le fichier à plusieurs personnes et que les choses se fassent automatiquement.
Ce sont des gens encore plus nuls que moi en matière d'Excel et de macros etc. etc.
Je ne peux donc pas compter sur eux pour qu'ils fassent des liens hypertextes ou bien pire que cela :)
Il faut que je leur livre un fichier clé en main qui fonctionne tout seul.

Voici comment ça marche.
J'ai créé un formulaire type que chacun copie pour le placer dans un onglet.
Donc, je voudrais que lorsqu'ils ouvrent un nouvel onglet, celui-ci prenne automatiquement le nom du type F12 étant donné qu'ils sont tous F1, F2, F3 etc.
Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
 

lucarn

XLDnaute Junior
Bonjour à tous,

Un exemple dans le fichier pas fourni ;)

Les codes sont dans module1, dans le module de la feuille "Menu" et dans le module de ThisWorkbook.
Le menu s'actualise à l'ouverture du fichier et à chaque activation de la feuille 'Menu'.

edit: Bonsoir à toutes et tous, @Lolote83 :), @Dranreb et @fanfan38 :)
Bonjour Mapomme,
Je te remercie et 1000 excuses pour le fichier non fourni.

Je reformule ma demande car je me rends compte que j'avais oublié un détail majeur.
Cette fois, je pense que ça va être compliqué....

En fait, je voudrais fournir le fichier à plusieurs personnes et que les choses se fassent automatiquement.
Ce sont des gens encore plus nuls que moi en matière d'Excel et de macros etc. etc.
Je ne peux donc pas compter sur eux pour qu'ils fassent des liens hypertextes ou bien pire que cela :)
Il faut que je leur livre un fichier clé en main qui fonctionne tout seul.

Voici comment ça marche.
J'ai créé un formulaire type que chacun copie pour le placer dans un onglet.
Donc, je voudrais que lorsqu'ils ouvrent un nouvel onglet, celui-ci prenne automatiquement le nom du type F12 étant donné qu'ils sont tous F1, F2, F3 etc.
Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
.
 

lucarn

XLDnaute Junior
Bonsoir
J'ai modifié les boutons s'effacent et de nouveau se créent lors d'un double clic
A+ François
Bonjour Fanfan et merci pour ton aide. Mais...
Je reformule ma demande car je me rends compte que j'avais oublié un détail majeur.
Cette fois, je pense que ça va être compliqué....

En fait, je voudrais fournir le fichier à plusieurs personnes et que les choses se fassent automatiquement.
Ce sont des gens encore plus nuls que moi en matière d'Excel et de macros etc. etc.
Je ne peux donc pas compter sur eux pour qu'ils fassent des liens hypertextes ou bien pire que cela :)
Il faut que je leur livre un fichier clé en main qui fonctionne tout seul.

Voici comment ça marche.
J'ai créé un formulaire type que chacun copie pour le placer dans un onglet.
Donc, je voudrais que lorsqu'ils ouvrent un nouvel onglet, celui-ci prenne automatiquement le nom du type F12 étant donné qu'ils sont tous F1, F2, F3 etc.
Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
 

lucarn

XLDnaute Junior
Bonjour à tous et bonne année
Autre proposition par combobox
Bonjour Jacky et merci. Mais...
Je reformule ma demande car je me rends compte que j'avais oublié un détail majeur.
Cette fois, je pense que ça va être compliqué....

En fait, je voudrais fournir le fichier à plusieurs personnes et que les choses se fassent automatiquement.
Ce sont des gens encore plus nuls que moi en matière d'Excel et de macros etc. etc.
Je ne peux donc pas compter sur eux pour qu'ils fassent des liens hypertextes ou bien pire que cela :)
Il faut que je leur livre un fichier clé en main qui fonctionne tout seul.

Voici comment ça marche.
J'ai créé un formulaire type que chacun copie pour le placer dans un onglet.
Donc, je voudrais que lorsqu'ils ouvrent un nouvel onglet, celui-ci prenne automatiquement le nom du type F12 étant donné qu'ils sont tous F1, F2, F3 etc.
Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
 

lucarn

XLDnaute Junior
Bonjour à tous,

c'est sans doute joli patrick, mais avec + de 100 onglets pas sûr que l'écran suffise... ;-)
Ca le prend en compte ?
J'imagine plus une liste avec ascenseur.
eric
Bonjour Eriiic, et merci. Mais...
Je reformule ma demande car je me rends compte que j'avais oublié un détail majeur.
Cette fois, je pense que ça va être compliqué....

En fait, je voudrais fournir le fichier à plusieurs personnes et que les choses se fassent automatiquement.
Ce sont des gens encore plus nuls que moi en matière d'Excel et de macros etc. etc.
Je ne peux donc pas compter sur eux pour qu'ils fassent des liens hypertextes ou bien pire que cela :)
Il faut que je leur livre un fichier clé en main qui fonctionne tout seul.

Voici comment ça marche.
J'ai créé un formulaire type que chacun copie pour le placer dans un onglet.
Donc, je voudrais que lorsqu'ils ouvrent un nouvel onglet, celui-ci prenne automatiquement le nom du type F12 étant donné qu'ils sont tous F1, F2, F3 etc.
Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Et que dans le menu ce nouvel onglet s'inscrive automatiquement avec un lien permettant d'ouvrir l'onglet.
De plus, dans le formulaire, une cellule sert à inscrire un titre. Il faudrait donc que lorsque le titre est écrit, il se reporte dans le menu en face du code de l'onglet.
Ce qu'il serait bien:
  • que tu nous dises où se trouve dans tes feuilles la référence du formulaire (TruxMuche MachinChose)
  • que tu dises où se trouve dans tes feuilles le titre du formulaire
  • BREF que tu nous fournisses un petit fichier échantillon représentatif
  • Et que tu n'attends pas que les autres se fendent chacun de la réalisation d'un fichier test
C'est possible ? ;)
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas