Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 gestion d'image dans un tableau dynamique

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 !

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...
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
 
- 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
0
Affichages
230
Réponses
3
Affichages
205
  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
291
Réponses
11
Affichages
219
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…