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

cartoiide

Habitué
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
------------------------
 

cartoiide

Habitué
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
 

zeb

Modérateur
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 :

Vous devez être connecté pour voir les images.


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

cartoiide

Habitué
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 !


[cpp]

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

[/cpp]
 

zeb

Modérateur
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 :
Code:
Set btn = bar.Controls.Add(Type:=msoControlButton)
btn.Caption = "&Saisir un état"
btn.OnAction = "ThisWorkbook.Dashboard_OnClick"
A charge pour toi de mettre le code qui te convienne dans la macro Dashboard_OnClick.

Un exemple :
Code:
Sub Dashboard_OnClick()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim rg As Range
    
    Set wb = Workbooks.Open("\\Cesar\SFC-CICF\Travail\Tableau de bord.xls")
    Set ws = wb.Worksheets("Feuil2")
    Set pl = ws.Range("B27")

    wb.Activate
    ws.Activate
    rg.Activate

End Sub
 

cartoiide

Habitué
Bonjour,

Merci pour ta réponse j'éssaie de corriger mon code avec tes conseils et je revienbs sur le forum si difficulté

 

cartoiide

Habitué
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).

 

zeb

Modérateur
Regarde bien le code :
Code:
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 ?
Schizophrène :lol:
 

cartoiide

Habitué
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 :

[cpp]btn.OnAction = "ThisWorkbook.Dashboard_OnClick"[/cpp]

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...
 

zeb

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

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

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

Dans le code du classeur, crée la procédure suivante :
Code:
Sub Deviendra
    MsgBox "Deviendra"
End Sub

Dans le code d'un nouveau module, crée la procédure suivante :
Code:
Sub Grand
    MsgBox "Grand"
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.
 

cartoiide

Habitué
Super ! J'ai tout compris. La pêche permet parfois d'accéder à des résultats miraculeux...

Merci, j'ai tout adapté. Je reviendrai sans doute sur le forum pour un autre problème.
 

cartoiide

Habitué
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 ?
 

zeb

Modérateur
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.
 

cartoiide

Habitué
J'ai trouvé la solution en différenciant chaque procédure "Sub Dashboard_OnClick()" par un numéro ("Sub Dashboard_OnClick1()".

Cela fonctionne très bien maintenant merci.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut