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 d'une table Access vers une table Excel


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 85
    Par défaut Export d'une table Access vers une table Excel
    Bonjour à tous,

    Je vais vous exposer mon problème.
    Voilà, j'ai une table access que j'arrive à exporter sur une table excel (alléluia).
    Maintenant ce que je souhaite obtenir c'est l'exportation par rapport à une condition sur un champ de ma table access. Je m'explique, sur ma table 'OPERATION' de access, j'ai un champ date, et je voudrais faire en sorte que l'exportation se fasse quand la date passe d'une année sur l'autre. (01/01/aaaa<=date<='31/12/aaaa').
    En fait, le but est d'archiver ma table dans un fichier excel selon la date donnée.

    Voici mon code :



    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Private Sub archive_Click() 
     
       Dim xlApp As Excel.Application 
        Dim xlSheet As Excel.Worksheet 
        Dim xlBook As Excel.Workbook 
        Dim I As Long, J As Long 
        Dim t0 As Long, t1 As Long 
     
        t0 = Timer 
        Dim rec As DAO.Recordset 
     
        Set rec = CurrentDb.OpenRecordset("OPERATION", dbOpenSnapshot) 
     
        'Initialisations 
        Set xlApp = CreateObject("Excel.Application") 
        Set xlBook = xlApp.Workbooks.Add 
     
        'Ajouter une feuille de calcul 
        Set xlSheet = xlBook.Worksheets.Add 
        xlSheet.Name = "Table" 
     
        ' le titre 
        '  écriture dans la cellule de ligne 1 et de colonne 1 
        xlSheet.Cells(1, 1) = "Export d'une table Access" 
     
     
        ' les entetes 
        '  .Fields(Index).Name renvoie le nom du champ 
        For J = 0 To rec.Fields.Count - 1 
            xlSheet.Cells(2, J + 1) = rec.Fields(J).Name 
            ' Nous appliquons des enrichissements de format aux cellules 
            With xlSheet.Cells(2, J + 1) 
                .Interior.ColorIndex = 15 
                .Interior.Pattern = xlSolid 
                .Borders(xlEdgeBottom).LineStyle = xlContinuous 
                .Borders(xlEdgeBottom).Weight = xlThin 
                .Borders(xlEdgeBottom).ColorIndex = xlAutomatic 
                .HorizontalAlignment = xlCenter 
            End With 
        Next J 
     
        ' recopie des données à partir de la ligne 3 
        I = 3 
        Do While Not rec.EOF 
            For J = 0 To rec.Fields.Count - 1 
                ' .Fields(Index).Type renvoie le type du champ 
                '   si c'est un Texte (dbText) nous insérons "'" pour 
                '   qu'il soit reconnu par Excel comme du Texte 
                If rec.Fields(J).Type = dbText Then 
                    xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J) 
                Else 
                    xlSheet.Cells(I, J + 1) = rec.Fields(J) 
                End If 
            Next J 
            I = I + 1 
            rec.MoveNext 
        Loop 
     
        ' code de fermeture et libération des objets 
        xlBook.SaveAs "F:\Feuille.xls" 
        xlApp.Quit 
        rec.Close 
        Set rec = Nothing 
        Set xlSheet = Nothing 
        Set xlBook = Nothing 
        Set xlApp = Nothing 
     
        t1 = Timer 
        Debug.Print I & " enregistrements", Format(t1 - t0, "0") & " secondes" 
     
    End Sub



    Voilà en vous remerciant d'avance, j'espère que vous pourrez me venir en aide.
    Merci,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut Peut-etre une solution...
    Bonjour,

    Ne cherchant pas a connaitre la condition exact a appliquer, je pense que tu pourrais essayer de remplacer l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rec = CurrentDb.OpenRecordset("OPERATION",dbOpenSnapshot)
    Par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rec = CurrentDb.OpenRecordset("SELECT * FROM OPERATION WHERE ... ;", dbOpenSnapshot)
    J'espere t'avoir aide un peu

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 85
    Par défaut
    Ah tiens je n'y avais pas pensé.
    merci bien

    je vais tester et je te dirais si c'est ce que je souhaite obtenir.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 85
    Par défaut
    c'est bon milles merci ça fonctionne bien

    par contre j'ai une autre question, je ne comprends pas pourquoi lorsque j'exporte d'acces via excel, les champs sont transformés ??? par exemple mais valeur oui non sont transformés en VRAI FAUX et mes dates sont transformées en valeur numérique, c'est assez bizarre...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut
    ...eternels problemes de compatibilite des formats...

    Tu dois formater les cellules Excel de la maniere souhaitee.
    Pour connaitre les instructions correctes, "joue" avec des "record macro" en Excel avant de reporter les instructions ainsi generees en VBA Access.

    Desole, je ne connais pas d'autre solution

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 85
    Par défaut
    ok ok pas de soucis, tu m'as déjà bien aidé.

    sinon dans ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set rec = CurrentDb.OpenRecordset("SELECT * FROM OPERATION WHERE ... ;", dbOpenSnapshot)
    l'inconvénient, c'est que je dois saisir au fur et a mesure les dates pour exporter.
    En supposant que c'est l'utilisateur qui va faire l'exportation, est-ce que c'est possible que je fasse en sorte de lui poser la question du genre :

    quelle année à extraire ? de ce fait l'utilisateur pourra faire son choix.

    merci d'avance

Discussions similaires

  1. [AC-2010] insert into pour envoyer les donnees d'une table Access vers une table Mysql
    Par jj4822 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 01/12/2014, 11h12
  2. copier une table access vers une feuille excel
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/06/2010, 18h25
  3. Import des tables d'une BDD access vers une autre table
    Par Darki dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/07/2007, 15h06
  4. Réponses: 8
    Dernier message: 21/04/2006, 16h50
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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