• Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
596
Réponses
22
Affichages
1 K
Retour