Survole listbox et affichage image

bonjour,

je voudrai afficher une image qui est présente dans un onglet quand on place le curseur sur la ligne d'une listbox. (sans cliquer dessus). Un peu dans la style d'une infobulle. J'ai regardé sur le net mais je n'ai rien trouvé...

pouvez vous m'aider svp

Tout est expliqué dans le fichier.

merci

Bonsoir,

Quelque chose comme ça ?

Pour utiliser ce fichier ne pas chercher à le dézipper : Téléchargez le et renommez le n'importe comment mais avec l'extension .xlsx

par exemple galopin.xlsx

A+

bonsoir,

merci pour votre réponse

cela s'approche de ce que je voudrai faire mais

il faudrait que, quand on survole une listbox que cela fasse apparaitre l'image

par exemple quand je survole "a" dans la listebox cela appel l'image1, "b" appel l'image2...

voila ce que j'ai trouvé: mais il me manque des conditions sur la zone survolée ...

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

d = 5

If X < d Or X > ListBox1.Width - d Or Y < d Or Y > ListBox1.Height - d Then

picture("image1").show

End Sub

merci

Bonjour,

Effectivement au niveau d'Excel il n'y a pas d'évènement "présélection" au survol de ces bestioles, pourtant il en existe bien un puisque l'affichage se met en surbrillance.

Il faudrait probablement chercher au niveau des API de Windows ce qui contrôle cette mise en surbrillance... Pffff !

Cela me semble bien problématique.

A+

Bonjour à tous,

Comment sait-on quelle image afficher quand telle valeur est sélectionnée ?? Y a-t-il une correspondance ?

Bonjour

Pour commencer

Edit : Suppression du fichier car non conforme au problème énoncé

bonjour,

merci votre intérêt.

effectivement il y a une correspondance entre chaque élément de la listbox et les différentes images qui leur sont associées.

J'ai la preuve que c'est possible galopin: j'ai trouvé quelque chose sur le net à adapter (je suis desus mais de l'aide serait bienvenue)

http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#AffichePhotoInterne


voici le code à adapter:

Public répertoirePhotos
Sub auto_open()
  répertoirePhotos = "c:\photos\" ' Adapter
  If Dir(répertoirePhotos, vbDirectory) = "" Then MkDir répertoirePhotos
  Set f = Sheets("liste")
  For Each c In f.Range("liste")
    lig = [Liste].Find(c, LookAt:=xlWhole).Row
    col = [Liste].Column + 1
    For Each s In f.Shapes
      If s.TopLeftCell.Address = Cells(lig, col).Address Then
        H = s.Height
        L = s.Width
        s.Copy
        f.ChartObjects.Add(0, 0, L, H).Chart.Paste
        f.ChartObjects(1).Border.LineStyle = 0
        f.ChartObjects(1).Chart.Export Filename:= _
        répertoirePhotos & c & ".jpg", FilterName:="jpg"
        f.ChartObjects(1).Delete
     End If
   Next s
  Next c
  UserForm1.Show
End Sub

[ligne][/ligne]

Private Sub UserForm_Initialize()
  Me.ListBox1.List = [Liste].Value
  Me.TextBox2 = répertoirePhotos
End Sub

[ligne][/ligne]

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  ligne = Int(Y / (ListBox1.Font.Size * 1.18))
  If Y > 0.2 And Y <= ListBox1.Height - 3 And ligne < Me.ListBox1.ListCount Then
     Me.Curseur.Visible = True
     Me.Curseur.Top = ligne * ListBox1.Font.Size * 1.18 + Me.ListBox1.Top
     Me.ListBox1.ListIndex = -1
     photo = ListBox1.List(ligne + Me.ListBox1.TopIndex, 0) & ".jpg"
     Me.TextBox1 = photo
     If Dir(répertoirePhotos & photo) <> "" Then
        Me.Image1.Picture = LoadPicture(répertoirePhotos & photo)
     Else
        Me.Image1.Picture = LoadPicture
     End If
  Else
    Me.Curseur.Visible = False
  End If
End Sub

Banzai, c'est au survol de la listbox que notre ami veut afficher une image.

Voici un début de solution :

Bonjour

Bonjour Vba-new

Oui mea culpa

Je lis en travers

Désolé pour Exceldu13

Suppression du fichier

Dire que j'ai galéré à trouver comment sélectionner une ligne du listbox, voilà que Boisgontier a déjà trouvé la parade. Dans le code de ListBox1_MouseMove du fichier que j'ai posté plus haut, remplacer :

    hauteurLigne = ListBox1.Font.Size + 1.5    'hauteur d'une ligne dans le listbox
    Index1 = ListBox1.TopIndex    'détecte l'index de la première valeur affichée dans le listbox (gestion du scroll)
    nbItem = ListBox1.ListCount - 1
    'sélection de la ligne survolée
    ListBox1.ListIndex = IIf(Index1 + Y / hauteurLigne > nbItem, nbItem, Index1 + Y / hauteurLigne)

par :

    ligne = Int(Y / (ListBox1.Font.Size * 1.18))
    ListBox1.ListIndex = ListBox1.TopIndex + ligne

D'où peut bien venir ce 1.18 ??

merci pour ton code vba new c'est ce que je voulais.

je vai étudier ça

D'où peut bien venir ce 1.18 ??

en essayant je pense.

1.23 marche mieux (1.18 provoque un décalage quand on place le curseur en bas de la liste...

ligne = Int(Y / (ListBox1.Font.Size * 1.23))

merci encore

-- il y a moins d’une minute --

Pouvez vous m'aider à déchiffrer le code de vba new; cela dépasse mes "compétences" en vba.

voici le code de vba new

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ligne = Int(Y / (ListBox1.Font.Size * 1.24))
    ListBox1.ListIndex = ListBox1.TopIndex + ligne
    Set feuilImage = Sheets("échantignole")    'feuille contenant les images
    '    For Each s In yuy.Shapes
    '        MsgBox s.Name
    '    Next
    nomImage = ListBox1.List(ListBox1.ListIndex)
    With feuilImage
        On Error Resume Next
        Set img = .Shapes(nomImage)
        On Error GoTo 0
        If IsEmpty(img) Then ImageUsf.Picture = LoadPicture(""): Exit Sub
        img.CopyPicture
        .ChartObjects.Add(Me.Left, Me.Top, img.Width, img.Height).Chart.Paste
        .ChartObjects(1).Chart.Export Filename:="imageTemp.jpg"
        .Shapes(.Shapes.Count).Delete
    End With
    ImageUsf.SHOW
    With ImageUsf
        .PictureSizeMode = fmPictureSizeModeZoom
        .Picture = LoadPicture("imageTemp.jpg")
    End With
    Kill "imageTemp.jpg"
End Sub

merci

-- il y a moins d’une minute --

c'est bon en fait.

merci pour votre aide vba new ça marche.

Bonjour,

Je suis de niveau débutant et cela depuis plusieurs années.

Dans mon USF, je recherche à afficher une image dans "image1" au survole de ma listbox "ListBox1". (il recherche l'image dans le tableau via l'immat survolée)

Je recherche sur le net et je tombe sur cette discussion.

J'essaie d'adapter tout cela dans mon code mais j'ai un message d'erreur. J'ai l'impression que cela vient de :

Option Explicit

Dim Ws As Worksheet

J'ai essayé de l'enlever mais du coup, ça ne génère plus rien dans ma listbox.

Pouvez vous me venir en aide ? Merci.

65ft.zip (328.46 Ko)
Rechercher des sujets similaires à "survole listbox affichage image"