Bonjour,
Votre macro modifiée
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim nom$, sh As Shape
Application.ScreenUpdating = False
If Not Application.Intersect(Target, Range("A5,B5,c5,D5")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Sheets("Cadeaux").Shapes.Count = 0 Then Exit Sub
Cancel = True
nom = Target.Name.Name
With Sheets("Cadeaux")
.Activate
For Each sh In .Shapes
Next sh
If sh.Name Like "Image " & nom Then
sh.Visible = True
.Shapes.Range(Array("Image " & nom)).Select
Selection.ShapeRange.Left = .Range("B2").Left + 30
Else
sh.Visible = False
End If
End With
End If
End Sub
Chaque image est positionnée sur la cellule B2 de la feuille "Cadeaux".
Cdlt