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 :

Ouvrir une image en fonction d'une cellule via le VBA [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut Ouvrir une image en fonction d'une cellule via le VBA
    Bonjour à tous ;

    Depuis quelque jour je cherche un moyen d'ouvrir une image (comme si on cliquait dessus pour l'ouvrir) grâce a un bouton dans mon tableau excel.

    Afin d’être plus claire je vais donner un exemple:

    Dans ma cellule "A1" j'ai le nom (titre) de mon image (exemple "IMG1")
    Dans la cellule "B1" j'ai mon bouton (créé sous l'onglet développeur)
    Je souhaite tout simplement que quand je clique sur le fameux bouton qui comprend le code VBA qui a donc la particularité de lire la contenue de la cellule "A1" soit "IMG1", il m'ouvre comme par magie l'image qui a le même nom que la cellule "A1".
    Pour information il y aura 2845 boutons (une par ligne) le code doit donc être répétable (comme quand on étend une suite de cellules "C1"=1 puis on étend jusqu’à 10 par exemple)
    Pour plus d'explication je travaille sur la création d'un dossier excel qui ressent toutes les informations des poteaux incendie du secteur et je souhaite tout simplement que mes chefs (ayant le dossier sur serveur) puissent cliquer sur un bouton et voir le poteau incendie en images.
    Je vous passe le moment où je fais mes excuses pour le peux de compétence que je doit avoir par rapport à vous.

    toutefois je vous remercie énormément pour votre aide prochaine!

    je suis bien sur disponible pour vous fournir plus d'informations si besoin.

    Merci à vous tous.

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    bonjour
    je sais pas si c'est ce que tu cherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub insertimage()
    With Sheets("feuil1")
        Image = "C:\Users\DELL\Desktop\Personnel\" & .Cells(1, 1) & ".jpg"
        .Shapes.AddPicture Image, 0, 1, .Cells(3, 3).Left, .Cells(3, 3).Top, 70, 50
    End With
    End Sub
    voir cette discussion

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Bonjour BENNASR;

    Merci pour ta réponse super rapide! j'ai donc testé ton code mais après un débogage il m’affiche ce qu'il suit.

    Nom : code.PNG
Affichages : 2343
Taille : 9,4 Ko

    Je suis désolé mais je ne comprend pas le fonctionnement de celle-ci, pourrais tu m'expliquer comment l'appliquer a mon tableau? STP en espérant que ton code fonctionnera a merveille

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    supprimer cette ligne et voir ce que ça donne

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    bonjour
    je sais pas si c'est ce que tu cherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub insertimage()
    With Sheets("feuil1")
        Image = "C:\Users\DELL\Desktop\Personnel\" & .Cells(1, 1) & ".jpg"
        .Shapes.AddPicture Image, 0, 1, .Cells(3, 3).Left, .Cells(3, 3).Top, 70, 50
    End With
    End Sub
    voir cette discussion

    Rien ne ce passe

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    l’extension de ton image est .jpg ??
    le code fonctionne parfaitement chez moi !!

  7. #7
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Oui mon image est bien une .JPG mais quand je supprime la ligne (celle en jaune rien ne ce passe).

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    remettre la partie en jaune
    si ça fonctionne pas joindre un petit fichier test sans données confidentielles

  9. #9
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour wouairness, bonjour BENNASR

    J'ai récemment adapté un code pour incorporer de manière automatique une image en fonction de la valeur d'une cellule. Je détaille un peu le fonctionnement du code, cela pourra peut-être vous servir ? Dans mes exemples, je pars sur une plage de cellules de A1 à A5

    Dans un premier temps, j'ai défini la plage de cellules que mon image occuperait. Dans mon cas, elle est fixe. Mais dans ton cas, il est complètement possible de rendre cette position variable.

    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
     
    Dim FilePath as String
    Dim Filename as String
     
    FilePath = "C:\BanqueImages\"
     
     
    For i = 1 To 5
    Set PicRange = Cells(i,2)
    'Cette ligne te permet d'attribuer ton image à la cellule (i,2)'
     
    Filename = FilePath & Cells(i,1).Value & ".jpg"
    'Cette ligne attribue le chemin complet à la variable Filename'
    'Exemple : C:\BanqueImages\PoissonChat.jpg (en admettant que A1 = PoissonChat) '
     
    With PicRange 
    Set Pic = Shapes.AddPicture(Filename, msoFalse, msoTrue, .Left, .Top, -1, .RowsHeight)
    'Là tu fais joujou avec les paramètres'
    End With
    Next i
    J'espère que mon exemple est assez compréhensible ! Je fournis l'entièreté de mon code réalisé ci-dessous. Bonne chance ! (Je n'ai pas testé mon code exemple, il se peut qu'il y ait des erreurs, et qu'il ne soit pas optimal, je ne suis qu'un novice)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TestImage()
        Set PicRange = Worksheets("Résumé").Range("D1:G6")
        Worksheets("Résumé").Shapes(1).Delete
     
        Filepath = "Z:\PBR_LOG\ARIBA_2019\TestVBA\SitesImages\"
        Filename = Filepath & Worksheets("Résumé").Range("A2") & ".jpg"
     
        With PicRange
            Set Pic = Worksheets("Résumé").Shapes.AddPicture(Filename, msoFalse, msoTrue, .Left, .Top, -1, .Rows.Height)
        End With
    End Sub

  10. #10
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 078
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Nom : aa.png
Affichages : 2238
Taille : 11,4 Ko

  11. #11
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    J'ai essayer ton code mais malheureusement rien ne ce passe (autre qu'un code d'erreur "erreurs de compilation"), il est fort possible que j'ai mal utiliser ton code sur excel puisque je suis malheureusement pas aussi Ford que vous toute fois merci énormément pour votre aide. Ci-joint un screen du code.Nom : Screenshot_1.png
Affichages : 2245
Taille : 46,2 Ko

  12. #12
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour,

    Dans mon exemple, en colonne A tu dois avoir les valeurs textuelles de l'image recherchée. C'est cette valeur qui correspond au nom de l'image en question à aller chercher.
    En colonne B se situeront toutes tes images. C'est sur cette colonne que tu dois "Set" la Range de ton image.j

    Tu peux supprimer le contenu de la fonction TestImage et le remplacer par celui qui se situe au-dessus. Ta fonction TestImage sera ainsi donc adaptée à tes besoins.
    Rajoute ainsi "Worksheets("TR2") " devant " Cells(i,2)" et " Cells(i,1)"

    Par ailleurs, je te conseille de tester pas à pas (F8) et de vérifier que les valeurs prises par les variables sont cohérentes (voir existantes tout simplement). De cette façon, tu pourras nous communiquer plus aisément l'erreur qui est à l'origine du non fonctionnement du code.

  13. #13
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Rebonjour

    J'ai essayer ton premier code seule sans résultat il me mets l'erreur suivante : Nom : t2.png
