Excel / Ovrire un fichier ou un dossier depuis une listBox

Résolu/Fermé
Rivet - 12 mars 2013 à 22:03
 Yoda - 18 mars 2013 à 13:28
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)

A voir également:

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?
1
Bonjour,

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+
0
C'est vraiment n'importe qu'elle type de ficher. Texte,image,dessin,présentation,tableur, . . .
0
Chaque type de fichier s'ouvre avec son application propre.
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 Select


Il y a peut-être une autre manière de faire mais je ne la connais pas.

A+.
0
Rivet.ch Messages postés 3 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 9 juin 2013
14 mars 2013 à 22:51
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
0
J'ai utilisé les cellules J2 et J3 pour inscire des hyperliens

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+
0
Rivet.ch Messages postés 3 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 9 juin 2013
17 mars 2013 à 22:56
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?
0
Bonjour,

Pour mettre le sujet en Résolu, je crois qu'il faut aller dans le premier message.
Bonne continuation.
0
keskisspasse Messages postés 5 Date d'inscription mercredi 13 mars 2013 Statut Membre Dernière intervention 13 mars 2013
13 mars 2013 à 05:54
Bonjour,
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
-2