Liste et trier les PDF d'un dossier

Bonjour à toutes et à tous,

Je cherche à lister les fichiers PDF contenu dans un dossier.
Les PDF en question portent des noms bien précis.

Par exemple : CCN - 2021_03 - 1100.45CHF

CCN

2021

03110045CHF
Nom de la factureAnnée de la facture
Mois de la factureMontantDécimal montant
CHF pour Franc Suisse

J'ai un début de macro qui permet (pour le moment plus ou moins....) de lister et ajouter dans une colonne bien distincte chaque information.
J'ai des factures CCN et ADJ, qui doivent se situer sur la même ligne pour pouvoir être additionnées.
Également une colonne supplémentaire pour la preuve de paiement.
(les preuves de paiement pourrait s'appeler simplement ADJ - 2020_09 - PREUVE.pdf)

Le but à terme est de pouvoir lister ces factures (24 (12x2) par année) et de pouvoir faire un total des montants par année.

Sur l'exemple les factures CCN font toutes 636,75CHF, mais c'est pas toujours le cas.

Le résultat pourrait être celui ci :

image

Le dossier :

image

Les PDF (vides ) :

33pdf-vides.zip (1.35 Ko)

Un début de macro que j'avais trouvé sur internet, mais pour le moment pas concluant :

Sub Test()

    Dim Tbl() As String
    Dim I As Integer

    Tbl = EnumFichiers("C:\Users\Gordon\Desktop\test")

    'en colonne "A" et "B" de la feuille active si pas vide
    If Not (Not Tbl) Then

        For I = 1 To UBound(Tbl)

Cells(I, 1) = Left(Tbl(I), InStrRev(Tbl(I), ""))
Cells(I, 2) = Left(Tbl(I), InStrRev(Tbl(I), "-") - 2)
Cells(I, 4) = Mid(Tbl(I), InStrRev(Tbl(I), "_") + 1)
Cells(I, 3) = Mid(Tbl(I), InStrRev(Tbl(I), "-") + 4)

        Next I

    End If

End Sub

Function EnumFichiers(Chemin As String) As String()

    Dim TableauFichiers() As String
    Dim Fichier As String
    Dim I As Integer

    'complète le chemin le cas échéant
    If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"

    'récupère les fichiers
    Fichier = Dir(Chemin)

    'boucle sur les fichiers du dossier
    Do While (Len(Fichier) > 0)

        I = I + 1

        ReDim Preserve TableauFichiers(1 To I)

        TableauFichiers(I) = Fichier

        Fichier = Dir()

    Loop

    'retourne le tableau des noms de fichiers
    EnumFichiers = TableauFichiers()

End Function

Merci beaucoup si vous avez des pistes!

Bien cordialement,

Une excellente journée, merci encore.

Bonjour,

Voici un premier essai de code où on ne s'intéresse donc qu'à la période et au montant :

Sub Test()

dim t(1 to 1000, 1 to 2)

chemin = "C:\Users\Gordon\Desktop\test\" '<<<<ADAPTER CHEMIN EVENTUELLEMENT
fichier = Dir(chemin & "*CCN*.pdf")
Do While fichier <> ""
    n = n + 1
    tname = split(fichier, " - ") '<<<< separateur " - " !!!
    t(n, 1) = clng(dateserial(split(tname(1), "_")(0), split(tname(1), "_")(1), 1)) 'sous-separateur "_" !!!
    t(n, 2) = ccur(replace(tname(2), "CHF", ""))
    fichier = dir
Loop

if n > 0 then
    with sheets("nomfeuille") '<<<<<< ADAPTER NOM FEUILLE
        nvl = .cells(.rows.count, 1).end(xlup).row + 1
        .cells(nvl, 1).resize(n, 2).value = t '<<< à vérifier
    end with
end if

End sub

Il faudra peut-être mettre des mises en forme personnalisées sur la feuille pour obtenir les données au format désiré.

Cdlt,

Rechercher des sujets similaires à "liste trier pdf dossier"