VBA Comment ouvrir un fichier que l'on a préalablement listé dans une listebox ?

Résolu
archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011 - 2 avril 2010 à 18:51
archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011 - 9 avril 2010 à 13:19
Bonjour,

je suis debutant en VBA

En partant sur source de econs j'ai réussi à lister les fichier d'un repertoire dans une listebox.
Maintenant je n'arrive pas à selectionner dans cette listbox, un item et le recuperer pour ouvrir le fichier concerné.

Quelqu'un peut il ml'aider ?

topic qui m'a servi de modèle :
http://www.vbfrance.com/forum/sujet-VBA-EXCEL-RECHERCHE-FICHIERS_649577.aspx#8

configuration Excel 2003 sous XP sp3

Merci d'avance
archiifk

5 réponses

archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011
9 avril 2010 à 13:19
tout simplement parce que l'indice d'un tableau en VBA commence à Zero.

Topic résolu
Merci à tous .

archiifk
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
2 avril 2010 à 19:01
Salut
Clique sur ta ListBox et appuie sur F1 : Tu auras des exemples.
Le texte actuellement cliqué est dans
ListBox1.List(ListBox1.ListIndex)

Ouvrir un fichier : Tout dépend du type de fichier
Fais une recherche "ouvrir fichier" parmi les codes du site ou mieux, sur le forum ou encore, fais une recherche de ShellExecute

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011
2 avril 2010 à 19:32
Precision sur ma question :
Il s'agit de passer à la procédure activée lors d'un click de souris dans la listbox le nombre d'item que contient la listbox. ci-joint le source avec la question à l'endrois ou je butte :

'Propriétés
'VBAProject(PERSO.XLS)\Feuilles\UserForm2
'Name = UserForm2
'
Private Sub UserForm_Initialize()
End Sub
Private Sub ListBox1_Click()
     Dim fnc As String
     Dbg = True
     Dim sTSRFolder As String
     
fnc = "ListBox1_Click() _ "
    For i = 0 To 9
    '--
    '-- comment remplacer la limite de la boucle For 9
    '-- par la valeur de nbl de la procédure CommandButton1_Click() ?
    '--
    If ListBox1.Selected(i) = True Then
        If Dbg Then
            MsgBox (fnc & ListBox1.List(i))
        End If
        Workbooks.Open Filename:=ListBox1.List(i)
    End If
    Next i
End Sub

Private Sub CommandButton1_Click()
'Propriétés caption = "Lister les fichiers"
     Dim fnc As String
     Dbg = False
     Dim sTSRFolder As String
     
fnc = "CommandButton1_Click() _ "
     
    sTSRFolder = "D:\a_PRIVE\toto"
    '-- recupère le nombre de lignes de la listbox --
    nbl = RechercheFichiers(sTSRFolder)
    If Dbg Then
        MsgBox (fnc & " recherche de fichier passée, nombre de lignes : " & nbl)
    End If
End Sub



rappel de la fonction appelée

Private Function RechercheFichiers(sFolder As String)
' auteur : econs
'   Cette procedure recherche tous les fichiers contenus dans un répertoire donné.
'   Elle les affiche dans une ListBox (lstFiles ).
     Dim fnc As String
     Dbg = False
     Dim sTSRFolder As String
     
fnc = "RechercheFichiers(" & sFolder & ") _ "

    Dim NomFichier As String
    Dim nbFiles As Long

    'lstFiles.Clear
    UserForm2.ListBox1.Clear 'ajout de UserForm2. sinon erreur 424 objet requis !!!
    
    With Application.FileSearch
        .NewSearch
        .LookIn = sFolder
        .SearchSubFolders = True
        .Filename = NomFichier
        .FileType = msoFileTypeAllFiles
        .MatchTextExactly = True
        If .Execute(msoSortByNone) > 0 Then
            For i = 1 To .FoundFiles.Count
                UserForm2.ListBox1.AddItem .FoundFiles(i)
                'lstFiles.AddItem .FoundFiles(i)
                If Dbg Then
                 MsgBox (fnc & .FoundFiles(i))
                End If
            Next i
        Else
            MsgBox "Aucun fichier n'a été trouvé."
        End If
    End With
    RechercheFichiers = i
End Function



archiifk
0
archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011
2 avril 2010 à 19:33
Merci Jack,
Je vais explorer tes propositions :-)

archiifk
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
archiifk Messages postés 22 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 septembre 2011
7 avril 2010 à 18:21
dans ce topic
http://www.vbfrance.com/forum/sujet-MOYENNE-COLONNE-LISTBOX_1421094.aspx

Let lTaille = lstListBox.ListCount - 1
For i = 0 to lTaille

cela devrait etre bon
pourquoi listcount - 1 ?

archiifk
0
Rejoignez-nous