Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

jurassic pork

XLDnaute Occasionnel
Hello,
jcf6464 j'ai un peu amélioré le code du classeur du message #74
1 - J'ai rechargé les images des activex à partir de mes gifs qui sont plus jolis.
2 - J'ai remis la protection sur Open du classeur plutôt que activate ( si on fait des modifs dans la feuille cela est plus gênant).
3 - J'ai mis un activex image à la place d'une forme pour l'objet comm cela permet d'avoir un autosize de l'info-bulle
4 - J'ai modifié le code de over pour optimiser l'utilisation CPU quand il y a un MouseMove sur un bouton (utilisation d'une variable globale prevShape)
code VBA modifié :
Dans ThisWorkbook :

VB:
Private Sub Workbook_Activate()
'ActiveSheet.Protect UserInterfaceOnly:=True
End Sub
Public Function Protection()
   ActiveSheet.Protect UserInterfaceOnly:=True
End Function
Public Function DeProtection()
    If ActiveSheet.ProtectContents Then
           ActiveSheet.Unprotect
    End If
End Function
Private Sub Workbook_Open()
   ActiveSheet.Protect UserInterfaceOnly:=True
End Sub
Dans Feuil1 :
VB:
Sub over(shap, msg)
    If shap.Name = prevShape Then Exit Sub
    With ActiveSheet
        With mask: .Visible = True: .Left = 0: .Top = 0: _
             .Width = 1200: .Height = 1000: .BackStyle = 0
        End With
        With comm: .Caption = msg: .Visible = True: .Top = shap.Top - 15: _
             .Left = shap.Left + (shap.Width / 2)
        End With
    End With
    prevShape = shap.Name
End Sub

Private Sub mask_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ActiveSheet.mask.Visible = False
    ActiveSheet.comm.Visible = False
    prevShape = ""
End Sub
Dans Module1 :
VB:
Global prevShape As String

Ami calmant, J.P
 

Pièces jointes

  • COMMANDE - TEST - Bureau - juillet 2024 JP.xlsm
    164.4 KB · Affichages: 4
Dernière édition:

jcf6464

XLDnaute Impliqué
Bonjour @jurassic pork vous tous et le forum,

Cela fonctionne pour l'instant,
une remarque quand tu imprime pourquoi masquer les lignes 8 et 9 cela ne sert à rien pour ma part ...

Bonne continuation jcf
 

halecs93

XLDnaute Impliqué
Bonjour @jurassic pork vous tous et le forum,

Cela fonctionne pour l'instant,
une remarque quand tu imprime pourquoi masquer les lignes 8 et 9 cela ne sert à rien pour ma part ...

Bonne continuation jcf
Hello,

En fait c'est moi qui avait mis ça dans le code original. Ca permettait simplement, à l'impression, une mise en page qui évitait un trop grand espace entre les données fournisseur et la commande à proprement parler.
 

jcf6464

XLDnaute Impliqué
Bonjour @jurassic pork , halecs93 ,vous tous et le forum,

Ok pas grave par contre quand on imprime en PDF il reste sur la page d'impression le label enregistrer en PDF,

Bonne continuation jcf
 

Pièces jointes

  • 2024-07-24 115135.jpg
    51.8 KB · Affichages: 3

Discussions similaires

Réponses
9
Affichages
236
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…