IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-Excel] Liste fichier de repertoire selon critere


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut [VBA-Excel] Liste fichier de repertoire selon critere
    Bonjour ,

    Mon projet : j'aimerais creer , dans un userform , une listbox qui se remplit grace a la selection d'un repertoire donné par une combobox . Je m'explique : Je choisis par l'intermediaire d'une combobox , un pays de destination . En dessous j'ai une listbox ( vide ) et a cote un bouton "Lister" . Dans le repertoire ou mon fichier excel est creer , j'ai creer un sous repertoire du même noms que le pays de destination dans lequels se situe plusieurs fichiers de type differents .

    Exemple : J'ai un fichier .doc dans le repertoire France . Lorsque je choisis France dans la combobox , j'aimerais que , lorsque je clique sur le bouton "Lister" , la listbox m'affiche tous les documents situé dans le repertoire France . J'espere etre assez clair .

    Mon probleme : Je sais pas comment faire ^^

    Je vous remercis de votre aide en esperant que ceci soit possible .
    Cordialement .

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Oui c'est possible, mais il faut que tu crée le Userform toi meme, et que tu écrive un peu quelquechose pour que l'on puisse t'aider a résoudre tes problèmes


    Déja pour commencer :

    - créé un formulaire avec une ComboBox (pour choisir) et une ListBox (pour afficher la liste des fichiers)
    - pour afficher dans la ListBox regarde dans l'aide en ligne du coté de la fonction Dir
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    http://ssweb.free.fr/lister.JPG

    Voila ce que j'ai déjà creer . Le bouton "Explorateur" fonctionne bien avec un code que j'ai trouve la n'est pas la question .

    En fait , dans la combobox , je prend des valeurs qui sont situés sur ma feuille excel . J'ai creer le bouton Lister mais je n'ai réellement aucune idée de comment lui signifier que je veux aller lister tous les fichiers du repertoire du nom de ma combobox . J'espere que j'arrive a me faire comprendre

    Merci de bien vouloir m'aider .

    Cordialement.

  4. #4
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Salut,

    voici une fonction qui liste les fichiers d'un répertoire, regarde bien les commentaires dans la seconde partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    '=================================================
    '           Fonction à ne pas toucher
    '=================================================
     
    Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
    '   GetFilesPathFromDirectory retourne -1 si aucun fichier trouvé
    '   sinon retourne la dimension du tableau, donc NB fichiers -1 (tableau commence à l'indice 0)
     
    '   init les résultats
        GetFilesPathFromDirectory = -1
        Erase aRet
        If RightB$(sDir, 2) <> "\" Then sDir = sDir & "\"
     
    '   formate le chemin
        Dim sFile As String, lIndex As Long
        sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
     
    '   redimentionne après vérif premier fichier
        If sFile <> vbNullString Then
            lIndex = 0
            ReDim aRet(lIndex)
            aRet(lIndex) = sDir & sFile
            sFile = Dir
     
    '       boucle sur tous les fichiers
            Do While sFile <> vbNullString
                lIndex = UBound(aRet) + 1
                ReDim Preserve aRet(lIndex)
                aRet(lIndex) = sDir & sFile
                sFile = Dir
            Loop
     
    '       retour
            GetFilesPathFromDirectory = lIndex
        End If
    End Function
     
     
     
    '=================================================
    '     Code à mettre dans ton bouton Lister
    '=================================================
     
    Private Sub Command1_Click()
        Dim aResultat() As String
        Dim lRet As Long
        Dim i As Long
     
    '                 Change ici la directory, tu auras des Select Case à faire
    '                 Selon le choix dans la ComboBox
        lRet = GetFilesPathFromDirectory("C:\Windows\", aResultat(), "*.*")
        If lRet <> -1 Then
            For i = 0 To lRet
                NomùDeTaListbox.AddItem aResultat(i)
            Next i
        End If
    End Sub
    @++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    Je te remercis beaucoup , ca marche .

    Mais je suis tellement nul que j'ai encore une ou deux questions ( deux en fait ^^ ) :

    1 - Comment j'ouvre le fichier selectioner dans la listbox avec un bouton "Ouvrir" ? :/

    2 - Comment ne faire apparaitre que le nom du fichier et pas toute son arborescence ( "C:/Mes documents/Blabla/document.txt" par exemple ne doit etre que "Document.txt" ) .

    Encore merci de ton aide et desole d'etre a ce point débutant lol .

    Cordialement.

  6. #6
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    re,

    t'inquiète pas, on débute tous un jour.

    Alors j'espère répondre à tes 2 demandes à la fois, par contre, je n'ai pas testé, tiens moi au courant s'il y a des bugs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    '=================================================
    '  Dans les déclarations (tout en haut du code)
    '=================================================
        Dim aResultat() As String
        Dim lRet        As Long
     
     
    '=================================================
    '     Code à mettre dans ton bouton Ouvrir
    '=================================================
     
    Private Sub BoutonOuvrir_Click()
     
    '                 Exemple avec le bloc-note et un fichier texte
    Shell "notepad" & Space(1) & aResultat(NomDeTaListbox.ListIndex), vbMaximizedFocus
    ' pense à remplacer le nom de la listbox ici ^^
     
    End Sub
     
    '=================================================
    '     Code à mettre dans ton bouton Lister
    '=================================================
     
    Private Sub BoutonLister_Click()
        Dim i As Long
     
    '           Change ici le nom de la listbox
        NomDeTaListbox.Clear
     
    '                 Change ici la directory, tu auras des Select Case à faire
    '                 Selon le choix dans la ComboBox
        lRet = GetFilesPathFromDirectory("C:\Windows\", aResultat(), "*.*")
        If lRet <> -1 Then
            For i = 0 To lRet
    '           Change ici le nom de la listbox
                NomDeTaListbox.AddItem GetFileNameFromPath(aResultat(i))
            Next i
        End If
    End Sub
     
     
     
    '=================================================
    '           Fonction à ne pas toucher
    '   et à placer parmis tes codes du UserForm
    '=================================================
     
    Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
    '   GetFilesPathFromDirectory retourne -1 si aucun fichier trouvé
    '   sinon retourne la dimension du tableau, donc NB fichiers -1 (tableau commence à l'indice 0)
     
    '   init les résultats
        GetFilesPathFromDirectory = -1
        Erase aRet
        If RightB$(sDir, 2) <> "\" Then sDir = sDir & "\"
     
    '   formate le chemin
        Dim sFile As String, lIndex As Long
        sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
     
    '   redimentionne après vérif premier fichier
        If sFile <> vbNullString Then
            lIndex = 0
            ReDim aRet(lIndex)
            aRet(lIndex) = sDir & sFile
            sFile = Dir
     
    '       boucle sur tous les fichiers
            Do While sFile <> vbNullString
                lIndex = UBound(aRet) + 1
                ReDim Preserve aRet(lIndex)
                aRet(lIndex) = sDir & sFile
                sFile = Dir
            Loop
     
    '       retour
            GetFilesPathFromDirectory = lIndex
        End If
    End Function
     
    Private Function GetFileNameFromPath(ByVal sPath As String)
        GetFileNameFromPath = Right$(sPath, Len(sPath) - InStrRev(sPath, "\"))
    End Function
    Bon courage,

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA/EXCEL/WORD parcourir sous repertoires
    Par jef35jef dans le forum VBA Word
    Réponses: 1
    Dernier message: 21/02/2007, 16h39
  2. [VBA-Excel] Ouverture fichier
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/08/2006, 16h28
  3. [VBA-EXCEL] Liste déroulante
    Par cd090580 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2006, 08h34
  4. [Débutant] VBA Excel : Liste déroulante
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/12/2005, 14h09
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo