XL 2013 info bulle au survol de la souris

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes est à tous,

J'ai un nouveau besoin pour lequel je me permets de vous faire à nouveau appel.

Pour prévenir l'utilisateur d'une possibilité d'action, j'ai besoin d'une info bulle (durée maxi 1 sec idéalement 1/2 seconde)
qui s'affiche au survol de la souris
d'une plage de cellules (dans le fichier test de d4 à d30)

Bien sûr, il y a la possibilité de mettre des commentaires dans les cellules mais sur 50,000 lignes, c'est peut-être lourd pour le fichier... d'autant plus que certaines cellules contiennent déjà des commentaires.

J'ai fait des recherches sur le net (forums et vidéos) je n'ai rien trouvé qui me corresponde et je ne vois pas comment faire.

Alors, je fais appel aux magiciens LOL.
Auriez-vous une solution ?
En cas, je joins un fichier test.

Avec mes remerciements pour vos aides toujours si précieuses,
Amicalement,
arthour973,
 

Pièces jointes

  • survol.xlsm
    13.7 KB · Affichages: 81
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Lionel :), re Jean Marie ;)

@arthour973

Une jolie liste pour changer la forme du shape (si ça te dit). MsoShapeName
Tu peux mettre le numéro à la place du nom. Celui-ci c'est 128.

shape.gif
 

Usine à gaz

XLDnaute Barbatruc
Re-Lone ;)

Merci pour le lien, mais je n'arrive pas à intégrer les codes que je voudrais tenter dans le code de la feuille :
Code:
msoShape16pointStar 94 Étoile à 16 branches 
msoShape24pointStar 95 Étoile à 24 branches 
msoShape32pointStar 96 Étoile à 32 branches 
msoShape4pointStar 91 Étoile à 4 branches 
msoShape5pointStar 92 Étoile à 5 branches 
msoShape8pointStar 93 Étoile à 8 branches

code de Si qui fonctionne avec un smiley :
Code:
Private Sub é1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Me.Shapes("à1").Visible = 1
End Sub
Private Sub é2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Me.Shapes("à2").Visible = 1
End Sub
Private Sub ç1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Me.Shapes("à1").Visible = 0
End Sub
Private Sub ç2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Me.Shapes("à2").Visible = 0
End Sub

Je continue à chercher ....
 

Staple1600

XLDnaute Barbatruc
Re

Petit rappel
Pour prévenir l'utilisateur d'une possibilité d'action, j'ai besoin d'une info bulle (durée maxi 1 sec idéalement 1/2 seconde)
qui s'affiche au survol de la souris d'une plage de cellules (dans le fichier test de d4 à d30)

Bien sûr, il y a la possibilité de mettre des commentaires dans les cellules mais sur 50,000 lignes, c'est peut-être lourd pour le fichier... d'autant plus que certaines cellules contiennent déjà des commentaires.
Si on comprends la problématique comme suit
Selon la cellule "survolée", le contenu de l'infobulle diffère.
Dans ce cas, comment utiliser MouseMouve ?
(est-ce qu'on créé N shapes pour N cellules ?
(cf mes avertissements et ceux de Si... précédemment évoqués)

Le souci vient du fait qu'il n'existe pas d'événement MouveMove sur la cellule active
Il faut passer par un contrôle ou un shape.

D'où le problème de poids si N shapes...*

@arthour973
Mais bon, comme tu ne sembles pas t'inquiéter de ce petit problème...
(pourtant j'essaie de t'expliquer la chose depuis le message#6

*: C'est pour cela que j'utilisais la procédure Private Sub Workbook_SheetSelectionChange qui utilise qu'une seule et unique Shape (cf message#9) et ce sur toutes les feuilles du classeur.
D'ailleurs il faudra modifier le code si le contenu de l'infobulle doit changer selon la cellule active.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel et les autres,

C'est vraiment un gadget, voire une usine à gaz que tu veux-là.

Ce fichier et ce code font (laborieusement) ce que tu souhaites :
Code:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Dim Xdeb, Ydeb, OK As Boolean 'mémorise les variables

Sub Synchroniser()
'touches Ctrl+S
Dim pos As POINTAPI
GetCursorPos pos
Xdeb = pos.X
Ydeb = pos.Y
End Sub

Sub Marche()
'touches Ctrl+M
Dim pos As POINTAPI
OK = True
With Feuil2.Shapes("Survol") 'adapter si nécessaire
    Do While OK
        GetCursorPos pos
        .Top = 0.75 * (pos.Y - Ydeb)
        .Visible = pos.X > Xdeb And pos.X < Xdeb + [D4].Width / 0.75 And pos.Y > Ydeb And pos.Y < Ydeb + [D4:D30].Height / 0.75
        DoEvents
    Loop
    .Visible = True 'facultatif
End With
End Sub

Sub Arret()
'touches Ctrl+A
OK = False
End Sub
L'API Windows GetCursorPos permet de déterminer la position du curseur.

Pour les dimensions des cellules il faut un coefficient de 0.75 mais je ne sais plus pourquoi :rolleyes:

A+
 

Pièces jointes

  • survol(1).xlsm
    25.5 KB · Affichages: 43

Si...

XLDnaute Barbatruc
Re
Mais je n'ai pas trouvé comment afficher un msgbox au lieu d'un shape ?
Voici une réponse (dans ce fil !) mais je choisirais plutôt la seconde proposition.
Nota : dans les 2 cas, c'est au lecteur de décider s'il coince la bulle ou pas.
 

Pièces jointes

  • affichage_survol_cellule2.xlsm
    24.3 KB · Affichages: 33
  • affichage_survol_cellule3.xlsm
    27.2 KB · Affichages: 40

Usine à gaz

XLDnaute Barbatruc
Bonjour JM, Lone, Si, Job75, le Forum ... bon dimanche à toutes et à tous,

Pardon de ne pas vous avoir répondu hier mais je suis encore un peu "faiblard" et j'espère aller de mieux en mieux

Jm
1 : Réponse du post 9 = il est génial ton code. J'ai juste besoin qu'il fonctionne en le mettant dans le code d'une feuille, je vais l'adapter pour cela (enfin si j'y arrive LOL) ..... mais si, mais ... il me convient et est génial ;)
2 : J'avais parlé de 50 000 cellules mais je me suis trompé et ton code me donne la solution ;)

Lone
Ton code est également super :)

Job 75
Ton code ne correspond pas exactement à mon besoin mais il est super aussi et me donne des idées pour une autre application :)

Ce lien n'existe plus
Génial aussi ces 2 nouvelles possibilités :)

