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

patricktoulon

XLDnaute Barbatruc
re
Bonjour @jurassic pork
c'est normal que les points d'arrêt ne fonctionnent pas
tu lance les sub en addressof tu n'a donc aucun retour d'erreur vba mais erreur system d'ailleurs on voit bien les msgbox qui ne sont pas ceux de vba en cas d'erreur mais bel et bien des msgbox system

en gros tu gère plus rien
mais dans certains cas cela peut être intéressant ils ne faut pas tout jeter ;)
 

patricktoulon

XLDnaute Barbatruc
re
ben c'est le tiens sauf que je re call la refrech dans
impression
pdf
calculatrice
ligne+
ligne-
le fait de faire le refrech fait que les link sont vierges de tout survol je n'ai donc plus le phénomène de repeat
par contre effectivement aléatoirement j'ai un message d'erreur reférence non valide du au fait justement que la fonction exécutant le refrech en addressof ne trouve pas la sub forcement
shemas
click sur shape
execution des functions en addressof
dans l’exécution en addressof je refait un refrech
du coup si il y a le repeat la j'ai une erreur reference nonvalide car en addressof il n'y a que l'instance de la fonction elle même
je sais pas si j'arrive a me faire comprendre
 

jurassic pork

XLDnaute Occasionnel
Ta feuille est protégée ? parce qu'en fait mon code était pour une feuille non protégée et il n'y avait pas le Unprotect et le Protect de la feuille dans les macros appelées et c'est cela qui me pose problème quand je protège la feuille et que je remets les Unprotect Protect. Le Unprotect ne semble pas fonctionner.
 

jurassic pork

XLDnaute Occasionnel
Hello,
voici ce que j'ai essayé :
VB:
Dim MyXL As Object
    Set MyXL = GetObject(, "Excel.Application")
    If MyXL.ActiveSheet.ProtectContents Then
         MyXL.ActiveSheet.Unprotect
    End If
Cela ne fonctionne toujours pas quand appelé par l'hyperlien de la forme (Mais fonctionne si exécution dans VBA)
Il y avait aussi l'option UserInterfaceOnly:=True pour le Protect qui en fait déprotége les cellules quand c'est du code VBA qui y touchent mais manque de chance cela ne fonctionne pas quand on utilise les objets ListObject ( par contre fonctionne avec des Range).
Lorsque UserInterfaceOnly est défini sur True lors de la protection d’un feuille de calcul, VBA peut encore apporter certaines modifications sans nécessiter la désactivation de la protection. Cependant, il est important de noter que ce paramètre ne se conserve pas après la fermeture et la réouverture du fichier Excel. Vous devrez réactiver la protection pour les modifications ultérieures.
Concernant les ListObjects, VBA ne peut pas ajouter des lignes à un objet protégé même si UserInterfaceOnly est défini sur True. Seuls les changements de valeurs de cellules sont autorisés.
En résumé, si vous utilisez UserInterfaceOnly avec un ListObject protégé, vous pourrez apporter des modifications de valeurs de cellules, mais vous ne pourrez pas ajouter de nouvelles lignes.

Ami calmant, J.P
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
Bonjour @jurassic pork
je pensais plutôt à un truc comme ça moi
VB:
Public MyXL As Object
Sub boutonshape() 'sub appellée par le lien de la shape
    Set MyXL = GetObject(, "Excel.Application")
    MyXL.Run ThisWorkbook.Name & "!'protection'"

    MsgBox "le bouton fait ce qu'il a à faire"

    MyXL.Run ThisWorkbook.Name & "!'protection'"
'Peut être faudra-t-il remplacer "ThisWorkbook.name" par le nom du fichier encodé en dur (explicitement)
'Le nom du fichier pas le fullname !!!!
End Sub

Sub protection()
    If MyXL.ActiveSheet.ProtectContents Then
        MyXL.ActiveSheet.Unprotect
    Else
        MyXL.ActiveSheet.Protect
    End If
    MsgBox "feuille " & Array("déprotégée", "protégée")(Abs(MyXL.ActiveSheet.ProtectContents))
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Il y avait aussi l'option UserInterfaceOnly:=True pour le Protect qui en fait déprotége les cellules quand c'est du code VBA qui y touchent mais manque de chance cela ne fonctionne pas quand on utilise les objets ListObject ( par contre fonctionne avec des Range).
Toutafé ! Et le Unprotect ne fonctionne pas quand le classeur est partagé par Excel.

Alors je ne te dis pas le problème pour protéger une feuille contenant un TS lorsque le classeur est partagé par Excel... 🤪 🤯
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Alors je ne te dis pas le problème pour protéger une feuille contenant un TS lorsque le classeur est partagé par Excel... 🤪 🤯
Pas sûr qu'un classeur contenant un TS puisse être partagé...
1721298695108.png

Bonne journée
Edit : Sous 365, il faut une "co-édition"
 

patricktoulon

XLDnaute Barbatruc
re
je garde quand même ta proposition qui est tres intéressante dans des feuilles non protégées
d'ailleurs ça pourrait faire l'objet d'une ressource
la demande d'infobulle au survol des shapes ainsi que l'event click inexistant des shapes ,reviens souvent sur le tapis
avec cette astuce on répond aux deux
 

Discussions similaires

Réponses
7
Affichages
404

Statistiques des forums

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