Se connecter avec
S'enregistrer | Connectez-vous

Barre commande pour accéder à 1 feuille: HyperlinkType et Tooltiptext

Dernière réponse : dans Programmation

Bonjour à tous,

Je recherche le moyen d'accéder à une feuille d'un classeur Excel identifié au moyen d'un barre de commande. J'arrive à ouvrir le fichier (Tableau de bord.xls) mais je ne parviens pas à activer une feuillle précise de ce classeur. Quelqu'un pourrait-il solutionner mon pb et adapter peut-être le TooltypTexte ? Ci-dessous, mon code tel qu'il est actuellement... Merci pour votre aide !

--------------
Set SousMenu = NouveauMenu.Controls.Add(Type:=msoControlButton)
With SousMenu
.Caption = "&Saisir un état"
.HyperlinkType = msoCommandBarButtonHyperlinkOpen
.TooltipText = "\\Cesar\SFC-CICF\Travail\Tableau de bord.xls"

End With
------------------------
Lassé par la pub ? Créez un compte

Bonjour à tous et bonne année....

En ouvrant cette réponse je m'attendais à trouver une solution à mon problème... Mais non la bonne nouvelle n'est pas encore arrivée...

Zeb, c'est promis la prochaine fois j'utilise le bouton permettant de mettr een exergue le code.
Désolé étant nouveau je n'ai pas percuté sur cette présentation.

Zeb, tu ne peux pas m'apporter une aide ?!

Cartoiide
Expert Programmation

Bonjour,

