XL 2010 gestion d'image dans un tableau dynamique

jluc.P01

XLDnaute Nouveau
Bonjour,
j'ai un fichier de base avec une liste de noms de fleurs, des caractéristiques, et une image.
J'ai un onglet avec un tableau dynamique sur des critères et j'aimerai récupérer l'image correspondante.
J'ai bien trouvé une méthode pour récupérer une image avec une formule sur une seule cellule mais par sur plusieurs lignes en fonction de la sélection de chaque ligne.

merci
 
Solution
Bonjour,

Pour installer la macro dans le classseur, fais un clic droit sur la feuille devant afficher les images et clique sur "Visualiser le code". Dans l'éditeur VB, colle le ode suivant :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim C As Range, I As Long, Ligne As Variant, Img As Object
  If Target.Address <> "$B$2" Then Exit Sub
  Application.ScreenUpdating = False
  For I = ActiveSheet.DrawingObjects.Count To 1 Step -1
    If UCase(ActiveSheet.DrawingObjects(I).Name) <> "LOGO" Then
      ActiveSheet.DrawingObjects(I).Delete
    End If
  Next I
  For Each C In Range("A7", Cells(Rows.Count, 1).End(xlUp))
    Application.EnableEvents = False
    With Sheets("Photo")
      For I = 1 To .DrawingObjects.Count...

danielco

XLDnaute Accro
Bonjour,

Pour installer la macro dans le classseur, fais un clic droit sur la feuille devant afficher les images et clique sur "Visualiser le code". Dans l'éditeur VB, colle le ode suivant :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim C As Range, I As Long, Ligne As Variant, Img As Object
  If Target.Address <> "$B$2" Then Exit Sub
  Application.ScreenUpdating = False
  For I = ActiveSheet.DrawingObjects.Count To 1 Step -1
    If UCase(ActiveSheet.DrawingObjects(I).Name) <> "LOGO" Then
      ActiveSheet.DrawingObjects(I).Delete
    End If
  Next I
  For Each C In Range("A7", Cells(Rows.Count, 1).End(xlUp))
    Application.EnableEvents = False
    With Sheets("Photo")
      For I = 1 To .DrawingObjects.Count
          Ligne = Application.Match(C.Value, .[A:A], 0)
          If IsNumeric(Ligne) Then
            If .DrawingObjects(I).TopLeftCell.Address = .Cells(Ligne, 2).Address Then
'              .DrawingObjects(I).TopLeftCell.Copy C.Offset(, 4)
              Set Img = .DrawingObjects(I)
              Img.Copy
              C.Offset(, 4).Select
              ActiveSheet.Paste
              Set Img = Selection
              Img.Top = C.Top + (C.Height - Img.Height) / 2
              Img.Left = C.Offset(, 4).Left + (C.Offset(, 4).Width - Img.Width) / 2
              Exit For
            End If
          End If
      Next I
    End With
    Application.EnableEvents = True
  Next C
  Application.ScreenUpdating = True
End Sub

La feuille contenant la base des photos doit s'appeler "Photo". Sinon, modifie la ligne :
Code:
With Sheets("Photo")

Sinon, je n'ai pas compris ce que tu voulais dire par " Si tu pouvais me faire la meme chose en cas de sélection d'une feuille. ".

Daniel
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260