IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Export des tables vers Excel [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut Export des tables vers Excel
    Bonjour le forum!
    Je suis une autodidacte d'Access et je ne me débrouille pas trop mal... sur les trucs que je sais faire! Par contre, quand je tape dans la nouveauté, ça se corse!

    J'ai créé une base de données qui permet de suivre au quotidien l'activité pro, avec édition de rapports d'activité, suivi des livrables en cours, taux de réalisation des objectifs et tout le bataclan...
    Cette base va être installée sur un certain nombre de postes dans ma boite et je voudrais créer une fonction qui sauvegarde les données des tables sous excel.
    Dans l'absolu, il faudrait d'abord créer dans "Mes documents" un répertoire qui s'appellerait "Sauvegarde activités" et à chaque sauvegarde créer un nouveau fichier excel dans ce répertoire qui s'appellerait "Sauvegarde du (date de la sauvegarde)". Ce fichier sauvegarderait une table par onglet, histoire qu'on ne cherche pas nos jeunes partout le jour où il faudra les retrouver... Idéalement, chaque onglet devra porter le nom de la table qu'il sauvegarde.

    Je suis sûre que pour des pros comme vous, ça prend 10 minutes (en comptant la pause café), mais pour moi, ça risque d'être beaucoup plus long que ça...

    Si vous avez un vieux code VBA qui traine quelque part dans un tiroir, et qui fait tout ça plus la vaisselle et le café, je suis intéressée...

  2. #2
    Membre confirmé Avatar de Bragon12
    Inscrit en
    Avril 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 142
    Par défaut
    Un début de solution dans la FAQ :
    http://access.developpez.com/faq/?page=Excel#PilotExcel

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Ci-joint une méthode proposée par LedZeppII et utilisée avec succès par un membre (elle gère la création d'onglets) http://www.developpez.net/forums/d92...ss-vers-excel/.

    Bonne continuation

  4. #4
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut
    Merci pour vos réponses!
    Je me suis débrouillée avec vos conseils et ce que j'ai pu glaner sur le net. C'est peut-être pas super esthétique pour les puristes, mais ça marche!

    Je crée mon dossier et mes fichiers de sauvegarde à l'intérieur de ce dossier avec les onglets qui portent le nom des tables, tout comme je voulais!

    Maintenant, j'ai un autre souci. Si on peut appeler ça un souci...
    Le nom de mes fichiers comporte la date de sauvegarde.
    Pour éviter d'offrir aux heureux utilisateurs de ma base une pollution de plusieurs méga à force de sauvegarder des trucs juste "au cas où", je voudrais limiter le nombre de fichiers à 5 et supprimer le plus ancien à chaque nouvelle sauvegarde.

    Vous avez un truc pour ça aussi?

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    Par ici, tu as les codes pour manipuler les fichiers dans un répertoire.
    1- Compter le nombre de fichier.
    2- Si Nbfichiers> 5 alors : a- Trouver le plus ancien par rapport à tes dates. Il faudrait utiliser les fonctions de manipulation de texte je pense ; b- Supprimer le fichier en question.
    3- Exécuter l'archivage.

    Bonne continuation (le temps d'un petit expresso)

  6. #6
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut
    Effectivement, le temps d'un expresso pour compter les fichiers!
    Oui, bon, j'exagère, j'ai pris mon temps pour déguster mon café, dirons-nous... Mais ça marche!
    Par contre, pour supprimer, ça va être un peu plus complexe.
    Est-ce que vos fabuleuses archives contiennent un truc qui permettrait de trier les dossiers par date de création (j'ai trouvé quelque chose qui ressemble à FileDateTime...) et de supprimer le premier?

  7. #7
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Bonjour,
    Voici quelquechose dont tu pourras t'inspirer pour travailler sur les dossiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function Tous_Les_Folders()
     
     
    Dim fso As Object
    Dim Folder As Object
    Dim Files As Object
    Dim subFolder As Object
    Dim subFolders As Object   'collection
    Dim Path_F As String
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    Path_F = "\\MonServeur\Groupe\Pro\"
     
    Set Folder = fso.getfolder(Path_F)
    Set Files = Folder.Files
    Set subFolders = Folder.subFolders
     
    For Each subFolder In subFolders
        Debug.Print subFolder.Name, subFolder.datelastmodified, , subFolder.DateCreated
    Next
     
    Set Files = Nothing
    Set Folder = Nothing
    Set fso = Nothing
     
     
    MsgBox ("fait")
    End Function
    Maintenant, si le but de tout ceci est de faire une sauvegarde, pourquoi ne pas faire une sauvegarde automatique de tout le serveur tous les soirs. Je ne sais pas ce qui se fait là où tu travailles mais en règle générale, cest une politique assez sage.

    Bonne journée,

  8. #8
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut
    Le serveur ne fait de sauvegarde que pour les applications "officielles" de la maison.
    Celle-ci sera une application "privée"... donc privée de sauvegarde!

    MErci pour ta réponse, je vais essayer de m'en inspirer!

  9. #9
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Ci-joint un code qui fonctionnerait si tes noms de fichiers de sauvegarde sont sous la forme :
    "Sauvegarde du 20130807.xls". A améliorer et optimiser bien sûr.
    Basé sur le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Compare Database
    Option Explicit
    Dim fso As FileSystemObject, dossier As Folder, sousdossier As Folder
    Dim fichier As File, FichierAncien As File
    Dim DateFichierAncien As Long
    Dim NomFichier As String, NomFichierAncien As String
    'Compter le nombre de fichier dans un répertoire
    Function nbfich(chemin As String, ParamArray termin() As Variant) As Long
    Dim fichier As String
    Dim extension As Variant
    Dim compteur As Long
    For Each extension In termin
       fichier = Dir(chemin & "\*." & extension)
       Do Until fichier = ""
       compteur = compteur + 1
       fichier = Dir
       Loop
    Next extension
    nbfich = compteur
    Debug.Print nbfich
    End Function
    'Scanner un répertoire - avec les sous répertoire
    Public Sub scan(ByVal dossier As Folder)
    DateFichierAncien = CLng(Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00"))
    Debug.Print DateFichierAncien
        For Each fichier In dossier.Files
            Debug.Print fichier
            NomFichier = fichier.Name
            Debug.Print CLng(Mid(NomFichier, Len(NomFichier) - 11, 8))
            If CLng(Mid(NomFichier, Len(NomFichier) - 11, 8)) < DateFichierAncien Then
                DateFichierAncien = CLng(Mid(NomFichier, Len(NomFichier) - 11, 8))
                NomFichierAncien = NomFichier
            End If
        Next
    Debug.Print NomFichierAncien
    'Supprimer le fichier
    Kill ("H:\.....\HIPPARQUE\" & NomFichierAncien)
    'Possibilité d'entrer le chemin du dossier en paramètre?????
     
    End Sub
    'Fonction de suppression du fichier le plus ancien s'il y en a plus de 5
    'Chemin indique le répertoire
    Function SupprimerFichierAncien(chemin As String)
    Set fso = New FileSystemObject
    Set dossier = fso.GetFolder(chemin)
    If nbfich(chemin, "xls") >= 5 Then
        scan dossier
        MsgBox "Un fichier a été supprimé"
    End If
    End Function
    @+

  10. #10
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut
    S'il n'y a que ça pour te faire plaisir, je change le nom de mes fichiers!
    J'essaie...

  11. #11
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut
    Alors...
    Après quelques heures de prise de tête, je me suis dit que ça ne servait à rien de conserver 12.000 fichiers de sauvegarde et qu'un seul suffirait!
    Donc, exit la date de sauvegarde dans le fichier, toute nouvelle sauvegarde écrase la précédente et les vaches sont bien gardées quand même!

    Merci de votre aide en tous cas, sinon je serais encore en train de chercher comment sauvegarder mes tables sur Excel!

    Dommage pour vous, ceci n'est pas un message d'adieu et j'ai encore plein de questions idiotes (ou du moins basiques) en réserve!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2011, 20h15
  2. [Tableaux] Exporter des données vers Excel
    Par SkyBack dans le forum Langage
    Réponses: 4
    Dernier message: 29/01/2007, 16h55
  3. exporter des données vers Excel
    Par vautour29 dans le forum Access
    Réponses: 10
    Dernier message: 12/12/2006, 17h15
  4. [En cours]Exporter des données vers Excel
    Par Muhad'hib dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/01/2006, 14h25
  5. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo