Bonjour,
Je sèche sur la recherche de code pour : afficher un texte info bulle (message) au survol d'un bouton.
Alain
Bonjour,
Je sèche sur la recherche de code pour : afficher un texte info bulle (message) au survol d'un bouton.
Alain
Salut alainb et le forum
Regarde àCommandButton1 étant un bouton issu de la barre d'outils "boîte à outils contrôles" (sur Excel2003).
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
A+
Merci pour cette confirmation
si j'écris
cela ne donne rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) range("A1").value = "ok" end sub![]()

Bonjour
Peux-tu détailler un peu plus.
Ton bouton est un bouton de formulaire ou un contrôle ActiveX ?
Est-ce sur une feuille ou sur un UserForm ?
Lorsque tu écris :
Quel est le rapport avec l'info-bulle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part range("A1").value = "ok"
Philippe
Je suis effectivement trop rapide et pas très explicite !
Mon bouton un objet inséré sur une feuille.
Les propriétés du bouton ne me donne pas la possibilité d'afficher une info bulle lors de son survol. Je cherche donc un code pour obtenir cet effet.
Dans l'attente, je testais l'affichage d'un texte dans la cellule A1 avec CommandButton1_MouseDown
un contrôle ActiveX (Boite à outils Contrôle)
Alain
bonjour Alain et à tous,
une possibilité est d'utiliser l'événement MouseMove du control,
il faudra adapter le nom de l'object ("AutoShape 1") par celui que tu utilisera pour l'info bulle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or Y > CommandButton1.Height - 10 Then ActiveSheet.Shapes("AutoShape 1").Visible = False Else ActiveSheet.Shapes("AutoShape 1").Visible = True End If End Sub
Merci Isabelle
Je profite de ta sympatitude !
Dans la sub ci dessous (macro créée avec l'assistant), j'ai un bug sur la ligne "ActiveSheet.Shapes("message_AjouteLigneAE").Select"
Je souhaite renommer la shape, et je m'embrouille les pinceaux
Alain
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Sub message_AjouteLigneAE() ActiveSheet.Shapes.AddShape(msoShapeRectangularCallout, 214.5, 7.5, 85.5, 46.5).Select Selection.ShapeRange.Adjustments.Item(1) = 1.1053 Selection.ShapeRange.Adjustments.Item(2) = 1.129 Selection.ShapeRange.ScaleHeight 0.69, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("message_AjouteLigneAE").Select Selection.HorizontalAlignment = xlCenter Selection.ShapeRange.Fill.ForeColor.SchemeColor = 43 Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid Selection.Characters.Text = "Ajouter une ligne en bas du tableau" With Selection.Characters(Start:=1, Length:=35).Font .Name = "Arial Narrow" .FontStyle = "Gras" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub
bonjour Alain et à tous,
pour renommer un shape il faut utiliser la propriété name, par ailleurs c'est mieux d'attribue une référence à une variable, dans cette exemple (f, s et forme)Dans la sub ci dessous (macro créée avec l'assistant), j'ai un bug sur la ligne "ActiveSheet.Shapes("message_AjouteLigneAE").Select"
Je souhaite renommer la shape, et je m'embrouille les pinceaux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Sub message_AjouteLigneAE() Dim f As Object, s As Shapes, forme As Shape Set f = ActiveSheet Set s = f.Shapes Set forme = s.AddShape(msoShapeRectangularCallout, 214.5, 7.5, 85.5, 46.5) With forme .Name = "message_AjouteLigneAE" .Adjustments.Item(1) = 1.1053 .Adjustments.Item(2) = 1.129 .ScaleHeight 0.69, msoFalse, msoScaleFromTopLeft .Fill.ForeColor.SchemeColor = 43 .Fill.Visible = msoTrue .Fill.Solid With .TextFrame .Characters.Text = "Ajouter une ligne en bas du tableau" .HorizontalAlignment = xlCenter With .Characters.Font .Name = "Arial Narrow" .FontStyle = "Gras" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End With End With
Merci pour cette écriture plus "propre"
la lignegénère une erreur 70 "permission refusée".
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Name = "message_AjouteLigneAE"
J'ai retiré sans succès la protection de la feuille.
Sais-tu ou cela coince ?
bonjour Alain et à tous,
si la permission est refusé c'est que ce shape existe déjà sur la feuille,
il ne peut y avoit 2 shapes ayant le même nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub SupprimeShape() ActiveSheet.Shapes("message_AjouteLigneAE").Delete End Sub
Merci Isabelle, ce point est maintenant résolu .... reste ....
Une erreur d'exécution 16 "expression trop complexe" sur la ligne
Pour résumer
Code : Sélectionner tout - Visualiser dans une fenêtre à part If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or Y > CommandButton1.Height - 10 Then
Dans Workbook
Je dessine le message et je code : visible = False
Dans la feuille
et dans un module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or Y > CommandButton1.Height - 10 Then ActiveSheet.Shapes("AutoShape 1").Visible = False Else ActiveSheet.Shapes("AutoShape 1").Visible = True End If End Sub
L'aide précise un problème d'imbrication ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub message_AjouteLigneAE() Dim f As Object, s As Shapes, forme As Shape Set f = ActiveSheet Set s = f.Shapes Set forme = s.AddShape(msoShapeRectangularCallout, 214.5, 7.5, 85.5, 46.5) With forme .Name = "message_AjouteLigneAE" .Adju...........
Alain
bonjour Alain,
sans voir ton fichier, c'est difficile pour moi de cibler le probleme,
je t'ai fait un petit exemple, peut être que tu pourras trouver l'erreur en comparent les deux fichiers.
http://cjoint.com/?fsqoTLtXcG
Merci Isabelle pour ta collaboration
Le dernier message d'erreur provenait de l'emplacement de ma sub "créerLeMessage". Après son déplacement dans la feuille, plus de problème.
Je vais maintenant faire plein de "petits messages" et mon travail sera achevé !
Bonne continuation
Alain
Partager