Je ne sais comment vous remercier pour vos réponses et codes si précieux.
Ils sont tous super et m'apportent solutions et formation (j'en ai mal au crâne d'y réfléchir LOL)

Voilà qui est super résolu ... vraiment

Encore mes excuses d'avoir tardé à vous répondre.
Bon dimanche à vous tous et à toutes.
amicalement,
arthour973
 

Staple1600

XLDnaute Barbatruc
Re

@arthour973
[avis personnel]
Attention à la facture de gaz... ;)
Personnellement, dans ce type deproblématique, je me demande pourquoi tu n'utilises pas les fonctionnalités natives d'Excel
(ajouter un commentaire dans une cellule et/ou Données/Validation)
Comme disait Pierre Dac
"Le mieux est l'ennemi du bien, mais le pire est l'ami de l'excès." ;)
[/avis personnel]

Question indiscrète
Ce que tu nommes "les utilisateurs" ont quel niveau de maîtrise d'Excel?
Dans le cadre de ton travail, il y a ce point des erreurs de saisie ou d'utilisation du classeur pour que tu sois obligé d'à ce point "brider" Excel?
(NB: cf l'autre fil où tu interdis le copier/coller et ou tu touches au ruban)
 

eriiic

XLDnaute Barbatruc
Bonjour,

Personnellement, dans ce type deproblématique, je me demande pourquoi tu n'utilises pas les fonctionnalités natives d'Excel
(ajouter un commentaire dans une cellule et/ou Données/Validation)
Entièrement d'accord avec toi Staple.
J'ai déjà fait la remarque au post #13, sans réponse pour expliquer...
Mais pourquoi faire simple avec un commentaire alors qu'on peut faire pareil en compliquant tout avec une usine à gaz qui ne demandera qu'à se gripper à la première occasion ? ;-)
Et je te suis sur le fait de déresponsabiliser les utilisateurs plutôt que de les former.
eric
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Eriiic,

J'avais zappé ton post #13.
J'en suis désolé, mais j'avais un souci de santé et je ne l'avais pas vu.
En fait, il n'y a pas besoin de commentaire dans 50 000 cellules, je me suis trompé et j'ai évolué au fil des réponses et des propositions de codes obtenus.

"Mais pourquoi faire simple avec un commentaire alors qu'on peut faire pareil en compliquant tout avec une usine à gaz qui ne demandera qu'à se gripper à la première occasion ? ;-)
Et je te suis sur le fait de déresponsabiliser les utilisateurs plutôt que de les former."


Je comprends ton observation mais j'ai vraiment besoin, pour notre travail "pointu" des actions et verrouillages que je mets en place grâce à vous.
Il serait trop long d'expliquer tout cela en détail ici.

Encore un grand merci d'être toujours là :)
Amicalement,
arthour973
 

Discussions similaires