Ouvrir un document jpeg ou pdf a partir d'un bouton de commande userform

Bonjour à toutes et tous

Précédemment, j'ai sollicité une aide sur l'impression d'un document a partir d'un bouton de commande... apparemment difficile (voir impossible) à faire. Donc je remet la question sous une autre approche.

Est-il possible d'ouvrir un document (qu'il soit en Word, Excel, PDF, Jpeg ou autre) à partir d'un bouton de commande inséré dans un Userform de recherche sur Excel?

Comme je l'expliquais dans ma demande précédente, j'utilise un formulaire avec bouton de commande me permettant de rechercher et visualiser la présence d'un fichier situé en sous répertoire avec son chemin dans un textbox. A défaut de pouvoir l'imprimer directement (ce qui était ma première sollicitation), y a t'il un code VBA me permettant à partir d'un nouveau bouton de commande, d'ouvrir le dit fichier dans son logiciel d'origine, ce qui me permettrait ensuite de travailler dessus et de l'imprimer.

Merci par avance et bien cordialement.

Bonjour,

Je ne crois pas que ce soit impossible. En regardant sur internet, j'ai trouvé ce lien :

https://grenier.self-access.com/access/fichiers/ouvrir-ou-imprimer-un-fichier-quelconque-a-partir-de...

et celui-ci (laissé dans le code) à tester en priorité :

https://excel-malin.com/vba-astuces/imprimer-fichier-pdf-avec-vba-dans-excel/

Public Function ImprimerFichier(FichierAImprimer As String)
'par Excel-Malin.com ( https://excel-malin.com )
'https://excel-malin.com/vba-astuces/imprimer-fichier-pdf-avec-vba-dans-excel/
CreateObject("Shell.Application").Namespace(0).ParseName(FichierAImprimer).InvokeVerb ("Print")
End Function

Ce code prend le chemin du fichier à imprimer en paramètre, il faut juste que ce soit un fichier imprimable...

Il faut l'utiliser dans votre procédure ainsi :

sub test()

chemin = range("A1").value 'par exemple
ImprimerFichier chemin

end sub

Cdlt,

Bonjour 3GB

Merci pour votre réponse rapide...

je me doutais bien que cela était possible et à première vue, les codes que vous me faites parvenir semblent cohérents...

je me les mets de coté et je vois cela en détail dans le week-end prochain. je vous tiens au courant de la réussite (ou pas).

Dans tous les cas encore grand Remerciement. Bien cordialement.

D'accord, j'attends votre retour (vraiment) ! En fait j'utilise un code similaire mais plus compliqué (comme sur le premier lien). Si je pouvais alléger ça, j'en serais ravi !

Bon week-end alors !

Cdlt,

Bonjour

je reviens vers vous comme promis...

Les codes précédemment fournis ne fonctionnant pas et me renvoyant de nombreux messages d'erreurs, j'ai continué de chercher sur différents forums...

et j'ai trouvé une solution qui me satisfait pleinement.

Donc voici le code du bouton commande...

Private Sub CommandButton2_Click()
On Error GoTo OuvertureFichierErreur
Dim MonApplication As Object
Dim MonFichier As String
Set MonApplication = CreateObject("Shell.Application")

MonFichier = TextBox13.Value 'chemin d'acces du fichier demandé a adapter
MonApplication.Open (MonFichier)

Set MonApplication = Nothing
Exit Sub

OuvertureFichierErreur:
Set MonApplication = Nothing
MsgBox "Erreur lors de l'ouverture de fichier..."

End sub

et auparavant pour information, j'avais trouvé ce code pour l'ouverture de l'explorateur de fichiers

Private Sub CommandButton2_Click()

Dim Fichier
Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*") 'pour ouvrir l'explorateur
If Fichier <> False Then ActiveWorkbook.FollowHyperlink Fichier
End Sub

Bien cordialement et merci pour votre aide

Bonjour,

Merci du retour, c'est sympa ! Je viens d'essayer à mon tour à l'instant, sans succès, c'est dommage que ça ne marche pas...

Au cas où, puisque c'est apparemment le souhait initial, voici le code que j'utilise (je l'ai justement sous la main) pour imprimer en rafale :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private 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 ImprimerDossier()

Dim App As Long, i As Long
Dim Dossier$, Fichier$, Chemin$

Dossier = ActiveSheet.Range("Repertoire").Value 'obtenu avant via application.filedialog(msofiledialogfolderpicker) ! TERMINE par "\" !
App = FindWindow("XLMAIN", Application.Caption)

If Not MsgBox("Vous êtes sur le point d'imprimer tous les fichiers du dossier : " & Dossier & vbCrLf & vbCrLf & _
"Voulez-vous continuer ?", vbYesNoCancel + vbCritical, "Demande de confirmation") = vbYes Then Exit Sub

Fichier = Dir(Dossier & "*.*")
While Fichier <> ""
    Chemin = Dossier & Fichier
    ShellExecute App, "print", Chemin, "", "", 1
    Fichier = Dir
Wend

End Sub

Sur mon fichier, je sélectionne d'abord, à l'aide d'une boite de dialogue de sélection de dossiers, le répertoire dont je veux imprimer les fichiers. Ce répertoire se trouve alors dans une cellule que j'ai nommée "Répertoire"...

Ca marche très bien de mon côté.

Cdlt,

Merci pour votre retour d'info.

Finalement, je ne vais pas me prendre la tête puisque l'ouverture du fichier dans son logiciel d'origine me satisfait pleinement, d'autant plus que j'ai ensuite la possibilité de le modifier et de l'imprimer.

Donc pour moi, le problème est résolu

a une prochaine fois, sur une autre demande

cordialement

Rechercher des sujets similaires à "ouvrir document jpeg pdf partir bouton commande userform"