Faire apparaitre et disparaitre un objet dans Excel par la sélection d'une cellu

titus91490 Messages postés 19 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 8 juin 2010 - 6 juin 2010 à 21:08
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 7 juin 2010 à 12:30
Bonjour à tous et toutes,

Premier post 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\Aznar.jpg")
End If
If Target.Address = "$Z$9" Then
Range("A1").Select
ActiveSheet.Pictures.Insert ("chemin\Canton.jpg")
End If
End Sub

3 réponses

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 à 00:43
Bonsoir,

>>> "Premier post peut être pas au bon endroit mais j'essaye quand même...." >>>

Ah non, en plus tu es conscient qu'il faut bien choisir la rubrique !? et tu n'as pas vu dans le menu "VBA" ?!

De plus, le code que tu proposes ne fait qu'afficher une pictures (différentes) à chaque fois... Il faut de creuser la tête pour les supprimer ensuite... Puis tu verras le problème du temps... Pour ma part, je respecte un peu trop le règlement qui dit un truc du genre " on demande pas un programme tout fait mais une partie du code qui pose problème"...

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 à 07:12
Ola ! merci pour cette amicale réponse....
Comme je pensais l'avoir dit c'est mon premier post sur ce Forum et pour ce genre de besoin. Donc pas de panique s'il faut être informaticien pour pouvoir poser des questions très techniques et que les débutants qui aimeraient répondre à un petit besoin ne sont accepté il n'y a pas de problème...c'est le début de la semaine il fait beau et ce n'est que de l'informatique pas une science obscure comme on peut le faire croire il faut juste avoir les bonnes infos et dans l'envie de les transmettre donc je passe mon chemin mais perso je trouve ta réponse pas très agréable....et propose plutôt un autre endroit déjà ce serait positif au moins...!
Merci
Titus
0
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:30
Bonjour,

Le choix du bon thème "le bon endroit" dans le bandeau déroulant au moment de rédiger ton message :
Visual Basic 6 / Languages dérivés / VBA.

Mais avant comme dans tout forum on lit le règlement : Ici le règlement n'est pas un interminable blabla écrit en tout petit en gris très clair sur fond blanc... Le point 9. notamment.

"On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret."
- Dirigez-vous directement dans la recherche de sources pour les programmes complets. Inutile de demander du "code tout cuit", vous n'obtiendrez aucune réponse."

(http://www.vbfrance.com/reglement.aspx)

Bon, ceci dit, j'espère que tu ne prendra pas avec trop de rigueur ma précédente réaction. Je ne veux pas te décourager. Mais mieux vaut un respect des principes si tu veux profiter de l'aide des forums. Ensuite libre à toi de voir ailleurs... On y lit un peu près les mêmes doléances...

=

Ensuite, je t'ai dit de rechercher comment supprimer une image... En effet, il suffit de supprimer les images avant d'en afficher une autre... A partir de ce code de base tu pourras améliorer les choses...

Je te propose ceci, en code de base (donc à retravailler ensuite pour mieux l'adapter à tes besoins) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' Suppression des pictures
    Dim Image As Object
    For Each Image In Worksheets(1).Shapes 
        'ou Worksheets("nom").Shapes ou recherche le nom relatif à la feuille ou ce code se trouve
        Image.Delete
    Next

' Affichage de la picture selon la cellule
With ActiveSheet.Pictures
    Select Case Target.Address
        Case "$Z$8"
            .Insert ("H:\Documents and Settings\All Users\Documents\Mes images\Échantillons d'images\Collines.jpg")
        Case "$Z$9"
            .Insert ("H:\Documents and Settings\All Users\Documents\Mes images\Échantillons d'images\Nénuphars.jpg")
    End Select
End With

End Sub


=

A partir de là, adaptes ce code... et si tu as un problème précis (par exemple effacer l'image si on clique ailleurs que sur les cellules précises Z8 ou Z9) alors le forum est le bon endroit pour demander une aide et poser une question. Mais si tu veux qu'on te fasse le menu déroulant que tu souhaites sans proposer déjà ton codage que tu as fais pour ce dernier, alors, non, désolé, le forum a un règlement plus stricte... du moins jusqu'à maintenant... même si les contours acceptent beaucoup de tolérance...

Bon courage,
Au plaisir de te revoir,

Amicalement,
Us.
0
Rejoignez-nous