Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
861 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA EXCEL 2003]Lister les noms des dossiers d'un repertoire > listbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA EXCEL 2003]Lister les noms des dossiers d'un repertoire > listbox

n°1283120
sakuraba
Posté le 13-01-2006 à 16:47:51  profilanswer
 

Bonjour et bonne année à tous,
 
je cherche à lister les noms des dossiers du repertoire c:\temp et les afficher dans un listbox
 
merci d'avance  
 
j'ai un code qui devrait fonctionner mais je vois pas comment l adapter

Code :
  1. Sub Aff_Feuilles()
  2.      a = 0
  3.      For Each Ws In ActiveWorkbook.Worksheets
  4.          If Ws.Name <> "Total" Then
  5.               If Ws.Name <> "!!!Base!!!" Then
  6.                     ReDim Preserve ListeFeuil(a)
  7.                     ListeFeuil(a) = Ws.Name
  8.                     a = a + 1
  9.                Else
  10.                End If
  11.           Else
  12.           End If
  13.      Next
  14.      If a = 0 Then
  15.           ReDim Preserve ListeFeuil(0)
  16.           ListeFeuil(0) = "aucune feuille"
  17.     Else
  18.     End If
  19. End Sub

mood
Publicité
Posté le 13-01-2006 à 16:47:51  profilanswer
 

n°1283364
Epena
Posté le 13-01-2006 à 22:05:12  profilanswer
 

Bonjour,
 
