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

titus91490 19 Messages postés lundi 26 mai 2008Date d'inscription 8 juin 2010 Dernière intervention - 7 juin 2010 à 07:50 - Dernière réponse : titus91490 19 Messages postés lundi 26 mai 2008Date d'inscription 8 juin 2010 Dernière intervention
- 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

Répondre au sujet
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 7 juin 2010 à 10:54
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 7 juin 2010 à 12:57
0
Utile
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
titus91490 19 Messages postés lundi 26 mai 2008Date d'inscription 8 juin 2010 Dernière intervention - 7 juin 2010 à 15:27
0
Utile
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
titus91490 19 Messages postés lundi 26 mai 2008Date d'inscription 8 juin 2010 Dernière intervention - 7 juin 2010 à 18:07
0
Utile
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
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 8 juin 2010 à 11:35
0
Utile
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
titus91490 19 Messages postés lundi 26 mai 2008Date d'inscription 8 juin 2010 Dernière intervention - 8 juin 2010 à 14:32
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.