Faire apparaitre une image externe et la faire disparaitre après par sélection d [Résolu]

Messages postés
19
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
8 juin 2010
- - Dernière réponse : titus91490
Messages postés
19
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
8 juin 2010
- 8 juin 2010 à 14:32
Bonjour à tous et toutes,

Deuxième post (je me suis fait jeter car pas dans le bon thème...)peut être pas au bon endroit mais j'essaye quand même....
Je voudrais dans excel faire apparaitre un objet toujours au même endroit (en l'occurrence une photo) à la sélection d'une cellule et surtout la faire disparaitre au bout de 2 à 3 secondes.
J'ai bien trouvé ce code, mais il empile les photos sans les supprimer donc mon fichier excel va prendre du volume très vite....de plus j'ai 50 photos comme cela alors existe t-il peut être une autre solution qui consisterait avec un menu déroulant de faire apparaitre la photo portant le même nom que le choix du menu déroulant....
Je travaille indifféremment sous Excel 2003 ou 2007
Mes fichiers sont systématiquement protéger par MdP car c'est pour des collègues et je ne souhaite pas qu'ils puissent toucher à tout....
Merrci d'avance de votre aide
Thierry

Private Sub Worksheet_SelectionChange
If Target.Address = "$Z$8" Then
Range("A1").Select
ActiveSheet.Pictures.Insert ("chemin\1.jpg")
End If
If Target.Address = "$Z$9" Then
Range("A1").Select
ActiveSheet.Pictures.Insert ("chemin\2.jpg")
End If
End Sub
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
3
Merci
Salut,

Dans le code de la feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Address
        Case "$Z$8"
            Call AjoutImage("chemin\1.jpg")
        Case "$Z$9"
            Call AjoutImage("chemin\2.jpg")
    End Select
End Sub


Dans un module :

Option Explicit

Sub AjoutImage(ByVal ImageName As String)
    Dim ObjetImage As Object
    
    With ActiveSheet
        'on commence par supprimer l'image existante
        If Not .Range("A1").Value = "" Then Call SupprimerImage
        .Range("A1").Select
        Set ObjetImage = .Pictures.Insert(ImageName)
        'on enregistre le nom de la nouvelle image en A1 ce qui permettra de l'effacer à la prochaine insertion d'image
        .Range("A1").Value = ObjetImage.Name
    End With
End Sub
Sub SupprimerImage()
    On Local Error Resume Next
    'on supprime l'image à partir de son nom enregistré en cellule A1
    ActiveSheet.Shapes(Range("A1").Value).Delete
End Sub


A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
0
Merci
Bonjour,

Ah trop fort ! J'avais pas vu que le post avait été posé une deuxième fois aujourd'hui...
Je viens d'en faire une réponse : http://www.vbfrance.com/forum/sujet-FAIRE-APPARAITRE-DISPARAITRE-OBJET-DANS-EXCEL-SELECTION-CELLULE_1444195.aspx

(titus91490, tu peux aussi contacter un administrateur pour demander le changement de rubrique...)

Amicalement,
Us.
Commenter la réponse de us_30
Messages postés
19
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
8 juin 2010
0
Merci
A bigfish_le vrai je dis simplement BRAVO ET MERCI MERCI cela parait tellement simple quand on sait mais moi qui ne sais rien dans ce domaine je te remercie car c'est exactement ce que je voulais du simple mais efficace...
J'avais un petit problème de protection mais j'ai réussi à le contourner.
Il ne me reste plus qu'à forcer la position de l'image ou je veux et ce sera vraiment génial....
Merci encore
Titus
Commenter la réponse de titus91490
Messages postés
19
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
8 juin 2010
0
Merci
Bon je dois être définitivement con. Impossible de trouver comment mettre cette image à une position bien précise par exemple calée sur la cellule Z1 à chaque fois il me la met à cheval sur la colonne B et à la ligne 4....impossible de trouver, j'ai essayer avec une macro en complément mais cela n'enregistre rien ...
J'ai bien sur chercher sur le Forum et sur Google et rien de concluant...
Alors si une bonne âme peut m'aider....merci d'avance
Thierry
Commenter la réponse de titus91490
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Salut,

l'idée est d'utiliser les proriétés Top et Left de la cellule de destination de l'image:


Sub AjoutImage(ByVal ImageName As String)
    Dim ObjetImage As Object, ImageDestination As Range
    
    Set ImageDestination = Range("Z1") ' c'est ici que la cellule de destination de l'image est definie
    Application.ScreenUpdating = False
    With ActiveSheet
        'on commence par supprimer l'image existante
        If Not ImageDestination.Value = "" Then Call SupprimerImage(ImageDestination)
        Set ObjetImage = .Pictures.Insert(ImageName)
        'on positionne l'image en fonction de la cellule de destination
        ObjetImage.Top = ImageDestination.Top
        ObjetImage.Left = ImageDestination.Left
        'on enregistre le nom de la nouvelle image en A1 ce qui permettra de l'effacer à la prochaine insertion d'image
        ImageDestination.Value = ObjetImage.Name
    End With
    Application.ScreenUpdating = True
End Sub
Sub SupprimerImage(ByRef ImageDestination As Range)
    On Local Error Resume Next
    'on supprime l'image à partir de son nom enregistré en cellule de destination
    ActiveSheet.Shapes(ImageDestination.Value).Delete
End Sub


Tu noteras que le nom de l'image est maintenant enregistré dans la cellule de destination ce qui te permettra si le besoin se presente, d'avoir plusieurs images remplaçable dans ton fichier.

A+
Commenter la réponse de bigfish_le vrai
Messages postés
19
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
8 juin 2010
0
Merci
Alors là je ni crois pas c'est exactement ce que je voulais donc chapeau bas l'artiste, je suis bluffé devant ça....c'est du code simple, efficace, expliqué, je dois dire que si tu n'es pas dans l'enseignement penses y car tu es doué pour cela.
Encore merci et j'ai une envie folle maintenant de me mettre au VBA mais il faudrait que je trouve un tutoriel bien fait avec de véritables petits objectifs à atteindre et une démarche comme tu le fais....

Merci merci
Thierry
Commenter la réponse de titus91490