A nouveau,
Quelle différence entre "Label1" et "AppListe"?
AppelListe est une forme (Shape) composée d'un carré et d'un triangle central inversé.
En cliquant sur celle-ci on active la macro ci-dessous. Elle se trouve dans le Module 1. Cela permet de rendre visible deux autres formes:
La forme AppPhoto qui est l'appareil photo Excel (nommée aussi caméra).
Sub AppelPhotos()
ActiveSheet.Shapes("AppPhoto").Visible = True
ActiveSheet.Shapes("Label1").Visible = True
End Sub
Par celui-ci on peut cibler une partie de la feuille Liste qui va de la cellule B2 à B5. Soit les 4 images présentes sur cette feuille, pour l'exemple.
Un contrôle Activex Label1 vient se placer par dessus la forme AppPhoto afin d'exploiter le clic souris sur une des images à choisir. Voir macro ci-dessous qui se trouve dans la feuille Liste.
Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Img1 05 à 55, Img2 63 à 113, Img3 123 à 173, Img4 185 à 235
Pos = WorksheetFunction.Match(Int(Y), Sheets("Liste").Range("C1:C5")) + 1
'Inscription du nom
Range("A" & Lig) = Sheets("Liste").Range("A" & Pos)
Range("C" & Lig).Select
ActiveSheet.Shapes("Connect").Select
Call Cache
End Sub
Le but de cette macro est de connaître la position (Pos) du clic gauche. Selon la colonne C (cellules C1 à C5). Voir le 1ier commentaire qui précise les images ciblées (Img1 à Img4). Ainsi on peut renseigner le type de l'animal dans une des cellules de la colonne A de la 2ième feuille.
Dans les deux dernières lignes de code -> Activesheet.shapes("Connect") on sélectionne une autre forme afin de libérer l'appareil photo et le label. Puis on les cache pour permettre ou non une nouveau choix (Appel de la liste par AppelListe).
Sub Cache()
'Invisibilité des formes
ActiveSheet.Shapes("AppPhoto").Visible = False
ActiveSheet.Shapes("Label1").Visible = False
End Sub
Enfin la macro ci-dessous sert à connaitre quelle ligne de la feuille 2 est sélectionnée afin de faire démarrer la liste à afficher sur la bonne ligne.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Lig = Target.Row
ActiveSheet.Shapes("AppPhoto").Visible = False
ActiveSheet.Shapes("Label1").Visible = False
'Cellules d'affichage de la liste
If Not Intersect(Target, Range("B2:B5")) Is Nothing Then
ActiveSheet.Shapes("AppListe").Left = Target.Offset(0, 1).Left
ActiveSheet.Shapes("AppListe").Top = Target.Offset(0, 1).Top + 55
ActiveSheet.Shapes("AppListe").Visible = True
'Position et affichage des formes
ActiveSheet.Shapes("AppPhoto").Top = Target.Top
ActiveSheet.Shapes("Label1").Top = Target.Top
End If
End Sub
Si tu rajoutes une photo et un type d'animal en feuille Liste. Par exemple en B6, il faudra modifier C1:C5 par C1:C6, B2:B5 par B2:B6. Puis indiquer en A6 et C6 de la feuille Liste respectivement le type (par exemple: Coq et la valeur 293).