Excel / Ovrire un fichier ou un dossier depuis une listBox
Résolu
Rivet
-
Yoda -
Yoda -
Bonjour,
Je débute en programmation Excel.
J'ai fait un UserForm qui vas me rechercher les fichiers commençant par la même chose que la cellule sélectionnée, il les affiche dans une listBox en deux colonnes. La première contient le nom du fichier et la seconde, le chemin du dossier contenant le dit fichier.
Dans mon formulaire, il y à deux boutons: un qui dont ouvrir le fichier sélectionné dans la liste ; et l'autre qui devrais ouvrir le dossier du fichier.
J'ai bien le chemin (C:\truc\Chose.txt) mais après ??? Je n'arrive pas à trouver la fonction qu'il faut employer dans mon formulaire. (ligne de commande)
Je débute en programmation Excel.
J'ai fait un UserForm qui vas me rechercher les fichiers commençant par la même chose que la cellule sélectionnée, il les affiche dans une listBox en deux colonnes. La première contient le nom du fichier et la seconde, le chemin du dossier contenant le dit fichier.
Dans mon formulaire, il y à deux boutons: un qui dont ouvrir le fichier sélectionné dans la liste ; et l'autre qui devrais ouvrir le dossier du fichier.
J'ai bien le chemin (C:\truc\Chose.txt) mais après ??? Je n'arrive pas à trouver la fonction qu'il faut employer dans mon formulaire. (ligne de commande)
A voir également:
- Excel / Ovrire un fichier ou un dossier depuis une listBox
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Dossier appdata - Guide
- Fichier rar - Guide
3 réponses
J'ai essayé la fonction que tu propose, mais elle ouvre tous les documents dans une fenêtre Excel. Hors moi j'aimerais ouvrir les documents comme le fait un lien hypertexte.
PS: comment je peut joindre un document? suis-je obliger d'être membre du forum pour le faire?
PS: comment je peut joindre un document? suis-je obliger d'être membre du forum pour le faire?
On progresse, mais ça vas être compliquer de le faire pour toutes les extensions.
vous devriez pouvoir télécharger le fichier teste que j'ai fait ici :
https://www.cjoint.com/c/CCowQIenm2v
vous devriez pouvoir télécharger le fichier teste que j'ai fait ici :
https://www.cjoint.com/c/CCowQIenm2v
J'ai utilisé les cellules J2 et J3 pour inscire des hyperliens
Dans le code de UserForm2, remplacer ces prodédures:
j'espère que c'est ce que tu cherchais à faire
A+
Dans le code de UserForm2, remplacer ces prodédures:
Private Sub CB_Fermer_Click()
Range("J2:J3").Delete
Unload Me
End Sub
Private Sub CB_OpenDoc_Click()
Range("J3").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End Sub
Private Sub CB_OpenDos_Click()
Range("J2").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End Sub
Private Sub ListBox1_Change()
Sheets("Liste_Dossier").Range("F2") = Me.ListBox1.Column(1) & "\"
Sheets("Liste_Dossier").Range("F4") = Me.ListBox1.Column(1) & "\" & Me.ListBox1.Value
Range("J2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
Me.ListBox1.Column(1), TextToDisplay:= _
Me.ListBox1.Column(1)
Range("J3").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
Me.ListBox1.Column(1) & Me.ListBox1.Value, TextToDisplay:= _
Me.ListBox1.Column(1) & Me.ListBox1.Value
'Run (Sheets("Liste_Dossier").Range("F3"))
End Sub
Private Sub UserForm_Initialize()
Range("J2:J3").Delete
'-Rechercher les données
Run ("Rechercher")
'-------------
'-Ajouter les données à la liste
Run ("AjoutRecherche")
'---------
End Sub
j'espère que c'est ce que tu cherchais à faire
A+
Tip-top, ça fonctionne aussi bien que je l' espérais.
J'ai juste modifier tu fonction Delete par Clear, car delete supprime les cellules. Ce qui décales les colonnes suivantes.
# Range("J2:J3").Delete# ==>> # Range("J2:J3").Clear#
J'ai aussi put récupérer la fonction pour afficher directement les lien-hypertextes sur la feuille Dossier.
Je vous met la version deux là : https://www.cjoint.com/c/CCrwS5Hl7jA
Merci et A+
PS: Comment afficher le [Résolue] dans le titre?
J'ai juste modifier tu fonction Delete par Clear, car delete supprime les cellules. Ce qui décales les colonnes suivantes.
# Range("J2:J3").Delete# ==>> # Range("J2:J3").Clear#
J'ai aussi put récupérer la fonction pour afficher directement les lien-hypertextes sur la feuille Dossier.
Je vous met la version deux là : https://www.cjoint.com/c/CCrwS5Hl7jA
Merci et A+
PS: Comment afficher le [Résolue] dans le titre?
Bonjour,
Alors si c'est la fonction Open qui t'interesse la voici :
C'est la complete, dans ton cas de figure il filename = listbox (ou ya le chemin)
et copy si tu veux que cela soit ouvert copies , il y a des lignes qui peuvent ne pas tinteresser (mais je n'ai pas ton fichier donc je sais pas )
Exemple dans un feuille appellé "sheet1"
Cordialement
Alors si c'est la fonction Open qui t'interesse la voici :
Sub ImportWorksheet()
' This macro will import a file into this workbook
Sheets("Sheet1").Select
PathName = Range("D3").Value
Filename = Range("D4").Value
TabName = Range("D5").Value
ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=PathName & Filename
ActiveSheet.Name = TabName
Sheets(TabName).Copy After:=Workbooks(ControlFile).Sheets(1)
ActiveWorkbook.Close SaveChanges:=False
End Sub
C'est la complete, dans ton cas de figure il filename = listbox (ou ya le chemin)
et copy si tu veux que cela soit ouvert copies , il y a des lignes qui peuvent ne pas tinteresser (mais je n'ai pas ton fichier donc je sais pas )
Exemple dans un feuille appellé "sheet1"
Cordialement
Si c'est un fichier texte (.txt) que tu veux ouvrir:
Dim ProcID
ProcID=Shell("C:\Windows\system32\notepad.exe" & " " & "C:\truc\Chose.txt", 1)
A+
Donc tu dois choisir l'application et lui passer en parametre le fichier à ouvrir.
Concrètement, tu récupères le type de fichier en regardant son extension, en général c'est les trois derniers caractères du nom (mais pas toujours), et suivant le cas tu lances le programme qui va avec. Exemple:
Dim Ext As String Dim ProcID 'En admettant que tes fichiers ont tous une extension à 3 caractères Ext = UCase(Right(NomDuFichier, 3)) Select Case Ext Case "TXT" ProcID = Shell("C:\Windows\system32\notepad.exe" & " " & NomDuFichier, 1) Case "DOC" ProcID = Shell("C:\...............\WinWord.exe" & " " & NomDuFichier, 1) Case "PDF" ProcID = Shell("C:\...............\AcroRd32.exe" & " " & NomDuFichier, 1) Case Else MsgBox ("Type de fichier inconnu") End SelectIl y a peut-être une autre manière de faire mais je ne la connais pas.
A+.