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

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

6 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
7 juin 2010 à 10:54
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+
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
7 juin 2010 à 12:57
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.
0
titus91490 Messages postés 19 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 8 juin 2010
7 juin 2010 à 15:27
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
0
titus91490 Messages postés 19 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 8 juin 2010
7 juin 2010 à 18:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 juin 2010 à 11:35
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+
0
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
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
0
Rejoignez-nous