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 :

Inserer une image dans une cellule [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Par défaut Inserer une image dans une cellule
    Bonjour à tous,
    Comme indiqué dans le titre, je cherche à inserer une image dans mes cellules. J'ai déjà effectué des recherches sur le forum, mais à chaque fois il s'agit d'inserer l'image dans la cellule active, ce qui ne correspond pas vraiment à mes besoins.
    Etant tout nouveau dans le VBA, j'ai décidé de rendre l'apprentissage amusant en créant un userform que je pourrais remplir avec des informations sur des "personnages", puis elles seront inserées dans un tableau Excel.
    Pour cette partie tout se passe bien mais j'aimerais également pouvoir, dans mon userform, en selectionnant un "OptionButton", inserer une image de "l'élement" de mon personnage.
    J'ai déjà un peu avancé, comme je vous le montre dans le code ci-dessous :

    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
    42
    43
    44
     
    Dim no_ligne As Integer, Element As String
     
        For Each bouton_Element In Selection.Controls
            If OptionButton1.Value Then
                Element = "1"
            ElseIf OptionButton2.Value Then
                Element = "2"
            ElseIf OptionButton3.Value Then
                Element = "3"
            ElseIf OptionButton4.Value Then
                Element = "4"
            ElseIf OptionButton5.Value Then
                Element = "5"
            End If
        Next
     
            no_ligne = Range("A65536").End(xlUp).Row + 1
     
            Cells(no_ligne, 1) = "ss"
     
            Dim Rouge As String
            Dim Violet As String
            Dim Vert As String
            Dim Orange As String
            Dim Bleu As String
     
            Rouge = "C:\Users\reisfl\Desktop\Images\Rouge.JPG"
            Violet = "C:\Users\reisfl\Desktop\Images\Violet.JPG"
            Vert = "C:\Users\reisfl\Desktop\Images\Vert.JPG"
            Orange = "C:\Users\reisfl\Desktop\Images\Orange.JPG"
            Bleu = "C:\Users\reisfl\Desktop\Images\Bleu.JPG"
     
            If Element = "1" Then
                Cells(no_ligne, 2) = LoadPicture([Rouge])
            ElseIf Element = "2" Then
                Cells(no_ligne, 2) = Violet
            ElseIf Element = "3" Then
                Cells(no_ligne, 2) = Vert
            ElseIf Element = "4" Then
                Cells(no_ligne, 2) = Orange
            ElseIf Element = "5" Then
                Cells(no_ligne, 2) = Bleu
            End If
    Nom : Userform.PNG
Affichages : 5987
Taille : 137,3 Ko

    Ayant commencé il y a peu le VBA, j'ai essayé de simplifier au maximum ma procédure. En fait, dans le frame1, en fonction du bouton selectionné, je décide d'associer un chiffre donné au String Element. Ensuite, en fonction du chiffre contenu dans Element, j'ai tenté plusieurs écritures afin d'inserer mon image dans la cellule ( Comme il s'agit d'un tableau à incrémentation, je ne désire pas mettre l'image dans la cellule active mais dans la première cellule de la ligne suivante à chaque incrémentation).
    Lorsque je demande de mettre dans la cellule "Rouge" par exemple, il m'insère non pas l'image mais le chemin d'accès, et lorsque j'écris "LoadPicture([Rouge])", c'est des chiffres qui s'affichent.

    J'espère que cette discussion ne constitue pas un doublon mais aucune des recherches que j'ai éffectuées ne m'ont permis de trouver une solution à mon problème.

    Je suis à votre disposition pour détailler plus si j'ai mal explicité !
    Merci d'avance !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ojanen Voir le message
    j'ai tenté plusieurs écritures afin d'inserer mon image dans la cellule ( Comme il s'agit d'un tableau à incrémentation, je ne désire pas mettre l'image dans la cellule active mais dans la première cellule de la ligne suivante à chaque incrémentation).
    Il suffit de mettre juste avant un Activate sur la cellule souhaitée et pour que la cellule active devienne celle que tu souhaites.
    https://msdn.microsoft.com/fr-fr/lib.../ff837085.aspx

    lorsque j'écris "LoadPicture([Rouge])", c'est des chiffres qui s'affichent.
    Pour insérer une image, l'enregistreur automatique de macro donne le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Pictures.Insert ("C:\Mon_Chemin\Mon_Image.JPG")

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Par défaut
    Bonjour,
    Tout d'abord merci beaucoup pour votre réponse rapide.
    J'ai appliqué votre solution à mon cas, et les résultats sont les suivants :
    - L'image souhaitée apparait effectivement, mais non pas dans mais sur la cellule
    - Un message d'erreur apparait sistématiquement : Erreur de temps d'execution 1004
    Erreur de définition de l'application ou de définition de l'objet

    Je continue à chercher d'où viennent ces erreurs, n'hesitez pas en cas de nouvelle suggestion

    Merci encore

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ojanen Voir le message
    - L'image souhaitée apparait effectivement, mais non pas dans mais sur la cellule
    A ma connaissance (du moins jusqu'à Excel 2013), il n'est pas possible de mettre une image DANS une cellule.

    - Un message d'erreur apparait sistématiquement : Erreur de temps d'execution 1004
    Erreur de définition de l'application ou de définition de l'objet
    Si tu ne montres pas le code que tu as exécuté et que tu ne dis pas sur quelle ligne se produit l'erreur, il est difficile d'identifier la cause de l'erreur.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    Citation Envoyé par Menhir Voir le message
    A ma connaissance (du moins jusqu'à Excel 2013), il n'est pas possible de mettre une image DANS une cellule.
    ce n'est toujours pas possible sur excel 2016.

    pourquoi est-ce si important que l'image soit dans la cellule ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Encore des problèmes d'incompréhension qui résultent d'expressions utilisant une terminologie erronée.

    "Dans", c'est "dedans", et donc le "contenu".
    Je plussoie donc mille fois la réponse de Menhir.
    Ne pas confondre un objet Range (ce qu'est une cellule) avec le rectangle qu'elle occupe sur l'écran sera un bon début de compréhension de ce que l'on traite. L'expression en deviendra alors plus naturelle et plus claire.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Par défaut
    Phil Free, il est important pour moi aue l'image soit dans la cellule seulement car je veux que les deux soient liés. Avec la solution proposée par Menhir, l'image apparait à l'endroit de la cellule, mais n'a aucun lien avec, je peux donc facilement la deplacer, et aussi modifier le contenu de ma cellule, ce qui n'est pas ce que je souhaite.
    Malheureusement je pense que vous avez raison et qu'il n'existe pas de solution à mon problème, j'en demande trop !

    unparia, je vous avoue ne pas comprendre votre réponse, je pense m'être bien exprimé quant à mon souhait de mettre mon image "Dans" ma cellule, c'est à dire en tant que contenu. En effet cela etant impossible, la meilleure solution que Menhir a su gentillement me proposer est de positionner mon image "sur" la cellule. Mon problème vient donc principalement de la méconnaissance des possibilités de l'outil VBA (Peut-être ai-je mal compris et c'est ce aue vous m'expliquez )

    Dans tous les cas je vous remercie tous les trois d'avoir pris le temps de me répondre et je me debrouillerai pour trouver un système D ergonomique sur mon fichier.
    Bonne journée !

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    un parcours des propriétés d'un objet Range t'apprendrait qu'aucune d'entre elles n'est une image/picture.
    Rien ne t'empêche par contre (à condition que cela te suffise, bien évidemment), d'y mettre un lien vers ton image. Mais ce ne sera alors qu'un lien et rien d'autre.

    Sinon (si tu veux avoir l'image directement visible), c'est à l'emplacement de la cellule (et non "dedans") qu'il t'est possible de la mettre

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    par 'dans', je pense que tu veux exprimer qu'elle n'en déborde pas.
    Regarde les propriétés Width et Height de la cellule et applique-les à ton image.
    La propriété PictureSizeMode de ton image va également t'intéresser.

    Attention à ne pas mettre trop d'images (ou des lourdes) dans ton fichier. Plus il y en a, plus c'est lent, jusqu'à ne plus pouvoir l'ouvrir...
    eric

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ojanen Voir le message
    Phil Free, il est important pour moi aue l'image soit dans la cellule seulement car je veux que les deux soient liés. Avec la solution proposée par Menhir, l'image apparait à l'endroit de la cellule, mais n'a aucun lien avec, je peux donc facilement la deplacer, et aussi modifier le contenu de ma cellule, ce qui n'est pas ce que je souhaite.
    Malheureusement, comme il t'a été expliqué par plusieurs participants, ce que tu souhaites n'est pas faisable dans les capacités actuelles d'Excel.

    A ma connaissance, la seule façon de mettre une image "dans" la cellule est d'utiliser une police de caractère contenant des symboles (comme Windings ou Webdings).
    Mais les possibilités sont limités (en particulier en terme de couleur) et le contenu de la cellule reste des caractères, même si à l'affichage ça ressemble à des dessins.
    En tout cas, ce n'est pas une méthode qui permet d'insérer un JPG, un GIF ou autre PNG.

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

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. inserer un lien vers une image dans une news
    Par jerrypeeren dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/07/2008, 22h51
  3. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  4. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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