XL 2016 Infobulles au passage de la souris

halecs93

XLDnaute Impliqué
Bonjour,

J'ai tenté de m'inspirer de deux fils sur le forum, mais cela n'a pas fonctionné.

Sur la feuille de calcul j'ai des images associées à des macros. Je souhaitais faire apparaitre des infobulles lorsque la souris survole une image.

Soit j'arrive à le faire, mais la macro ne se lance pas, soit la macro se lance mais je n'ai pas d'infobulle....

Je laisse un fichier exemple.

Un grand merci pour vos réponses.
 

Pièces jointes

  • COMMANDE xld.xlsm
    139.7 KB · Affichages: 19

halecs93

XLDnaute Impliqué
justement c'est ce que je veux dire
être débutant n'est pas une faute il faut bien commencer par quelque chose
cela dit quand on debute on choisi des méthodes plus conventionnelles
pourrait on avoir les images d'origine dans un zip que je le refasse avec des controls image
qui ont leur propre event mousemove
Bonjour Patrick.... voici les icones. Encore merci.
sauvegarde.png
 

Pièces jointes

  • supprimer.png
    supprimer.png
    96 KB · Affichages: 11
  • AJOUT.png
    AJOUT.png
    687.7 KB · Affichages: 9

halecs93

XLDnaute Impliqué

Pièces jointes

  • email.png
    email.png
    293.5 KB · Affichages: 9
  • imprimante.png
    imprimante.png
    444 KB · Affichages: 9
  • calculette 3d.png
    calculette 3d.png
    37 KB · Affichages: 11

jurassic pork

XLDnaute Occasionnel
Hello,
je n'ai pas vu l'astuce à Job75 ? où est-elle ?
On peut lancer une macro directement à partir d'un lien en spécifiant le paramètre Address de la façon suivante :
Address:="#" & MacroName & "()"
Mais il faut que la Macro soit une fonction et renvoie une cible. Il ne faut pas non plus que la feuille soit protégée. Exemple :
VB:
Function Calculatrice()
    ' Déclarer la variable pour le chemin de l'application
    Dim cheminCalculatrice As String   
    ' Définir le chemin de l'application Calculatrice Windows
    cheminCalculatrice = "calc.exe" 
    ' Ouvrir l'application Calculatrice Windows
    Shell cheminCalculatrice, vbNormalFocus
    Set Calculatrice = Selection
End Function
Selection représente en fait l'image sur laquelle on a cliqué.
Voici le code d'initialisation des liens :
VB:
Sub refreshInfoBulleJP()
    Dim ws As Worksheet
    Dim shap As Shape
    ' Utiliser la feuille active
    Set ws = ActiveSheet
Set shap = Sheets(1).Shapes("Image 1")
  shap.Parent.Hyperlinks.Add shap, Address:="#EnvoyerMail()", ScreenTip:="envoyer par Email"
Set shap = Sheets(1).Shapes("Image 2")
  shap.Parent.Hyperlinks.Add shap, Address:="#Impression()", ScreenTip:="Imprimer la commande"
Set shap = Sheets(1).Shapes("Image 3")
  shap.Parent.Hyperlinks.Add shap, Address:="#GenererPDF()", ScreenTip:="enregistrer en PDF"
Set shap = Sheets(1).Shapes("Image 4")
  shap.Parent.Hyperlinks.Add shap, Address:="#Calculatrice()", ScreenTip:="ouvrir la calculatrice"
Set shap = Sheets(1).Shapes("Image 5")
  shap.Parent.Hyperlinks.Add shap, Address:="#Ajout()", ScreenTip:="ajouter un article"
Set shap = Sheets(1).Shapes("Image 6")
  shap.Parent.Hyperlinks.Add shap, Address:="#Supprimer()", ScreenTip:="supprimer un article"
Set shap = Sheets(1).Shapes("Image 7")
  shap.Parent.Hyperlinks.Add shap, Address:="#Imprimer()", ScreenTip:="enregistrer le fichier"
End Sub
En pièce jointe un classeur sans protection de feuille, sans événements de feuille.

Ami calmant, J.P
 

Pièces jointes

  • COMMANDE MATERIEL - modele 2024-2025 JP.xlsm
    177.4 KB · Affichages: 17

halecs93