Affichages : 2228
Taille : 11,9 Ko Nom : t4.png
Affichages : 2254
Taille : 28,1 Ko.

    Je vous joint un support visuel et quelle que information afin de bien cerné l'action que je souhaite faire.
    Désolé pour le temps de réponse assez long mais j'ai testé plusieurs configuration des codes (tous en échec).
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  14. #14
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Cette partie du code ne correspond pas à ta situation.
    Ce que toi tu souhaites, si j'ai bien compris, c'est d'avoir dans une colonne le nom des Images, et dans une autre les images associées.

    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
     
    Sub TestImage()
    Dim Filename as String, FilePath as String
    Dim i as Integer
    FilePath = D:\ .... 'Ton chemin à toi'
     
    For i = 1 to 5
    Set PicRange = Worksheets("TR1").Cells(i,2)
    'La Colonne B qui affichera tes images'
     
    Filename = FilePath & Cells(i,1) & ".jpg"
    'D:\... & "le nom de l'image dans ta première colonne à la ligne I"'
     
    With PicRange
    Set Pic = Worksheets("TR1").Shapes.AddPicture(Filename,msoFalse,msoTrue,.Left,.Top,-1,.RowsHeight)
    'Paramètres de l'image. Tu peux trouver tout ça sur internet pour plus de personnalisation'
    End With
     
    Next i
     
    End Sub
    Il faut bien évidemment que toutes tes images soient stockées dans le bon chemin ! Essaie d'y mettre 5 images appelées respectivement : Image1, Image2, Image3, Image4, Image5 - et de la cellule A1 à A5 tu écriras : Image1, Image2, Image3, Image4, Image5 - dans ta feuille TR1 bien évidemment.

  15. #15
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Merci pour ton aide et pour ton code il me mets plus d'erreur pour le chemin d’accès mais seulement pour les paramètres d'image que j'ai laissé comme t'elle. Pour le bon fonctionnement du code je doit les modifier ou je peux laisser comme tu les a mis? on est bien d'accord que ton code permet d’afficher un lien vers les images détecté et non afficher l'image directement sur excel?!Nom : t5.png
Affichages : 2278
Taille : 26,5 Ko
    Je sens qu'on va bientôt y arriver

  16. #16
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Ah ! Tu veux que ce soit le lien qui soit affiché, et non juste l'image ?

    Quelle est l'interaction que tu souhaites que l'utilisateur effectue. Les boutons doivent-ils déjà être existants ? L'utilisateur doit-il d'abord choisir quelle cellule de la première colonne il souhaite l'image ?

    Pour éviter de créer 2845 boutons, le mieux selon moi serait que tu demandes à l'utilisateur de saisir le titre de l'image (de ta colonne A) via une InputBox. En réponse à cette InputBox, l'image s'affichera automatiquement en ayant pris ta valeur de la colonne A comme variable.

    Désolé d'avoir mal compris au premier coup d'oeil ^^'

    Fais-moi savoir si cette solution pourrait plus te convenir. Je pense que c'est, de manière "logique", la plus adaptée afin d'éviter de créer 2844 boutons qui seront inutiles, puisque l'utilisateur ne cliquera que sur 1 seul.

  17. #17
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Je m'en excuse j'ai peux être pas été assez claire dons mon tout premier message, je reprend pour tout simplifier:

    Le document excel est créé dans le but de mon travail, il recense toute les informations les Poteaux incendie des communes sous ma juridiction (7 communes pour 1254 poteaux exactement).
    Chaque ligne du document excel est attitré pour un PI (Poteaux Incendie) comprenant la localisation, information primaire,teste de pression etc

    A la fin de la ligne il y a une partie "annexe" qui comprend un lien hypertexte afin d'afficher automatique sur MAP l’emplacement du PI.
    Dans cette partie "annexe" je souhaiterais mettre une colonne avec un lien qui affiche soit sur internet soit sur le pc directement l'image du poteaux incendie. je vous joint le fonctionnement de la localisation afin de vous montrer le visuel identique attendue.
    Ce document est a l'utilisation de mes supérieur (Encore pire que moi pour l'exploitation de excel donc le plus simplement que possible sera le mieux)

    Ps: Plusieurs colonne on été caché entre n'sdis et observation (pour raison de confidentialité)

    Nom : t7.png
