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 :

gestion affichage image sous vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut gestion affichage image sous vba
    Bonjour, je voulais savoir s'il y avait une possiblité d'afficher plusieurs images en fonction du code vba sous un évènement.

    j'ai utilisé la méthode de monsieur excel qui marche très bien pour une image, mais je voudrais faire la même chose en utilisant l'évènement change mais pour plisieurs image en fonction de plusieurs nom. je connais la méthode sans vba mais cela alourdit le fichier lorsque nous avons 70 images. le fait d'insérer des images par une macro est aussi une solution plus lourde, l'évènement sous vba est parfait mais je ne sais pas faire la boucle...

    http://youtu.be/MzF_5DXhqbs


    merci infiniment pour votre aide.

    rico

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Ci-dessous un exemple de code permettant de changer une image du type Picture dans une feuille.
    - L'image est nommée "MonImage" (même méthode que celle exposé dans la vidéo pour nommer l'image).
    - Le chemin et le nom du fichier image se trouve en A1.

    Ce code peut être adapté pour charger plusieurs images sur l'évènement Worksheet_Change.

    exemple de sujet similaire : ici

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not (Intersect(Target, Range("A1")) Is Nothing) Then
            Call LoadPict(ActiveSheet, "MonImage", Target.Value)
        End If
    End Sub
     
    Private Function DoesPictExist(ws As Worksheet, PictName As String) As Boolean
        DoesPictExist = False
     
        Dim p As Object
        For Each p In ws.Pictures
            If p.Name = PictName Then
                DoesPictExist = True
                Exit For
            End If
        Next p
    End Function
     
    Private Sub LoadPict(ws As Worksheet, PictName As String, filename As String)
        Dim l As Integer, t As Integer, w As Integer, h As Integer
     
        If DoesPictExist(ws, PictName) Then
            With ws.Pictures(PictName)
                l = .Left
                t = .Top
                w = .Width
                h = .Height
                .Delete
            End With
     
           With ws.Pictures.Insert(filename)
               .Name = PictName
               .Left = l
               .Top = t
               .Width = w
               .Height = h
           End With
     
        End If
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut Merci mais pas trop compri
    Bonjour Merci beaucoup pour cette réponse aussi rapide.
    Par contre j'ai l'impression d'être perdu, je ne comprend pas trop le début (et je pense que c'est l'essentiel pour saisir votre code)
    En effet l'image est normé et elle présente en cellule A1 ?s'agit-il de la place du produit

    Voici le fichier excel et les images à l'intérieur.
    Comment inclure votre code suite à mon code, faut-il tout changer ?

    Sur le fichier ci-joint, je mets le code ci-desous, mais cela fonctionne que pour une cellule...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim NewPic As String
           If Target.Address = "$C$18" Then
           NewPic = "D:\....\Bureau\bbb\" & Range("$C$19").Value & ".png"
           Target.Comment.Shape.Fill.UserPicture NewPic
     
        End If
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Encore merci pour votre aide.
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip bbb.zip (361,0 Ko, 635 affichages)

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    J'étais partis sur une autre solution. (autre type de composant), car sous XLS2003, bien que la solution fonctionne, elle n'est pas très intuitive.

    Mais la méthode Comment.Shape.Fill.UserPicture fonctionne également.
    Elle permet d'éviter le code que j'avais ajouté autour de la fonction LoadPict.

    Du coup je ne vois pas ce que tu n'arrives pas à faire?

  5. #5
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut
    Merci.
    En fait ce que je n'arrive pas à faire (si tu regardes dans le fichier joint) c'est de le faire pour plusieurs images et plusieurs libéllés.
    Imagine que j'ai 300 images et que lorsque je change de catégories, les libéllés change et donc je veux que les images changent aussi.
    Dans le fichier joint, cela fonctionne que pour une image, mais ça ne fonctionne pas pour les 2 autres images, car je le dis que pour une cellule. J'ai essayer de copier le même code et de le faire pour plusieurs cellule, mais cela ne fonctionne pas.

    Concernant ta méthode, le problème c'est que je ne la comprends pas. De quoi je dois partir que veux-tu dire par ?
    - L'image est nommée "MonImage" (même méthode que celle exposé dans la vidéo pour nommer l'image). Si il y a plusieurs image à afficher comment je fonctionne ?
    - Le chemin et le nom du fichier image se trouve en A1. (ta méthode fonctionne en allant chercher sur une addresse (du genre D:/Mes Documents/...)
    Merci encore pour ton aide

    RicoEva

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Pour que les images du fichier changent lorsque le contenu de la ligne 18 change,
    remplace la fonction Worksheet_Change par celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Row = 18 Then
            Call Target.Comment.Shape.Fill.UserPicture(ActiveWorkbook.Path & "\" & Target.Offset(1).Value & ".png")
         End If
    End Sub
    P.S : Je considère que les images sont stockées dans le même dossier que le fichier excel. (sinon il faut remplacer ActiveWorkbook.Path, par le dossier contenant les images)

    Concernant ta méthode, le problème c'est que je ne la comprends pas. De quoi je dois partir que veux-tu dire par ?
    "Ma" méthode est basée sur l'insertion d'élément du type image directement dans les cellules.
    (donc je n'utilise passe pas par des commentaires).
    Mais si j'ai bien compris ton besoin, le code présenté ci-dessus devrait suffire.
    Et toute autre méthode ne ferait que compliquer les choses.

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

Discussions similaires

  1. probleme affichage image sous Firefox
    Par yorkknew dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/09/2008, 18h23
  2. affichage userform sous VBA
    Par jpenja dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/10/2007, 15h38
  3. Pb affichage image sous IE
    Par Kabanon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/09/2007, 13h55
  4. [XHTML] affichage image sous ff
    Par rejy_l'Édimestre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/09/2007, 17h49

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