XLDnaute Impliqué
Hello,
je n'ai pas vu l'astuce à Job75 ? où est-elle ?
On peut lancer une macro directement à partir d'un lien en spécifiant le paramètre Address de la façon suivante :
Address:="#" & MacroName & "()"
Mais il faut que la Macro soit une fonction et renvoie une cible. Il ne faut pas non plus que la feuille soit protégée. Exemple :
VB:
Function Calculatrice()
    ' Déclarer la variable pour le chemin de l'application
    Dim cheminCalculatrice As String  
    ' Définir le chemin de l'application Calculatrice Windows
    cheminCalculatrice = "calc.exe"
    ' Ouvrir l'application Calculatrice Windows
    Shell cheminCalculatrice, vbNormalFocus
    Set Calculatrice = Selection
End Function
Selection représente en fait l'image sur laquelle on a cliqué.
Voici le code d'initialisation des liens :
VB:
Sub refreshInfoBulleJP()
    Dim ws As Worksheet
    Dim shap As Shape
    ' Utiliser la feuille active
    Set ws = ActiveSheet
Set shap = Sheets(1).Shapes("Image 1")
  shap.Parent.Hyperlinks.Add shap, Address:="#EnvoyerMail()", ScreenTip:="envoyer par Email"
Set shap = Sheets(1).Shapes("Image 2")
  shap.Parent.Hyperlinks.Add shap, Address:="#Impression()", ScreenTip:="Imprimer la commande"
Set shap = Sheets(1).Shapes("Image 3")
  shap.Parent.Hyperlinks.Add shap, Address:="#GenererPDF()", ScreenTip:="enregistrer en PDF"
Set shap = Sheets(1).Shapes("Image 4")
  shap.Parent.Hyperlinks.Add shap, Address:="#Calculatrice()", ScreenTip:="ouvrir la calculatrice"
Set shap = Sheets(1).Shapes("Image 5")
  shap.Parent.Hyperlinks.Add shap, Address:="#Ajout()", ScreenTip:="ajouter un article"
Set shap = Sheets(1).Shapes("Image 6")
  shap.Parent.Hyperlinks.Add shap, Address:="#Supprimer()", ScreenTip:="supprimer un article"
Set shap = Sheets(1).Shapes("Image 7")
  shap.Parent.Hyperlinks.Add shap, Address:="#Imprimer()", ScreenTip:="enregistrer le fichier"
End Sub
En pièce jointe un classeur sans protection de feuille, sans événements de feuille.

Ami calmant, J.P
Encore une autre approche.... c'est vrai génial tout ceci. En revanche, je suis obligé de protéger la feuille (ça évite pas mal de mauvaise manip des utilisateurs). Donc, si je comprends bien, pas de déprotéger et reprotéger la feuille à chaque fois ?

Merci
 

jurassic pork

XLDnaute Occasionnel
Cela ne se produit pas sur la calculatrice mais sur les macros où on touche aux cellules de la feuille (ex : Ajout, Supprimer) et si on fait le système de déprotection protection dans la macro cela ne fonctionne pas non plus. C'est comme si avant d'exécuter la macro, excel vérifie qu'il n'y a pas dedans des instructions de modifications de cellules.
 

halecs93

XLDnaute Impliqué
Cela ne se produit pas sur la calculatrice mais sur les macros où on touche aux cellules de la feuille (ex : Ajout, Supprimer) et si on fait le système de déprotection protection dans la macro cela ne fonctionne pas non plus. C'est comme si avant d'exécuter la macro, excel vérifie qu'il n'y a pas dedans des instructions de modifications de cellules.
Oui, tout à fait... malheureusement,
 

patricktoulon

XLDnaute Barbatruc
re
bonjour tous les deux
chez moi avec ta méthode @jurassic pork j'ai un phénomène d'event propagation(l'action se répete deux fois)
conclusion
à tenter voir si ça marche !!??
au début de chaque sub refaire un refresch des links
pour la dé protection dans ce cas de figure ça doit se passer dans les subs aussi je suppose


j'aurais appris quelque chose aujourd'hui
j'ignorais que l'on pouvait mettre des sub dans les address et que par conséquent le clic lance la sub de l'address c'est jolie jolie tout ça
bravo le très vieux cochon 👍;)
 

patricktoulon

XLDnaute Barbatruc
@jurassic pork la méthode de @job75 est dans ce post
 

jurassic pork

XLDnaute Occasionnel
Hello patricktoulon,
peux-tu nous montrer ton code, parce que moi en fait ce que j'ai c'est que le Unprotect de la feuille ne fonctionne pas dans la macro appelée par l'hyperlien. En exécutant la macro dans l'Editeur VBA cela fonctionne. De plus quand la macro est appelée par l'hyperlien les points d'arrêt ne fonctionnent pas.

Ami calmant, J.P
 

Discussions similaires

Réponses
7
Affichages
404

Statistiques des forums

Discussions
313 866
Messages
2 103 087
Membres
108 521
dernier inscrit
manouba