IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insérer image selon valeur cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut Insérer image selon valeur cellule
    Bonjour à tous,

    J'utilise le code qui suit pour insérer une image sur ma feuille suivant la valeur d'une cellule.

    Il fonctionne très bien lorsque la cellule N8 contient une liste déroulante : lors de la sélection de ma valeur dans cette liste, l'image se met à jour parfaitement.

    Mais je souhaite l'utiliser également avec une cellule N8 qui récupère une valeur de liste déroulante via un collage avec liaison. Et là ça ne fonctionne plus, lorsque la valeur change dans ma cellule N8 l'image ne se met pas à jour.

    Que dois-je modifier dans mon code pour que ça fonctionne également dans ce cas ?

    Merci par avance pour votre aide
    2lester


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("N8:N8")) Is Nothing Then
        ChDir ActiveWorkbook.Path
     
        If [N8] = 1 Then nomImage = "1erArrondissement.gif"
        If [N8] = 2 Then nomImage = "2eArrondissement.gif"
        If [N8] = 3 Then nomImage = "3eArrondissement.gif"
     
        On Error Resume Next
     
            ActiveSheet.Shapes("monimage").Delete
        Range("E16").Select
        monimage = ActiveSheet.Pictures.Insert(nomImage).Select
        Selection.Name = "monimage"
        Target.Select
     
    End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Et de cette façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Fe As Worksheet
        Dim S As Shape
        Dim nomImage As String
     
        If Target.Address(0, 0) = "N8" Then
     
            Set Fe = ActiveSheet
     
            On Error Resume Next
            Fe.Shapes("MonImage").Delete
     
            nomImage = Choose(Target.Value, "1erArrondissement.gif", "2eArrondissement.gif", "3eArrondissement.gif")
     
            Set S = Fe.Shapes.AddPicture(ThisWorkbook.Path & nomImage, _
                                         0, _
                                         -1, _
                                         Range("E16").Left, _
                                         Range("E16").Top, _
                                         200, _
                                         200)
     
            S.Name = "MonImage"
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Hervé je ne connaissais pas la fonction "choose", très intéressant pour remplacer une condition "iif" pour avoir plus de 2 choix possibles

    Merci

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut
    Bonjour Hervé,

    Tout d'abord je tiens à m'excuser de réagir aussi tard à ta réponse. Habituellement je reçois un mail m'indiquant que j'ai reçu une réponse et là que nenni...

    Dans la solution que tu proposes, qu'est-ce qui lie la valeur que prendra ma cellule à l'image associée ? En d'autres mots qu'est-ce qui fait que lorsque la valeur de ma cellule sera "1" par exemple, c'est l'image "1erArrondissement.gif" qui viendra s'afficher ?


    Merci encore pour ton aide (et bonne année)

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    La fonction CHOIX (Choose) retourne la valeur indiquée par la position ordinale du premier argument c'est à dire que si la valeur de la cellule (Target.Value) est égale à 1, la fonction retourne "1erArrondissement.gif" et l'affecte à la variable "nomImage" et ainsi de suite. Il y a erreur si le premier argument est inférieur à 1 et si il est supérieur aux nombre d'arguments qui peuvent être retournés. Si la valeur contient des décimales, elles sont ignorées.

    Hervé.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut
    Bonjour Hervé,

    C'est parfait ça fonctionne très bien.
    Merci !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Afficher une image selon la valeur d'une cellule
    Par rob1son76 dans le forum Conception
    Réponses: 0
    Dernier message: 24/04/2015, 13h57
  2. [XL-2007] Changement nom de Feuil selon valeur cellule
    Par ALEX80800 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/10/2013, 10h52
  3. [XL-2010] Masquer colonne selon valeur cellule sur autre onglet
    Par kit2412 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/05/2013, 17h11
  4. Addition selon valeur cellule adjacente
    Par Labinouse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2011, 09h27
  5. Réponses: 4
    Dernier message: 04/02/2011, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo