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...

Lolote83

XLDnaute Barbatruc
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
            .Pictures.Insert(xRépertoireImage & xFichierImage).Name = xNomGénériqueImage
            .Shapes(xNomGénériqueImage).Left = C.Left
            .Shapes(xNomGénériqueImage).Top = C.Top
            .Shapes(xNomGénériqueImage).LockAspectRatio = msoFalse
            .Shapes(xNomGénériqueImage).Height = C.Height
            .Shapes(xNomGénériqueImage).Width = C.Width
        End With
    End If
    Application.ScreenUpdating = True
End Sub
@+ Lolote83
 

Dranreb

XLDnaute Barbatruc
Que ce soit pour une image ActiveX ou de formulaire, essayez plutôt :
VB:
xFichierImage = Dir(xRépertoireImage & "\" & Range("J5").Value & ".*")
(xRépertoireImage ayant été renseigné correctement, bien entendu, ou non précisé nulle part mais préalablement mis comme CurDir par un SetCurrentDirectoryA déjà évoqué plus haut)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
VB:
ArgDir = xRépertoireImage & "\" & Range("J5").Value & ".*"
xFichierImage = Dir(ArgDir)
If xFicherImage = "" Then MsgBox "Il n'existe pas de fichier """ & ArgDir & """.", _
   vbCritical, LeNomDeLaProcédure): Exit Sub
 

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
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 112
dernier inscrit
cuq-laet