Apparition Image

Bienfaiteur

XLDnaute Junior
Bonjour,
j'aimerai pouvoir afficher des images suivant qu'on clique sur une case, et en cliquant à côté l'image disparait ... Comme un lien hypertexte sur la même page en cliquant dessus apparition en cliquant à côté ca disparait ?
J'ai environ une image par ligne non identique, j'aimerai trouver une solution qui ne soit pas fastidieuse ...
 

Dranreb

XLDnaute Barbatruc
Re : Apparition Image

Bonjour.
J'ai ça, qui montre la photo d'un membre du personnel sélectionné dans une liste avec un label collé en dessous qui rappelle son nom et prénom.
Image1 est un contrôle image de la boîte à outils Contrôles, et Label1 en est un label.
Et puis tien, je vous donne tous le module:
VB:
Option Explicit
Const ChmTromb1 = "M:\Common\Doc_Plant\Trombinoscope\"
Const ChmTromb2 = "M:\Common\Doc_Plant\Trombinoscope\"
'

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nom As String, L As Integer
If Target.Address = Me.[NomChrch].Address Then
   TriNoms
   Nom = UCase(Me.[NomChrch].Value)
   If Nom = "" Then Exit Sub
   On Error Resume Next
   L = WorksheetFunction.Match(Nom, Me.[Noms], 1)
   If Err <> 0 Then L = 1
   On Error GoTo 0
   If Me.[Noms].Rows(L).Value < Nom Then L = L + 1
   If Left$(Me.[Noms].Rows(L).Value, Len(Nom)) > Nom And L > 1 Then L = L - 1
   Me.[Noms].Rows(L).Select
   ActiveWindow.ScrollRow = Selection.Row
   End If
End Sub ' _


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Aide.Visible = xlSheetVisible Or ThisWorkbook.ReadOnly) Then ThisWorkbook.Workbook_Open
Dim ZNm As String, ZNd As String, ZNf As String, ZCNf As String, Rg As Range, X As Double
If Image1.Visible Then Image1.Visible = False
If Label1.Visible Then Label1.Visible = False
On Error Resume Next
If Intersect(Me.[Statut], Target.EntireRow).Value = "LocFct" Then GoTo VérifManipDanger
ZNm = Intersect(Me.[Noms], Target.EntireRow).Value
If Err <> 0 Then
   ZNm = "": ZNd = "": Err.Clear
ElseIf ZNm <> "" Then
   ZNd = Replace(ZNm, "'", "´")
   ZNd = Replace(ZNd, " ", "_")
   ZNd = Replace(ZNd, ".", "*")
   If Right$(ZNd, 1) <> "*" Then ZNd = ZNd & ".*"
   ZNf = Dir(ChmTromb1 & ZNd)
   If ZNf = "" Then
      ZNf = Dir(ChmTromb2 & ZNd): If ZNf <> "" Then _
      ZCNf = ChmTromb2 & ZNf
   Else
      ZCNf = ChmTromb1 & ZNf
      End If
   End If
If ZNf <> "" Then
   If ThisWorkbook.ReadOnly Then Set Rg = Me.[Clé] Else Set Rg = Me.[Notes]
   With Image1: .Left = Rg.Left + Rg.Width + 10: .Top = Target.Top: .AutoSize = True: End With
   With Label1: .Left = Image1.Left: .ForeColor = RGB(&HAE, &HFF, 0): .Height = 15
      .Caption = Replace(Left$(ZNf, InStr(ZNf, ".") - 1), "_", " "): End With
   Image1.Picture = LoadPicture(ZCNf)
   If Err = 0 Then
      Application.OnTime Now, "Liste.AfficherPhoto" '+ 1 / 68400
   Else
      MsgBox Err.Description & vbLf & """" & ZCNf & """.", vbExclamation, "Chargement image"
      With Label1: .Top = Target.Top: .Width = 240: End With
      GoTo VérifManipDanger: End If
   With Image1: .AutoSize = False
      X = 2 ^ (Int(4 * Log(120000 / (.Width * .Height)) / 0.693147180559945) / 8)
      .Height = .Height * X: .Width = .Width * X: End With
   With Label1: .Top = Image1.Top + Image1.Height - 1.5: .Width = Image1.Width: End With
