Insertion de photos en VBA

Bonjour,

Voir le fichier joint. En changeant le prénom de la case L1, la photo correspondante apparaît. Dans le répertoire où se trouve ce fichier, il suffit d'avoir un répertoire IMG qui contient les photos sous forme "prénom.jpg".

2 problèmes à l'exécution:

1- l'image précédente ne disparaît pas lors du changement de prénom.

2- à la deuxième insertion de l'image d'un même prénom la photo grossit.

En attente de vos solutions !

Dadams51

36version-dl.xlsm (16.31 Ko)

Bonsoir,

Essaie ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim image As Object, rep$, fichier$
    If Target.Address = "$L$1" Then
        rep = ThisWorkbook.Path & "\IMG\"
        fichier = Target.Value & ".jpg"
        Application.ScreenUpdating = False
        On Error Resume Next
        Me.Shapes("img").Delete
        On Error GoTo 0
        Set image = Me.Pictures.Insert(rep & fichier)
        With image
            .Name = "img"
            .Left = Me.Range("K5").Left
            .Top = Me.Range("K5").Top
            .Height = 80
            .Width = 80
        End With
    End If
End Sub

NB- Il est souhaitable de déclarer ses variables et indenter son code... Dans un module d'objet il est préférable d'utiliser les éléments spécifique mis à disposition par VBA : Target, Me...

Supprime les images antérieures avant de lancer...

Cordialement.

Bonjour MFerrand,

Oui, j'ai bien conscience de "bricoler en VBA". Mais parfois j'arrive au résultat ce qui m'incite à continuer et à m'améliorer !

Au lancement : erreur à la ligne "Dim image As Object, rep$, fichier$" -> erreur de compilation : erreur de syntaxe

D'où cela peut-il venir ?

Merci

Dadams51

Bonjour,

Efface la ligne et réécris-la. Il n'y a pas d'erreur, mais il est déjà arrivé que la copie introduise des caractères parasites invisibles...

Cordialement.

Merci,

Effectivement ça venait de là. Toutes mes lignes collées étaient rouge...en les déplaçant ou réécrivant c'est devenu bon...On en apprend tous les jours en VBA ! Et bravo pour ce code si propre !

C'est résolu !

Pour mon info, vous faites des développements à titre professionnel en VBA ?

Dadams51

bonjour

avant insertion de l'image mettre :

ActiveSheet.Pictures.Delete

A+

Maurice

Archer, ton idée est jusdicieuse mais le code que j'ai proposé l'inclut, et sous gestion d'erreur pour prévoir le cas sans image à supprimer.

Cordialement.

Rechercher des sujets similaires à "insertion photos vba"