Affichages : 2257
Taille : 34,4 Ko
    Images attachées Images attachées  

  18. #18
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Je vois les choses de la manière suivante :

    La macro liée au CommandButton1 te permettrait de...

    0) Supprimer l'image du dernier PI (si encore présente)
    1) Demander à l'utilisateur de saisir le code d'identification du PI souhaité. (InputBox)
    2) Une fois la demande validée, cela affichera automatiquement l'image qui est associée à ce code d'identification du PI. (En définissant le Range de l'affichage au niveau de la ligne de ce dernier, afin que tu puisses voir toutes les données du PI sans que l'image ne soit affichée à un emplacement autre). Tu pourras jouer avec les paramètres de l'image afin de définir les dimensions que tu souhaites, mais aussi de définir le point de départ grâce à au "Set PicRange".

    Est-ce que cela pourrait déjà + correspondre à ta demande ?

  19. #19
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Le bouton que tu vois sur l'image n'est aucunement lier a l'affichage des images. Cependant ci la création d'un "inputbox" est pour vous plus facile et plus simple d'utilisation que de juste cliquer sur un lien dans la Cellules "BM13" afin d'afficher l'image pourquoi pas. Sur ce point j'ai une petit question , est t'il possible de définir une liste quand le document demandera l'identification du PI?

  20. #20
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Une liste des 1254 poteaux ? Oui c'est possible. Mais je voudrais aussi savoir une chose :

    Y a-t-il une ou plusieurs variables spécifiques que tes supérieurs analysent afin de savoir quel poteau ils veulent voir ?

    C'est surtout que cette idée évite de créer 1254 liens vers des images. De mon point de vue, ça surchargerait le fichier, alors que d'ouvrir directement l'image via un formulaire en ouvre directement une unique.
    Ainsi, tu n'aurais pas 1253 liens qui resteront inutilisés. Je ne saurai te dire si c'est vraiment plus efficace, je n'ai pas encore cette "science" de l'optimisation. Mais d'un point de vue logique, il me semble que cela est plus efficace.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2007] Ouvrir un fichier a partir d une cellule excel sous VBA
    Par Fandeliza dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2017, 17h36
  2. [LibreOffice][Tableur] [Basic] Ecrire une fonction dans une cellule via une macro
    Par xr dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 01/10/2016, 16h09
  3. [XL-2010] Fonction Excel - Colorer une cellule via 2 paramètres
    Par lovebo dans le forum Excel
    Réponses: 1
    Dernier message: 13/01/2016, 15h29
  4. [XL-2010] Ecriture d'une fonction dans une cellule via VBA
    Par Seb-Office dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/11/2010, 17h39
  5. Ouvrir une form via une ComboBox
    Par Conficius dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/11/2005, 16h11

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