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 | 03 | 1100 | 45 | CHF |
| Nom de la facture | Année de la facture | Mois de la facture | Montant | Dé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 :
Le dossier :
Les PDF (vides ) :
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 FunctionMerci 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 subIl faudra peut-être mettre des mises en forme personnalisées sur la feuille pour obtenir les données au format désiré.
Cdlt,