Importer les données d'un fichier vers une feuille

anasimo

XLDnaute Occasionnel
Bonjour

Chaque jour des journées comptables sous format excel sont mis quotidiennement dans un répertoire (via partage), j'ai accès à ce répertoire j'ouvre le fichier en question qui comporte 14 colonnes et plus de 1000 lignes je le copie vers ma feuille "BD_compta" et je l'importe via macro vers ma feuille "compta" (qui fait le tri et importe uniquement certaines colonnes selon les critères fixées dans la feuille "utilisateurs"..
NB: les fichiers du répertoire ont tous le nom sous forme ETAT_Compta_date de la journée (exemple: ETAT_Compta_20191020, ETAT_Compta_20191021....)

Y a t il un moyen d'importer directement les données une fois le fichier ETAT_Compta_date de la journée est ouvert sans passer par copier/coller vers la BD_compta.
l'adresse du répertoire: D:\AUDIT\Etat\Compta

la macro que j'utilise a été élaboré par le membre JOB (que je remercie énormément).

VB:
Sub Importer()
Dim col1%, col2%, a, ub%, util, d As Object, I&, tablo, resu(), j%, v As Variant, n&
col1 = 1: col2 = 6 'à adapter
a = Array(2, 3, 4, 6, 7, 8, 10, 11, 12) 'numéros des colonnes à copier
ub = UBound(a)
'---mémorise les utilisateurs---
util = Sheets("Utilisateurs").[A4].CurrentRegion.Resize(, 2)
Set d = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(util)
    d(UCase(util(I, 1)) & Chr(1) & util(I, 2)) = ""
Next I
'---tableau des résultats---
tablo = Sheets("BD_Compta").[A1].CurrentRegion.Resize(, a(ub))
ReDim resu(UBound(tablo), ub) 'base 0
For I = 2 To UBound(tablo)
    If d.exists(UCase(tablo(I, col1)) & Chr(1) & tablo(I, col2)) Then
        For j = 0 To ub
            v = tablo(I, a(j))
            If IsNumeric(v) Then resu(n, j) = CDbl(v) Else resu(n, j) = v
        Next j
        n = n + 1
    End If
Next I
'---restitution---
With Sheets("Compta")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    If n Then .Cells(.Rows.Count, 4).End(xlUp)(2).Resize(n, ub + 1) = resu
End With
'---RAZ---
With Sheets("BD_Compta")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    .[A1].CurrentRegion.Offset(1).Delete xlUp
End With
End Sub

Merci d'avance
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
312

Statistiques des forums

Discussions
312 092
Messages
2 085 222
Membres
102 826
dernier inscrit
ag amestan