VBA Alimenter listbox avec fichier d'un dossier selon conditions

Résolu/Fermé
Pirate12 - Modifié le 2 avril 2019 à 00:49
 Pirate12 - 2 avril 2019 à 12:35
Bonjour à tous,

Je me lance dans un projet plutot audacieux.. en tout cas pour quelqu'un avec mon niveau en VBA.

Mon idée de base:
Un dossier regroupe plusieurs fichiers à traiter (ce dossier accueillera de nouveau fichier avec le temps).
Via un tableau excel j'aimerais indiquer les fichiers "traité". Pour cela j'aimerais ouvrir une listbox qui affiche les fichiers du dossier.

Ce que j'obtiens avec le code:

Private Sub UserForm_Initialize()
repertoire = "C:\Users\Desktop\blabla"
nf = Dir(repertoire & "*.*") ' premier fichier
Do While nf <> ""
Me.ListBox1.AddItem nf
nf = Dir ' fichier suivant
Loop
End Sub


J'aurais besoin que la listbox n'affiche que les fichiers non-traité.. mon idée est de rentrer le nom du fichier en colonne B du tableau par exemple.

J'aurais donc besoin d'introduire dans le code, si le nom du fichier est trouvé dans la colonne B ne pas l'afficher.

J'espère avoir été assez clair et surtout vous remercie d'avance pour votre temps.

Cordialement.
A voir également:

1 réponse

f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
2 avril 2019 à 08:02
Bonjour,

Private Sub UserForm_Initialize()
    Dim Plage As Range, derlig As Long, Vnf As Long, nf As Variant

    repertoire = "C:\Users\Desktop\blabla\"
    nf = Dir(repertoire & "*.*") ' premier fichier
    
    With Worksheets("feuil1")           'nom de feuille a adapter
        derlig = .Range("B" & .Rows.Count).End(xlUp).Row        'derniere cellule non vide
        Set Plage = .Range("B1:B" & derlig)        ' definition Plage de cellules fichiers a traiter
    End With
    Do While nf <> ""
        Vnf = Application.CountIf(Plage, nf)        'Fichier est au mois une fois dans liste
        If Vnf > 0 Then
            Me.ListBox1.AddItem nf
        End If
        nf = Dir ' fichier suivant
    Loop
End Sub
0
Parfait merci beaucoup!!
J'ai juste modifié,
If Vnf < 1 Then


ça correspond mieux à mon besoin j'avais surement pas été assez claire.
Mais ça fonctionne tip top un grand merci !
0