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 :

ControlTipText sur ListBox ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut ControlTipText sur ListBox ?
    Bonjour à tous,

    voila mon problème

    j'ai une listBox dans laquelle je mets des chemins de fichiers...
    Comme vous le savez tous, les chemins de fichier sont en général assez long,

    je souhaiterai donc savoir s'il est possible lorsque la souris passe (ou au pire le selectionne) sur un élement de ma liste d'afficher l'équivalent d'un controlTipText (désolé je connais pas le terme en francais, déformation vba) pour afficher le chemin complet ...

    j'espere avoir été clair

    merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Oui, tu peux faire ça simplement en utilisant les événements MouseDown et MouseUp de ta liste. Et c'est très simple
    Tu crées un label pour le message affichant ta sélection dans la liste
    (dans l'exemple, Label22)
    Un clic sur un item affiche le message, un autre clic sur le même item le masque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.Label22.Visible = Not Me.Label22.Visible
    End Sub
     
    Private Sub ListBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.Label22.Caption = ListBox2
    End Sub
    Bonne journée

    PS - Tu peux compléter en masquant le label dans l'exit de ta liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        Me.Label22.Visible = False
    End Sub
    Ainsi, si tu as "oublié" de "cliquer" une seconde fois, le message est masqué quand tu quittes la liste

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour, tous,

    Bonjour à toi également, Ousk,

    Et en mettant "çà" en vrai tooltip ?

    Je m'y mets ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour, tous,

    Bonjour à toi également, Ousk,

    Et en mettant "çà" en vrai tooltip ?

    Je m'y mets ?
    Bonjour ucfoutu,
    Avec controltiptext, tu afficheras aussi bien une liste vide que renseignée (ce qui n'apporte peut-être pas grand chose)
    Par contre, le temps d'attente est plus long et n'est pas aussi systématique. (ceci selon ma modeste expérience)
    L'idéal serait-il de mettre les deux ?

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Re,

    Avoir à cliquer pour "voir" ne correspond pas à l'esprit d'une info-bulle ...

    Je sais parfaitement faire cette chose en Vb6

    Pour l'adapter à VBA, qui ne possède pas certaines fonctions, il va falloir que je bûche un peu ... mais j'y parviendrai, c'est à peu près certain...

    Je m'y mettrai donc en fin de soirée, après que j'en aurai terminé avec autre chose n'ayant rien à voir avec DVP...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Listbox1.controltiptext = Listbox1
    C'est de ça dont tu parles ?

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Non, car celà t'oblige à cliquer alors que je parle d'une info-bulle, juste au survol de la souris, sans cliquer ... (le texte de l'info-bulle changeant selon l'article simplement "survolé" dans la listbox, sans donc le sélectionner...)

    Mais je verrai celà cette nuit... On m'attend à d'autres tâches très prenantes.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    He non ! controltiptext affiche une infobulle sur simple MouseMove mais comme je l'ai dit, l'affichage est capricieux.

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    C'est plutôt que cet affichage est très lent (rame sec !) d'une part, et que, d'autre part, il est un peu plus qu'aléatoire !
    A la poubelle, donc !!!
    Je vais donc me lancer dans l'arithmétique pour le remplacer, au survol sans sélection, par une textbox (plutôt que par un label) car une textbox a l'avantage de pouvoir être mise au 1er plan. Et un autre calcul pour l'afficher là où il convient (au niveau de l'article survolé)..

    Je me sustente d'abord ...

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est ce que je voulais dire "survol de la souris", pas de relation avec l'événement mousemove.
    Je propose autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.Label22.Visible = True
    End Sub
     
    Private Sub ListBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.Label22.Visible = false
    End Sub
    Je l'ai doublé de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       Me.Label22.Visible = false
    End Sub
    mais j'en ai un autre usage : J'étale ma liste sur toute la page quand je veux sélectionner un item et la raccourcis quand c'est fait.
    Mais pour le message d'aide associé, c'est perfect !
    Tu devrais tout de même tester ça. Sinon je te joins un fichier

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Ouais...
    Le fromage m'a plu et le vin (j'espère que je n'en ai pas abusé) me convenait...
    Mon portable avec Excel a fonctionné (étonnant ...
    Je me suis donc lancé dans l'arithmétique et ceci (quelle que soit la taille de police de la listbox) devrait convenir à ce que cherche à faire notre ami ... hic !...

    sur une UserForm, une listbox nommée ListBox1 et une Textbox nommée cinema ...

    Code :

    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
    32
    33
    34
    35
    Option Explicit
     
    Private Sub UserForm_Initialize()
      Dim i As Integer
      ListBox1.Width = 50 ' à régler à son goût
      ListBox1.Height = 60 ' à régler à son goût
      'ceci n'est là que pour exemple
      For i = 1 To 40
         ListBox1.AddItem "voilà mon article N° " & i
      Next
      With cinema
        .Visible = False
        .Width = 60 ' à régler à son goût
        .Height = 30 ' à régler à son goût
        .BackColor = vbYellow ' à régler à son goût
        .MultiLine = True
        .Locked = True
      End With
    End Sub
     
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      cinema.Visible = False
    End Sub
     
    Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      Dim tit As Integer
      tit = ListBox1.TopIndex + 1 + Int((Y - 8) / (ListBox1.FontSize * 1.25))
      If tit < 0 Or tit >= ListBox1.ListCount Then Exit Sub
      With cinema
       .Visible = True
       .ZOrder
       .Text = ListBox1.List(tit)
       .Move ListBox1.Left + ListBox1.Width, ListBox1.Top + Y
      End With
    End Sub
    J'ai rempli ici la listbox, pour exemple et constatation du ... hic... résultat ...

    J'espère que mes idées sont ... hic ... restées claires...

    On promène la souris sur la listbox... et on voit, hein ... (je me contente ainsi de survoler, sans toucher aux boutons de ma souris, hein... comme avec toute info-bulle "normale"...)

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello ucfoutu, on voit bien que Bacchus est passé par là, tu as regardé ce que j'ai mis dans mon dernier post ?
    Bonne nuit, cuve bien !

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Euh... ousk (j'ai cuvé ...)

    ce que tu montres là n'a absolument rien à voir avec la philosophie d'une info-bulle ...... et t'oblige à enfoncer le bouton de ta souris (et peut donc en outre de priver ailleurs de l'utilisation de l'évènement lié à ce geste).

Discussions similaires

  1. WPF donner le selectedItem sur Listbox
    Par scapefrom dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 27/02/2009, 22h08
  2. controltiptext sur deux lignes
    Par zandru dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/05/2008, 14h40
  3. recherche restrictive sur listbox
    Par progbase dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/04/2008, 14h07
  4. ControlTipText sur pusieurs lignes
    Par yadla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/08/2007, 19h00
  5. c# 1.1 déselection sur listbox
    Par pepedupuis dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/09/2006, 22h09

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