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

Signaler
Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011
-
Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011
-
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

Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011

tout simplement parce que l'indice d'un tableau en VBA commence à Zero.

Topic résolu
Merci à tous .

archiifk
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011

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
Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011

Merci Jack,
Je vais explorer tes propositions :-)

archiifk
Messages postés
22
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2011

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