ElseIf ZNd <> "" Then
   With Label1: .Top = Target.Top: .Left = Rg.Left + Rg.Width + 10: .Height = 30: .Width = 180
      .Caption = "Photo introuvable:" & vbLf & "«" & ZNd & "»" & vbLf & ""
      .ForeColor = RGB(255, 195, 0): .Visible = True: End With
   DéfilerLabel
   End If
VérifManipDanger:
If ThisWorkbook.ReadOnly Then Exit Sub
If Not Intersect(Me.[Clé], Target) Is Nothing Then
'   If MsgBox("Vous avez sélectionné des cellules dont la modification" & vbLf & _
'      "risque d'entraîner des discordances entre la liste et les plans." & vbLf & _
'      "Annulez pour écarter ces cellules de la sélection.", _
'      vbExclamation + vbOKCancel + vbDefaultButton2, "Sélection dangereuse") = vbCancel Then
   Application.EnableEvents = False
   Err.Clear: Intersect(Union(Me.[Noms:Tel], Me.[Statut], Me.[Notes]), Target).Select
   Application.EnableEvents = True
   If Err Then UfEmplac.Afficher
'      End If
   End If
End Sub
'

Sub AfficherPhoto()
Label1.Visible = True
Image1.Visible = True
DéfilerLabel
End Sub
Sub DéfilerLabel()
Dim L As Integer, Ls As Integer: Ls = Selection.Row
With ActiveWindow
   L = Label1.BottomRightCell.Row - .VisibleRange.Rows.Count + 2: If L > Ls Then L = Ls
   While .ScrollRow < L: Temporiser: .SmallScroll Down:=1: Wend
   End With
End Sub
Cordialement.
 

Bienfaiteur

XLDnaute Junior
Re : Apparition Image

Bonjour,
Merci de vos réponses !
Pour hypollite, je n'ai pas eu le temps de me pencher là-dessus encore ...
Pour Dranreb, mon fichier est à partager et donc ils n'auront pas ces images vu que l'emplacement source n'existera pas chez eux ... Du coup, je peux pas. :p
 

Dranreb

XLDnaute Barbatruc
Re : Apparition Image

Bonjour.
Et pourquoi n'avez vous pas trouvé, dans mon exemple, même trop complet, les instructions nécessaires à résoudre votre problème ?
Vous dites que les images ne seront pas accessibles aux utilisateurs mais vous ne dites rien de ce qui vous donne à penser que ça pourrait marcher quand même.
Si c'est parce qu'elles sont une fois pour toutes dans le classeur sous forme de contrôle image de la boîte à outils contrôles, mon exemple aurait du vous suffire:
La propriétés Visible permet de faire apparaître ou disparaître l'image,
Les propriétés Top et Left de la positionner et Width et Height de la redimensionner.
À+
 

Bienfaiteur

XLDnaute Junior
Re : Apparition Image

Re !
Ok ca marche j'ai mis les 2 possibilitées dans le fichier soit en commentaire ou soit sous forme de clic ... Je pense que le commentaire est mieux mais j'ai quelques soucis .. voir le fichier ! Merci bien
 

Pièces jointes

  • test ima.xls
    38.5 KB · Affichages: 108

Bienfaiteur

XLDnaute Junior
Re : Apparition Image

Bonjour !
Sans vouloir dire de betises, je crois bien que le problème n'a pas été résolu ... J'ai essayé son fichier avec ce que tu préconisais et bien, je n'ai pas obtenu le résultat que je voulais ... Alors peut être que lui en chercher un autre.

Mais moi ce que je cherche et ce que je pense tout le monde aimerait savoir c'est comment "obtenir le résultat des affichages commentaires tout en restant dans un mode de survol".
Je m'explique la position des commentaires et la taille different que l'on soit dans affichage commentaires ou non. Le survol des cellules avec l'apparition des images est vraiment bien mais si on peut rien modifier, c'est vraiment frustrant ... Je pense que ce sera un des prochains bugs a réparé ...
 

Bienfaiteur

XLDnaute Junior
Re : Apparition Image

Bonsoir,
J'avais suggéré l'idée de mettre les images en commentaire mais cela rend le fichier énormement volumineux ... Faut il les compresser avant de les mettre sur le fichier ? si oui, connaissez vous un bon logiciel pour comprimer au maximum les images pour les mettre dans le fichier excel ? :p Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50