Bonjour,
Alors je reviens sur ce que j'ai dis dans mon second post pour confirmer ce que j'ai dis dans mon premier, une fonction ne peut pas exécuter d'action mais elle ne peut que retourner une ou des valeurs.
Je n'avais pas visionné la vidéo jusqu'au bout mais on voit bien que c'est la formule utilisée dans l'appareil photo qui passe la valeur à l'argument demandé par l'objet (l'appareil photo lui même).
Un exemple sans l'appareil photo mais issu du code de mon premier post avec l'évènement Change de la feuille "Feuil2" :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FeBDD As Worksheet
Dim Fe2 As Worksheet
Dim S As Shape
Dim NomImg As String
If Target.Address(0, 0) <> "A2" Then Exit Sub
'adapter les noms des feuilles
Set FeBDD = Worksheets("BDD")
Set Fe2 = Worksheets("Feuil2")
NomImg = Application.WorksheetFunction.VLookup(Target.Value, FeBDD.Range("A1:D4"), 4, False)
If NomImg = "" Then Exit Sub
On Error Resume Next
Fe2.Shapes("Image").Delete
On Error GoTo 0
FeBDD.Shapes(NomImg).Copy
Fe2.Range("C2").PasteSpecial
Set S = Fe2.Shapes(1)
S.Name = "Image"
Fe2.Range("A2").Select
End Sub
Pour récupérer le nom de l'image, une RECHERCHEV (VLookup) et une liste de validation ayant la formule "=Clients" qui est le nom donné à ma plage de client en feuille "BDD" (ici pour le test A1:A4)
Je poste le classeur pour l'exemple.
Il serait possible de croire qu'une fonction pourrait exécuter une action si elle appelle un MsgBox car elle affiche la boite de message mais en fait, MsgBox est aussi une fonction particulière qui retourne une valeur, en voici la preuve :
Sub Test()
MsgBox QuelRetour
End Sub
Function QuelRetour()
QuelRetour = MsgBox("C'est un test pour savoir si une valeur est retournée !")
End Function