En utilisant la fonction Dir, cela fonctionne en VBA de Word (extrait de l'aide):
 
Sub ChercherRépertoire()
Dim Liste() As String
Dim a As Integer
a = 0
MyPath = "c:\temp\"
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
             ' Ignore le répertoire courant et le répertoire contenant le répertoire courant
    If MyName <> "." And MyName <> ".." Then
            ' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
        If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
            ReDim Preserve Liste(a)
            Liste(a) = MyName
        End If  '
    End If
    MyName = Dir    ' Extrait l'entrée suivante
    Loop
ListBox.List = Liste
End Sub

 
Cordialement
 
Epéna

n°1283749
Epena
Posté le 14-01-2006 à 21:08:10  profilanswer
 

La même procédure fonctionne en VBA Excel

n°1284374
sakuraba
Posté le 16-01-2006 à 12:10:15  profilanswer
 

ok je te remercie je vais regarder

n°1284735
sakuraba
Posté le 16-01-2006 à 16:49:40  profilanswer
 

j'ai un petit souci :)
 
http://img17.imageshack.us/img17/5194/untitled2copy5ro.th.jpg

n°1285001
Epena
Posté le 16-01-2006 à 21:18:28  profilanswer
 

Bonjour,
Il faut déclarer la variable tableau. On peut faire comme ceci avec une procédure :
 

Code :
  1. Dim Liste() As String
  2. Private Sub CommandButton1_Click()
  3. Call ChercherRépertoire
  4. ListBoxClient.List = Liste
  5. End Sub
  6. Sub ChercherRépertoire()
  7. Dim a As Integer
  8. a = 0
  9. MyPath = "c:\temp\"
  10. MyName = Dir(MyPath, vbDirectory)
  11. Do While MyName <> ""
  12.              ' Ignore le répertoire courant et le répertoire contenant le répertoire courant
  13.     If MyName <> "." And MyName <> ".." Then
  14.             ' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
  15.         If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
  16.             ReDim Preserve Liste(a)
  17.             Liste(a) = MyName
  18.             a = a + 1
  19.         End If  '
  20.     End If
  21.     MyName = Dir    ' Extrait l'entrée suivante
  22.     Loop
  23. End Sub


 
Ou bien de cette façon avec une fonction qui renvoit un tableau (Type variant++++++)
 

Code :
  1. Private Sub CommandButton1_Click()
  2. Dim Liste As Variant
  3. Répertoire = "c:\temp\"
  4. Liste = ChercherRépertoire(Répertoire)
  5. ListBoxClient.List = Liste
  6. End Sub
  7. Function ChercherRépertoire(MyPath) As Variant    'La fonction renvoie un tableau
  8. Dim MaListe() As String
  9. Dim a As Integer
  10. a = 0
  11. MyName = Dir(MyPath, vbDirectory)
  12. Do While MyName <> ""
  13.              ' Ignore le répertoire courant et le répertoire contenant le répertoire courant
  14.     If MyName <> "." And MyName <> ".." Then
  15.             ' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
  16.         If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
  17.             ReDim Preserve MaListe(a)
  18.             MaListe(a) = MyName
  19.             a = a + 1
  20.         End If  '
  21.     End If
  22.     MyName = Dir    ' Extrait l'entrée suivante
  23.     Loop
  24. ChercherRépertoire = MaListe
  25. End Function


 
Cela devrait fonctionner
Cordialement
 
Epéna

n°1285744
sakuraba
Posté le 17-01-2006 à 17:09:47  profilanswer
 

j'ai toujours l erreur  
"impossible de definir la propriété list ?

n°1285984
Epena
Posté le 17-01-2006 à 21:11:48  profilanswer
 

Est-ce que le tableau liste a bien été déclaré  dans la zone déclarative pour la procédure?
Dim Liste() As String
 
ou pour la fonction
Private Sub CommandButton1_Click()
Dim Liste As Variant
 
Cela fonctionne en word et excel 97

n°1286320
sakuraba
Posté le 18-01-2006 à 10:12:13  profilanswer
 

c'est bon ça marche c est parce qu'il y avait pas de repertoire dans le c:\Temp  
 
merci beaucoup

n°1286325
sakuraba
Posté le 18-01-2006 à 10:17:58  profilanswer
 

voici mon travail corrigé :
 
'la fonction de recherche de nom de repertoire et stockage dans un array

Code :
  1. Function ChercherRépertoire(MyPath) As Variant    'La fonction renvoie un tableau
  2. Dim MaListe() As String
  3. Dim a As Integer
  4. a = 0
  5. MyName = Dir(MyPath, vbDirectory)
  6. Do While MyName <> ""
  7.              ' Ignore le répertoire courant et le répertoire contenant le répertoire courant
  8.     If MyName <> "." And MyName <> ".." Then
  9.             ' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
  10.         If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
  11.             ReDim Preserve MaListe(a)
  12.             MaListe(a) = MyName
  13.             a = a + 1
  14.         End If  '
  15.     End If
  16.     MyName = Dir    ' Extrait l'entrée suivante
  17.     Loop
  18.     If a = 0 Then
  19.           ReDim Preserve MaListe(0)
  20.           MaListe(0) = "-----Aucun Client-----"
  21.     Else
  22.     End If
  23.    
  24. ChercherRépertoire = MaListe
  25. End Function


 
la fonction pour rechercher un repertoire et le creer si besoin

Code :
  1. Function RépertoireExiste(Chemin As String) As Boolean
  2. On Error Resume Next
  3. RépertoireExiste = GetAttr(Chemin) And vbDirectory
  4.     If RépertoireExiste = True Then
  5.         Exit Function
  6.     Else
  7.         MkDir (Chemin)
  8.     End If
  9. End Function


 
enfin l'appel des fonctions pour remplir la listbox

Code :
  1. Private Sub Userform_initialize()
  2. Dim Liste As Variant
  3. Dim Répertoire As String
  4. Répertoire = "c:\Facturation\"
  5. Call RépertoireExiste("c:\Facturation\" )
  6. Liste = ChercherRépertoire(Répertoire)
  7. ListBoxClient.List = Liste
  8. End Sub


 
 
merci à vous pour le coup de pouce ( pied plutot ) @++

mood
Publicité
Posté le 18-01-2006 à 10:17:58  profilanswer
 

n°1443920
nayaphykit
Posté le 18-09-2006 à 10:10:18  profilanswer
 

bonjour,
 
je commence a utiliser vba/excel depuis peu et la j'ai un probleme que je n'arrive pas à resoudre.
g bien lu tout ce qui ce trouve au dessus et je crois faire la meme chose ke ce que vous avez écrit cependant ca ne fonctionne pas :s
 
voila mon probleme. je veux afficher dans un listbox (ListInfosBox) les données d'une feuille excel cette feuille étant ouverte en parallele. le nombre de colonne et de ligne de cette feuille est variable mais il est recuperé o moment de l'ouverture.
je recupere toutes les données de la feuille dans un tableau et apres je veux mettre le tableau dans la listbox et ca me met le msg d'erreur suivant : "erreur d'execution '380' : impossible de définir la propriété list. valeur de propriete non valide"
 
voila mon code :  

Code :
  1. Sub Liste(iChoix As Integer)
  2.     Dim i As Integer, j As Integer, iCountRow As Integer, iCountCol As Integer
  3.     Dim wbInfosBaseBook As Workbook
  4.     Dim wsFeuille As Worksheet
  5.     Dim tabValTemp() As Variant
  6.          
  7.     Set wbInfosBaseBook = Application.Workbooks.Open("U:\Data\Workspace\semaine2\Projet\FichiersUtiles\InfosBase.xls" )
  8.    
  9.     Set wsFeuille = wbInfosBaseBook.Worksheets(iChoix + 1)
  10.     iCountRow = wsFeuille.Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row 
  11.     For i = 1 To iCountRow + 1
  12.         For j = 1 To iCountCol
  13.            tabValTemp(i, j) = Range("A1" ).Offset(i, j)
  14.         Next j
  15.         j = 1
  16.     Next i
  17.                    
  18.    ListInfosBox.List = tabValTemp
  19. End Sub


 
merci d'avance pour vos réponse
 
bye
 
Naya


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA EXCEL 2003]Lister les noms des dossiers d'un repertoire > listbox

 

Sujets relatifs
excel : fonction pour effacer le contenu d'une celluleespace dans les noms
probléme MySql et visual.net 2003partir le code VBA d'un bouton d'un formulaire access
DLL Manquante Access VBA[VBA] Probleme pour sauvegarder un classeur
System.Text.Encoding en VBA Word : possible ?[VBA] ptite demande
macro excel et fichier normal.dot[VBA PPT2003] Fonction FileDialog(msoFileDialogSaveAs) choix du filter
Plus de sujets relatifs à : [VBA EXCEL 2003]Lister les noms des dossiers d'un repertoire > listbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR