XL 2016 Affichage d'une photo jpeg avec visionneus windows.

  • Initiateur de la discussion Initiateur de la discussion Dam1904
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dam1904

XLDnaute Nouveau
Bonjour à tous,

Système d'exploitation : Windows 7

J'aimerais trouver un code vba qui me permettrait d'afficher la photo d'un article à l'aide de la visionneuse windows et cela en appuyant sur un bouton de commande.
Pour ce faire, mon fichier Excel ainsi que les photos d'articles se trouvent dans le même répertoire, le fichier à un nombre variable de feuilles (suivant son utilisation), une feuille et la cellule "B2" de celle-ci se nomment comme l'article. Donc, la fonction doit pouvoir être dupliquée lors de l'ajout d'une nouvelle feuille.

Voici mon code :

Option Explicit
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub afficherphoto()
Dim Chemin As String
Dim NomImage As String
Dim Image As String
Chemin = "C:\Users\FID166\Documents\Prg HT\" & Range("B2")
NomImage = Range("B2")
Image = ".jpg"
'choix du dossier
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = Chemin
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Image JPEG", "*.jpg"
If .Show <> 0 Then
Image = .SelectedItems(1)
Else
Exit Sub
End If
End With
'puis ouvrir l'image avec la visionneuse
afficherImage_ApercuWindows Image
End Sub
Sub afficherImage_ApercuWindows(Img As String)
'puis ouvrir l'image sélectionnée par la macro en feuille 1, avec la visionneuse
ShellExecute 0, "open", "rundll32.exe", _
"C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & Img, 0, 3
End Sub

Ce code est inséré dans un module du "VBAProject et celui qui suit dans un module de la feuille 1

Private Sub photo()
Dim Chemin As String
Dim NomImage As String
Dim Image As String
Chemin = "C:\Users\FID166\Documents\Prg HT\" & Range("B2")
NomImage = Range("B2")
Image = ".jpg"
'choix du dossier
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = Chemin
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Image JPEG", "*.jpg"
If .Show <> 0 Then
Image = .SelectedItems(1)
Else
Exit Sub
End If
End With
'puis ouvrir l'image avec la visionneuse
afficherImage_ApercuWindows Image
End Sub
Private Sub Worksheet_Activate()
photo
End Sub


Ce code fonctionne, la boîte de dialogue s'ouvre et me propose bien le "nom de l'article" à ouvrir, je confirme par "OK" et la visionneuse ouvre la photo, cependant j'aimerais que la photo s'ouvre automatiquement sans devoir valider par "OK"


Merci pour votre aide !
 
Bonjour
Ce que tu décris là n'a rien à voir avec la visionneuse.
Seul est concerné le fonctionnement de la boîte de dialogue utilisée, fonctionnement qui est le même quel que soit le fichier choisi (il ne s'agit à ce stade que de choix d'un fichier)
Je crois comprendre que le fonctionnement en cause ne te plait pas. si tel est le cas, il t'est loisible d'effectuer ce choix de fichier à l'aide d'autre chose que cette boîte de dialogue (une listbox, par exemple ? )
j'appelle par ailleurs ton attention sur le fait que la nécessité de ce "OK" n'est plus là en réponse à un double-clic plutôt qu'un clic.
 
Dernière édition:
bonsoir le fil

version 1 api shell execute

VB:
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                              (ByVal hwnd As Long, ByVal lpOperation As String, _
                               ByVal lpFile As String, ByVal lpParameters As String, _
                               ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub methode_1_Api()
    Dim fichier As String
'Dialog   
 fichier = Application.GetOpenFilename("image Files (*.jpg;*.gif;*.png;*.bmp), *.jpg;*.gif;*.png;*.bmp", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
    
    ShellExecute 0, "open", "rundll32.exe", _
                 "C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & fichier, 0, 3

End Sub

version 2 wscript.shell(ouverture avec l'application par défaut mémorise dans registre

VB:
Sub methode_2_Ws_Shell()
    Dim fichier As String
    'Dialog
    fichier = Application.GetOpenFilename("image Files (*.jpg;*.gif;*.png;*.bmp), *.jpg;*.gif;*.png;*.bmp", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
    
    'ouverture dans l application par defaut(pas forcement la visioneuse)
    CreateObject("Wscript.Shell").Run "CMD.EXE /C " & Chr(34) & fichier & Chr(34), 0, True
End Sub

version 3 wscript.shell ouverture visionneuse w7

VB:
Sub methode_3_Ws_Shell()
    fichier = Application.GetOpenFilename("image Files (*.jpg;*.gif;*.png;*.bmp), *.jpg;*.gif;*.png;*.bmp", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
    
  'ouverture dans la visioneuse windows
     Cmd = "rundll32.exe %windir%\system32\shimgvw.dll,ImageView_Fullscreen"
   CreateObject("wscript.shell").Exec (Cmd & " " & fichier)
End Sub
 
re
en fouillant dans mes archives vba cette fois ci j'en ai trouvé une 4me avec shell vba
VB:
Sub methode_4__Shell()
Dim fichier As String

    'Dialog
    fichier = Application.GetOpenFilename("image Files (*.jpg;*.gif;*.png;*.bmp), *.jpg;*.gif;*.png;*.bmp", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
'ouverture dans la visioneuse windows

Shell "Rundll32.exe C:\Windows\System32\Shimgvw.dll,ImageView_Fullscreen " & fichier
End Sub

j'oubliais pour sélectionner sans ok double click sur le fichier pour les 4 méthodes
 
Dernière édition:
j'oubliais pour sélectionner sans ok double click sur le fichier pour les 4 méthodes

j'appelle par ailleurs ton attention sur le fait que la nécessité de ce "OK" n'est plus là en réponse à un double-clic plutôt qu'un clic.
et si on le disait 10 fois de plus ?
En rappelant au passage que c'était sur CE point (et aucun autre) , que Dam1004 souhaitait de l'aide.
Pour mémoire :
Ce code fonctionne, la boîte de dialogue s'ouvre et me propose bien le "nom de l'article" à ouvrir, je confirme par "OK" et la visionneuse ouvre la photo, cependant j'aimerais que la photo s'ouvre automatiquement sans devoir valider par "OK"
😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 VBA insert photos
Réponses
12
Affichages
768
Réponses
1
Affichages
448
Compte Supprimé 979
C
Réponses
3
Affichages
574
Retour