Microsoft 365 VBA - Insertion image depuis un dossier extérieur, suivant une valeur d'une cellule à partir d'une liste déroulante.

Arthur EXL

XLDnaute Nouveau
Bonjour,

Après avoir consulté plusieurs forums et effectué quelques tests avec le peu de connaissances que j'ai en VBA, je me tourne vers vous

Mon Objectif : insérer une image depuis un dossier spécifique, dans une cellule spécifique, en fonction du texte dans une cellule.
Je m'explique : j'ai créer un fichier qui me permet de retrouver un équipement à partir du secteur dans lequel il se trouve (listes en cascade), le tout en VBA.

L'ordre de saisi est le suivant : Secteur > Equipement > Sous-Equipement
De plus, le code vient réécrire en dessous les sélections, ainsi que des informations en plus (pas encore présentes mais se sont les deux colonnes vides).
1622723736524.png

Je voudrais que si on sélectionne l'équipement "M21 Ventilateur" par exemple, ça me fasse apparaître l'image correspondante, dans une cellule spécifique, et que si par la suite on vient sélectionner une sous-équipement "Armoire Electrique" par exemple, ça remplace l'image du M21 Ventilateur par celle de l'armoire..

J'espère avoir été simple et claire dans mes explications, et que vous pourrez m'aider pour mon projet :)

Merci par avance de toute pistes ou réponses. Si besoin je peux partager le fichier pour une meilleure compréhension ...

Cordialement,

Arthur
 
Solution
Re bonjour,
Ca y est, de nouveau accès au site. Du coup, voici un nouveau code qui permet d'insérer une image et de l'agrandir/réduire au contenu H8:I22
Bien sur, le chemin et nom d'image sont à adapter à ton besoin
VB:
Sub Cmd_AfficheImage2_Cliquer()
    Application.ScreenUpdating = False
    On Error Resume Next
    xNomGénériqueImage = "MonImage"
    ActiveSheet.Shapes.Range(Array("" & xNomGénériqueImage & "")).Delete
    xRépertoireImage = "C:\Users\toto\Pictures\"             'A adapter
    xFichierImage = "fenetre2.jpg"                               'Nom d'image a afficher
    Nf = xRépertoireImage & "\" & xFichierImage
    If Dir(Nf) <> "" Then
        Set C = Range("H8").MergeArea
        With ActiveSheet...

Arthur EXL

XLDnaute Nouveau
Re
Alors j'ai essayé plusieurs méthodes à partir de ton lien, notamment avec le afficheImage.
Ca ne fonctionne pas. Je me demandais, étant donné que le dossier de stockage se trouvant sur un serveur, est-ce que ca peu poser problème ?
Début de l'adresse : \\sfrrms051.eu.xxx/xx....

Et est-ce qu'il y a des modifications à apporter dans les codes proposés dans le lien (hormis changer l'adresse du dossier :s) ?

Merci d'avance.
 

Etoto

XLDnaute Barbatruc
Re
Alors j'ai essayé plusieurs méthodes à partir de ton lien, notamment avec le afficheImage.
Ca ne fonctionne pas. Je me demandais, étant donné que le dossier de stockage se trouvant sur un serveur, est-ce que ca peu poser problème ?
Début de l'adresse : \\sfrrms051.eu.xxx/xx....

Et est-ce qu'il y a des modifications à apporter dans les codes proposés dans le lien (hormis changer l'adresse du dossier :s) ?

Merci d'avance.
Bonjour,

Je pense que le mieux c'est que les images soient stocké dans les SSD ou HDD de ton ordinateur.
 

Lolote83

XLDnaute Barbatruc
Bonsoir.
Il est vrai que le lien fourni donne énormément d'informations.
Tu dis
Alors j'ai essayé plusieurs méthodes à partir de ton lien, notamment avec le afficheImage.
Or si je regarde le AfficheImage, cela correspond à des images internes et non externes.
Je pense plutôt qu'il faudrait que tu cibles ceci (Toujours sur le lien fourni) en milieu de page ....
1622740714707.png

Si tu cliques sur les fichiers soulignés, tu auras les exemples a télécharger et voir celui qui correspond le plus à tes besoins.
Maintenant, sans fichier joint, il est difficile pour nous de faire plus et même si on avait ton fichier, on a pas les photos associées.
Essaye de voir de ce coté là.
@+ Lolote83
 

Arthur EXL

XLDnaute Nouveau
Bonsoir.
Il est vrai que le lien fourni donne énormément d'informations.
Tu dis

Or si je regarde le AfficheImage, cela correspond à des images internes et non externes.
Je pense plutôt qu'il faudrait que tu cibles ceci (Toujours sur le lien fourni) en milieu de page ....
Regarde la pièce jointe 1107429
Si tu cliques sur les fichiers soulignés, tu auras les exemples a télécharger et voir celui qui correspond le plus à tes besoins.
Maintenant, sans fichier joint, il est difficile pour nous de faire plus et même si on avait ton fichier, on a pas les photos associées.
Essaye de voir de ce coté là.
@+ Lolote8J
Bonjour @Lolote83 ,

Je pense qu'il y a un problème, c'est que moi ma liste n'est pas une liste que l'on créée avec l'option "validation des données", mais c'est une liste VBA.
Je met mon fichier en PJ pour bien comprendre.
Et lorsque j'écris le code, il ne se passe rien, je me demande si le code lit bien ce qu'il y a dans la cellule de la liste.
 

Pièces jointes

  • Base tests.xlsm
    59.9 KB · Affichages: 20
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour
Si le cadre contient un OLEObject Image, on devrait pouvoir l'affecter à sa propriété Picture
.Picture = LoadImage(CheminNomFic)
Remarque: pour mettre en CurDir un tel dossier, la séquence ChDrive/ChDir ne marche pas, il faut utiliser l'API SetCurrentDirectoryA
 

Lolote83

XLDnaute Barbatruc
Re bonjour ARTHUR EXL,

Voici ton fichier en retour avec un bouton "Afficher une image" et le code fourni au post#12 un peu modifié
Je ne suis pas rentré dans ton code, mais il faudra donc modifier dans le module 5 le nom du chemin relatif aux images que tu souhaites afficher ainsi que le nom de l'image.
Aujourd'hui, je n'arrive pas a retourner sur le site de Boisgontier (bugg) pour ajuster une image au contenu H8:I22
Dans tous les cas, si je met en dur pour le moment un chemin ainsi qu'une image, elle s'affiche.
Bon courage pour la suite
@+ Lolote83
 

Pièces jointes

  • Copie ARTHUR EXL - Insertion image externe.xlsm
    61.1 KB · Affichages: 33

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 821
dernier inscrit
hybroxis