IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Message au survol d'un bouton [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut Message au survol d'un bouton
    Bonjour,
    Je sèche sur la recherche de code pour : afficher un texte info bulle (message) au survol d'un bouton.
    Alain

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut alainb et le forum
    Regarde à
    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)
    CommandButton1 étant un bouton issu de la barre d'outils "boîte à outils contrôles" (sur Excel2003).
    A+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Merci pour cette confirmation
    si j'écris
    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
    cela ne donne rien

  4. #4
    Invité
    Invité(e)
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1").value = "ok"
    Quel est le rapport avec l'info-bulle ?

    Philippe

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    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

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Ton bouton est un bouton de formulaire (Formulaire) ou un contrôle ActiveX (Boite à outils Contrôle) ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    un contrôle ActiveX (Boite à outils Contrôle)
    Alain

  8. #8
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    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

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    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

  10. #10
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Alain et à tous,

    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
    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)

    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

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par sabzzz Voir le message
    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)
    Merci pour cette écriture plus "propre"
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Name = "message_AjouteLigneAE"
    génère une erreur 70 "permission refusée".
    J'ai retiré sans succès la protection de la feuille.
    Sais-tu ou cela coince ?

  12. #12
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    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

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Merci Isabelle, ce point est maintenant résolu .... reste ....
    Une erreur d'exécution 16 "expression trop complexe" sur la ligne
    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
    Pour résumer
    Dans Workbook
    Je dessine le message et je code : visible = False

    Dans la feuille
    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
    et dans un module
    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...........
    L'aide précise un problème d'imbrication ?
    Alain

  14. #14
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    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

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Survol d'un bouton avec la souris
    Par Kemanke dans le forum MFC
    Réponses: 2
    Dernier message: 15/11/2007, 16h28
  2. Donner l'état survol d'un bouton par programmation
    Par gbrion dans le forum WinDev
    Réponses: 6
    Dernier message: 08/02/2007, 18h58
  3. Afficher du texte en étiquette au survol d'un bouton
    Par michaeljeru dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/12/2006, 19h39
  4. Réponses: 5
    Dernier message: 05/09/2006, 21h45
  5. [FLASH MX] Son joué au survol d'un bouton !
    Par ExSter dans le forum Flash
    Réponses: 8
    Dernier message: 17/12/2004, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo