Archiver des exports Excel dans une base Access

Résolu
AstraLife Messages postés 99 Statut Membre -  
AstraLife Messages postés 99 Statut Membre -
bonjour,

Dans access 365, travail sur des exports.

Ce que je souhaite réaliser dans un premier temps,

Archiver dans une table access les exports se trouvant dans un répertoire de mon serveur.

Ma configuration :

J'ai une table "Liste_Fichiers_Exports" c'est la que je souhaite enregistrer les libellés des exports en alimentant 5 champs comme suit :

1 Champ => libelle de l'export
2 Champ => jj/mm/aaaa
3 Champ => N° Semaine
4 Champ => Année
5 Champ => Chemin du répertoire de l'export

J'ai une requête "R_Repertoire" ou se trouve le champ "Rep_Fichier" c'est la que j'indique le chemin des exports à prendre.

Les exports sont toujours libellés comme suit : 20170608_EXPORT.csv

J'ai la procédure vba qui fonctionne dans un fichier Excel et je souhaite adapter cette procédure dans une base de données Access
et la je suis coullé car je ne connais pas beaucoup le DAO, recordset...

Si quelqu'un pouvait m'aider, un grand merci.

Le code Excel, la seule chose qui change c'est le chemin du réperoire des exports qui est indiqué sur l'onglet "Paramètres" en cellule B11
et l'onglet "Listes_fichiers_Exports" ou sont stockés les libellés des exports.

Option Base 1
Sub liste_Fichiers_Exports()

Dim base_fichiers()

Set feuille = Worksheets("Paramètres")
rep = feuille.Range("b11")

fichier = Dir(rep)

i = 1
While fichier <> ""
ReDim Preserve base_fichiers(5, i)

If Right(fichier, 9) = "EXPORTS.csv" Then

base_fichiers(1, i) = fichier
ma_date = DateSerial(Left(fichier, 4), Mid(fichier, 5, 2), Mid(fichier, 7, 2))

base_fichiers(2, i) = Format(ma_date, "mm/dd/yyyy")
base_fichiers(3, i) = Format(ma_date, "ww", vbMonday, vbFirstFullWeek)

base_fichiers(5, i) = rep & fichier

'corrige 1ere semaine - de 4 jours
correction = False
If Month(ma_date) = 1 And Format(ma_date, "ww", vbMonday, vbFirstFourDays) > 50 Then
mon_annee_corrigee = Year(ma_date) - 1
correction = True
End If

'corrige 1ere semaine + de 4 jours
If Month(ma_date) = 12 And Format(ma_date, "ww", vbMonday, vbFirstFourDays) < 5 Then
mon_annee_corrigee = Year(ma_date) + 1
correction = True
End If

If correction = False Then mon_annee_corrigee = Year(ma_date)

base_fichiers(4, i) = mon_annee_corrigee

i = i + 1
End If

fichier = Dir

Wend

Set feuille = Worksheets("Liste_Fichiers_Exports")
feuille.Cells.Clear

feuille.Range("A1").Resize(UBound(base_fichiers, 2), UBound(base_fichiers, 1)) = Application.Transpose(base_fichiers)

End Sub

2 réponses

  1. AstraLife Messages postés 99 Statut Membre
     
    J'ai trouvé comment vider la table, :-(

    Sub Liste_Fichiers_Exports()

    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database

    Set oDb = CurrentDb
    Set oRst = oDb.TableDefs("Liste_Fichiers_Exports").OpenRecordset
    While Not oRst.EOF
    oRst.Delete
    oRst.MoveNext

    Wend

    End Sub
    0
  2. AstraLife Messages postés 99 Statut Membre
     
    J'y suis pas loin, je ne sais pas comment interpréter la fonction transpose d'Excel sur Access.

    Mon code

    Sub Liste_Rep_Export()

    Dim base_fichiers()

    Dim oDb As DAO.Database
    Dim oRst As DAO.Recordset
    Dim Rep_Motam As String

    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("R_Repertoire")

    Rep_Export = oRst![Rep_Export]

    fichier = Dir(Rep_Export)

    i = 1
    While fichier <> ""
    ReDim Preserve base_fichiers(5, i)

    If Right(fichier, 9) = "EXPORT.csv" Then

    base_fichiers(1, i) = fichier
    ma_date = DateSerial(Left(fichier, 4), Mid(fichier, 5, 2), Mid(fichier, 7, 2))

    base_fichiers(2, i) = Format(ma_date, "mm/dd/yyyy")
    base_fichiers(3, i) = Format(ma_date, "ww", vbMonday, vbFirstFullWeek)

    base_fichiers(5, i) = Rep_Export & fichier

    'corrige 1ere semaine - de 4 jours
    correction = False
    If Month(ma_date) = 1 And Format(ma_date, "ww", vbMonday, vbFirstFourDays) > 50 Then
    mon_annee_corrigee = Year(ma_date) - 1
    correction = True
    End If

    'corrige 1ere semaine + de 4 jours
    If Month(ma_date) = 12 And Format(ma_date, "ww", vbMonday, vbFirstFourDays) < 5 Then
    mon_annee_corrigee = Year(ma_date) + 1
    correction = True
    End If

    If correction = False Then mon_annee_corrigee = Year(ma_date)

    base_fichiers(4, i) = mon_annee_corrigee

    i = i + 1
    End If

    oRst.Close: Set oRst = Nothing
    oDb.Close: Set oDb = Nothing

    fichier = Dir

    Wend

    Set oDb = CurrentDb
    Set oRst = oDb.TableDefs("Liste_Fichiers_Exports").OpenRecordset

    While Not oRst.EOF
    oRst.Delete
    oRst.MoveNext

    Wend

    End Sub


    'Partie d'excel que je n'arrive pas à appliquer en vba Access
    feuille.Range("A1").Resize(UBound(base_fichiers, 2), UBound(base_fichiers, 1)) = Application.Transpose(base_fichiers)
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      ce sujet a-t-il un rapport avec celui-ci???
      https://forums.commentcamarche.net/forum/affich-35538747-probleme-fonction-application-transpose-sur-access

      Si oui, pourquoi ne pas avoir continuer ici plutôt que de créer une meme demande????
      0
      1. AstraLife Messages postés 99 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonjour, oui je pensait avoir mal rédigé ma demande, je ferme celui ci
        0