Il y a deux zeb sur ce forum.

  • L'un est modérateur et doit veiller à la bonne tenue du forum, même et surtout envers les nouveaux. Faire lire et respecter le règlement. Il n'y a pas de prochaine fois qui tienne, il faut soit bien faire les choses du premier coup (difficile pour les nouveaux évidemment), soit se rattraper. Le règlement est pourtant didactique. Allez, je le remets ici :



  • L'autre est un membre très actif qui ne demande qu'à aider les autres. De nombreux posts en témoignent sur ce site.

    Bonjour à tous,

    Je recherche le moyen d'accéder à une feuille d'un classeur Excel identifié au moyen d'un barre de commande. J'arrive à ouvrir le fichier (Tableau de bord.xls) mais je ne parviens pas à activer une feuillle précise de ce classeur. Quelqu'un pourrait-il solutionner mon pb et adapter peut-être le TooltypTexte ? Ci-dessous, mon code tel qu'il est actuellement... Merci pour votre aide !


    1. Set SousMenu = NouveauMenu.Controls.Add(Type:=msoControlButton)
    2. With SousMenu
    3. .Caption = "&Saisir un état"
    4. .HyperlinkType = msoCommandBarButtonHyperlinkOpen
    5. .TooltipText = "\\Cesar\SFC-CICF\Travail\Tableau de bord.xls"
    6. End With
    Expert Programmation

    Ohlala, passer par un Hyperlink et le tooltiptext pour ouvrir un fichier, voilà qui me semble capilo-tracté.

    Je te propose plutôt d'utiliser la méthode OnAction :
    1. Set btn = bar.Controls.Add(Type:=msoControlButton)
    2. btn.Caption = "&Saisir un état"
    3. btn.OnAction = "ThisWorkbook.Dashboard_OnClick"

    A charge pour toi de mettre le code qui te convienne dans la macro Dashboard_OnClick.

    Un exemple :
    1. Sub Dashboard_OnClick()
    2. Dim wb As Workbook
    3. Dim ws As Worksheet
    4. Dim rg As Range
    5.  
    6. Set wb = Workbooks.Open("\\Cesar\SFC-CICF\Travail\Tableau de bord.xls")
    7. Set ws = wb.Worksheets("Feuil2")
    8. Set pl = ws.Range("B27")
    9.  
    10. wb.Activate
    11. ws.Activate
    12. rg.Activate
    13.  
    14. End Sub

    Je viens de corriger mon code en insérant les 3 lignes du "Set btn" dans ma procédure principale.

    La procédure "Sub Dashboard_OnClick()" ne se lance pas (le fichier appelé ne s'ouvre pas). Par contre elle se lance correctement lorsque je la lance manuellement.

    Je précise que j'ai placé la procédure "Sub Dashboard_OnClick()" à la suite de la procédure principale située dans un module.

    Peut-être faut-il la placer ailleurs ? (je précise que je suis plutôt débutant... ce qui explique ces questions peut-être simplistes).

    Expert Programmation

    Regarde bien le code :
    1. btn.OnAction = "ThisWorkbook.Dashboard_OnClick"

    Le bouton btn (ou le menu mnu, appelle-le comme tu veux) est attendu dans le code de ThisWorkBook. En fait, tu le mets où tu veux, mais il faut juste préciser où. Je suis sûr que le temps que j'écrive ces lignes, tu auras trouvé à force de tâtonnements et de réflexion :) 

    Alors, comment trouves-tu le second zeb ?
    Spoiler
    Schizophrène :lol: 

    Le second ZEB est efficace et réactif en effet. Merci en tout cas de ces réponses précises.

    Je situe plus précisément le contexte de mon problème : j'ai créé un fichier Excel "principal" qui comporte 6 menus, lesquels contiennent plusieurs sous-menu. J'ai traduit cela de la manière manière suivante :

    Un projet VBA qui contient autant de modules que de menu .

    Dans chaque module, une procédure crée un menu et plusieurs sous menus :
    - sous-menu 1 : lance une feuille d'un fichier excel x,
    - sous-menu 2 : propose une liste de fichier, un fichier est ouvert lorsque l'on clique dessus.

    Le sous-menu 2 fonctionne bien,
    Le sous-menu 1 est l'objet de ce sujet sur le forum.

    Cela situe plus précisément le contexte de ce post. Je suis donc face à 2 problèmes :

    1- Tel que j'ai écris mon codden, je ne peux donc pas positionner la commande suivante dans le code de ThisWorkBook mais dans un module :

    1. btn.OnAction = "ThisWorkbook.Dashboard_OnClick"


    2- Je dois faire en sorte qu'il y ai une procédure Sub Dashboard_OnClick() pour chacun des modules pour ouvrir un fichier différent selon le menu utilisé.


    J'espère que je suis assez clair...
    Expert Programmation

    Je te donne un exemple. C'est donc à toi de l'adapter. Bon.
    Voici non pas du poisson, mais un cours de pêche :jap:  :

    Ouvre le code d'un nouveau classeur.
    Dans le code de la feuille 1, crée la procédure suivante :
    1. Sub Petit
    2. MsgBox "Petit"
    3. End Sub


    Dans le code de la feuille 2, crée la procédure suivante :
    1. Sub Poisson
    2. MsgBox "Poisson"
    3. End Sub


    Dans le code du classeur, crée la procédure suivante :
    1. Sub Deviendra
    2. MsgBox "Deviendra"
    3. End Sub


    Dans le code d'un nouveau module, crée la procédure suivante :
    1. Sub Grand
    2. MsgBox "Grand"
    3. End Sub


    Dans Excel, maintenant, ouvre le menu Outils/Macro/Macros... (Alt+F8) et admire ton oeuvre, vue par Excel. Ce sont ces noms que tu peux mettre dans ta commande OnAction.

    Zeb me revoila, et bonjour,

    Le code que tyu m'a donné fonctionne si je le mets dans un module. Lorsque que le duplique dans un autre module (pour l'adapter à un autre menu), l'action OnAction n'aboutit pas : cela ne plante pas mais le fichier Excel pointé ne s'ouvre pas... Est-ce qu'il y a une manip que je doive faire ?
    Expert Programmation

    Ben je ne sais pas.
    J'espère que dans des modules différents tes fonctions ont des noms différents et que tu préfixes le nom de tes fonctions par le nom du module dans les propriétés OnAction.

    Mets des points d'arrêt dans tes différents modules et trace ton code.
    Lassé par la pub ? Créez un compte