Infobulle sur image

maval

XLDnaute Barbatruc
Bonjour,

Je suis à la recherche d’un code que lorsque je passe sur une image il affiche une infobulle qui qui me donne les renseignements si dessous.

"Titre, Titre Original, Date de Sortie, Acteurs, Genre, Durée, Critique Presse, Critique Spectateur, Réalisateur."

Je vous remercie d’avance
 

Pièces jointes

  • Ijnfobulle.xlsm
    30.3 KB · Affichages: 102

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Bonsoir maval,

Continuez donc avec ControlTipText, le code dans Module2 :

Code:
Dim IM() As New Classe1

Sub affiche()
'Feuil2 est le CodeName de la feuille
Dim liste As Range, i%, a
Set liste = Feuil2.Range("B2:B" & Application.Match("zzz", Feuil2.[B:B]))
If liste.Row = 1 Then Exit Sub
ReDim IM(liste.Count)
On Error Resume Next 'si une photo ou un contrôle n'existent pas
With UserForm1
  For i = 1 To liste.Count
    If liste(i) <> "" Then
      Set IM(i).IM = .Controls("Image" & i)
      a = Array(liste(i), liste(i, 2), liste(i, 3), liste(i, 4), liste(i, 5), liste(i, 8), liste(i, 9), liste(i, 10), liste(i, 11))
      .Controls("Image" & i).ControlTipText = Join(a, " # ")
      .Controls("Image" & i).Picture = LoadPicture("J:\Jaquettes\" & liste(i) & ".jpg") 'chargement de l'image
      '.PictureSizeMode = 3 '  0=partiel, 1 = étirer, 3= proportionnel
    End If
  Next
  .Show
End With
End Sub
A+
 

maval

XLDnaute Barbatruc
Re : Infobulle sur image

Bonjour Job

J'ai essayé les trois je ne suis pas arriver

Code:
a = Array(liste(i) & vbCrLf, liste(i, 2) & vbCrLf, liste(i, 3) & vbCr, liste(i, 4) & vbLf, liste(i, 5), liste(i, 8), liste(i, 9), liste(i, 10), liste(i, 11))

Je continuer mes recherches sur le net
Bonne journée
 

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Bonsoir maval,

J'ai remplacer " # " par "vbCrLf" mais sa ne fonctionne pas ?

Vous avez lu mon post #5 ? Il est clair non ?

Si l'on veut des retours à la ligne il faut une TextBox et cette macro dans le module de classe :

Code:
Private Sub IM_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim i%
With UserForm1.TextBox1
  .Visible = False
  If X > 10 And X < IM.Width - 10 And Y > 10 And Y < IM.Height - 10 Then
    i = Val(Replace(IM.Name, "Image", ""))
    .AutoSize = False
    .Value = Join(Array(liste(i), liste(i, 2), liste(i, 3), liste(i, 4), _
      liste(i, 5), liste(i, 8), liste(i, 9), liste(i, 10), liste(i, 11)), vbLf)
    .Width = 1000
    .AutoSize = True
    .Width = .Width + 5
    .Left = X + IM.Left - .Width / 2
    If .Left < 0 Then .Left = 0
    If .Left + .Width > .Parent.Width Then .Left = .Parent.Width - .Width
    .Top = Y + IM.Top + 10
    .Visible = True
  End If
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Infobulle(1).xlsm
    38.5 KB · Affichages: 73

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Bonjour maval, le forum,

Une variante dans ce fichier (2).

Par ailleurs j'ai omis de souligner deux évidences :

- la propriété MultiLine de la TextBox est à True

- la variable liste est déclarée Public dans Module2.

Bonne journée.
 

Pièces jointes

  • Infobulle(2).xlsm
    39.5 KB · Affichages: 70

maval

XLDnaute Barbatruc
Re : Infobulle sur image

Bonjour Job

Je vous remercie pour se remarquable travail.

Je joint mon fichier initial car je n'arrive pas a intégrer votre code pour avoir mon infobulle sur les images.
Je vous remercie d'avance et vous souhaite une bonne journée
 

Pièces jointes

  • User_Film.xlsm
    159.2 KB · Affichages: 63

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Re,

Que le lecteur ne se méprenne pas : le fichier du post#12 a tout l'air d'une plaisanterie mais ce n'est probablement pas le cas.

1) Reprendre UserForm1 pour qu'on y voie quelque chose et qu'il ressemble à celui du post #1.

2) Reprendre tous les codes en étant cohérent avec le code du fichier du post #1.

Alors il vous sera facile d'adapter ma solution.

A+
 

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Bonjour maval,

En fait après avoir créé les Images et les Labels dans UserForm1, créer la fameuse TextBox :

Code:
Set MaTextBox = Me.Controls.Add("Forms.TextBox.1")
With MaTextBox
  .Visible = False
  .MultiLine = True
  .BackColor = &HFFC0C0 'bleu
  .BorderStyle = 1
End With
La variable MaTextBox est déclarée Public.

Ensuite dans le module de classe :

Code:
Private Sub Trombi_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim L As Range, i%
Set L = [ListNom]
With MaTextBox 'variable objet Public
  .Visible = False
  If X > 10 And X < Trombi.Width - 10 And Y > 10 And Y < Trombi.Height - 10 Then
    i = Val(Trombi.Tag)
    .AutoSize = False
    .Value = Join(Array(L(i), L(i, 2), L(i, 3), L(i, 4), L(i, 5), L(i, 8), L(i, 9), L(i, 10), L(i, 11)), vbLf)
    .Width = 1000
    .AutoSize = True
    .Width = .Width + 5
    .Left = Trombi.Left + (Trombi.Width - .Width) / 2
    If .Left < 0 Then .Left = 0
    If .Left + .Width > .Parent.Width - 18 Then .Left = .Parent.Width - .Width - 18
    .Top = Y + Trombi.Top + 10
    .Visible = True
  End If
End With
End Sub
Nota : il faudrait revoir le positionnement de vos Labels, c'est pas terrible.

Fichier joint.

Bonne journée.
 

Pièces jointes

  • User_Film(1).xlsm
    167.8 KB · Affichages: 79

job75

XLDnaute Barbatruc
Re : Infobulle sur image

Re,

Dans ce fichier (2) le positionnement des Labels est correct :

Code:
'-----
      .Left = Img_Trombi(i).Trombi.Left
      .Top = Img_Trombi(i).Trombi.Top + Haut_Img
A+
 

Pièces jointes

  • User_Film(2).xlsm
    167.9 KB · Affichages: 67

Discussions similaires

Réponses
4
Affichages
323

Statistiques des forums

Discussions
312 330
Messages
2 087 344
Membres
103 525
dernier inscrit
gbaipc