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 :

Access to Excel


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut Access to Excel
    Bonjour,

    j'ai fait une application sur Access et je veut ajouter un bouton pour exporté les tableaux Access en Excel. j'ai ecrit un code VB mais il prend que la premiere ligne et moi je veut toute le tableau

    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
     
    Private Sub BDCEnvoiExcel_Click()
    Dim TableClient As Recordset
    Set TableClient = CurrentDb.OpenRecordset("Internal", dbOpenDynaset)
     
    Dim MonExcel As Object
    Set MonExcel = New Excel.Application
    MonExcel.Workbooks.Add
    MonExcel.ActiveWorkbook.ActiveSheet.Range("A1").Value = "Department_Unit :"
    MonExcel.ActiveWorkbook.ActiveSheet.Range("B1").Value = "Label :"
    MonExcel.ActiveWorkbook.ActiveSheet.Range("C1").Value = "Only :"
     
    MonExcel.ActiveWorkbook.ActiveSheet.Range("A1").Value = TableClient("Department_Unit")
    MonExcel.ActiveWorkbook.ActiveSheet.Range("B1").Value = TableClient("Label")
    MonExcel.ActiveWorkbook.ActiveSheet.Range("C1").Value = TableClient("Only")
     
    On Error Resume Next
    Kill "D:\resultat.xls"
    On Error GoTo 0
    MonExcel.ActiveWorkbook.SaveAs "D:\resultat.xls"
    MonExcel.ActiveWorkbook.Close
    Set MonExcel = Nothing
    TableClient.Close
    Set TableClient = Nothing
    End Sub
    est ce qu'il faut ajouté un boucle for et si oui comment?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut
    oui il faut une boucle :

    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
    Set TableClient = CurrentDb.OpenRecordset("Internal", dbOpenDynaset)
     
    Dim MonExcel As Object, i as long
    Set MonExcel = New Excel.Application
    MonExcel.Workbooks.Add
    MonExcel.ActiveWorkbook.ActiveSheet.Range("A1").Value = "Department_Unit :"
    MonExcel.ActiveWorkbook.ActiveSheet.Range("B1").Value = "Label :"
    MonExcel.ActiveWorkbook.ActiveSheet.Range("C1").Value = "Only :"
     
    i=2
    do while TableClient.eof=false
    MonExcel.ActiveWorkbook.ActiveSheet.Range("A" & i).Value = TableClient("Department_Unit")
    MonExcel.ActiveWorkbook.ActiveSheet.Range("B" & i).Value = TableClient("Label")
    MonExcel.ActiveWorkbook.ActiveSheet.Range("C" & i).Value = TableClient("Only")
     tableclient.movenext
    i=i+1
    loop
    
    On Error Resume Next
    Kill "D:\resultat.xls"
    On Error GoTo 0
    MonExcel.ActiveWorkbook.SaveAs "D:\resultat.xls"
    MonExcel.ActiveWorkbook.Close
    Set MonExcel = Nothing
    TableClient.Close
    Set TableClient = Nothing
    End Sub
    je n'ai pas vérifié mais ça devrait marcher

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    Merci pour votre réponse

    Mais malheureusement sa fonctionne pas il me sort un beugle :

    "L'expression sur clic entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. Nom ambigu détecté: BDCEExcel_Click"

    si vous avez une aidé merci de me répondre

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut
    ça marche chez moi

    vérifie que tu n'as pas 2 fois la procédure BDCEExcel_Click

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 615
    Billets dans le blog
    67
    Par défaut
    Salut,

    Souhaites-tu faire cet export régulièrement,

    Si oui je te conseille de créer avant tout ton fichier Excel, puis,
    pour modifier ou améliorer ton code tu as la faq:
    DataAccessExcel

    tu peux aussi copier l'entièreté de tes données dans ta feuille Excel sans utilisé de boucle;

    En utilisant l'instruction suivante, qui copie le contenu de ta table dans ta feuille (ici feuil1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Sheets("Feuil1").Range("A2").CopyFromRecordset TableClient

    Dans ce cas ton code ressemblera à ça:

    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
     
    Public Function Exporter()
     
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
     
    Dim Db As DAO.Database
    Dim TableClient As DAO.Recordset
    Dim strSQL As String
     
    Set appexcel = CreateObject("Excel.Application")
    ' appexcel.Visible = True
     
    ' ouverture de ton classeur Excel : ici il s'agit du classeur1.xls
    ' situé dans le répertoire c:\Excel
    Set wbexcel = appexcel.Workbooks.Open("c:\Excel\Classeur1.xls")
     
    Set Db = CurrentDb
     
    ' Copie du contenu de ta table dans un recordSet
    Set TableClient = Db.OpenRecordset("Internal", DAO.dbOpenSnapshot)
     
    with appexcel.Sheets("Feuil1")
     
    ' met à jour les entête de colonnes dans ta feuille Excel.
     
       For iCols = 0 To TableClient.Fields.Count - 1
          .Cells(1, iCols + 1).Value = TableClient.Fields(iCols).Name
       Next
     
    ' Suppression du contenu de la feuille en question avant ajout.
       .Range("A2:T10000").Delete
     
    ' Copie du contenu du recordSet dans ta feuille : Ici la feuille se nomme Feuil1
       .Range("A2").CopyFromRecordset TableClient
     
    end with
     
    ' libération des variables et fermeture du classeur.
     
    Db.Close
     
    appexcel.ActiveWorkbook.Save
    appexcel.ActiveWorkbook.Close
     
    Set wbexcel = Nothing
     
    appexcel.Quit
    Set appexcel = Nothing
     
    End Function

    Note qu'après l'exécution de ce code, ton fichier Excel se ferme après avoir été enregistré: il faut donc le rouvrir pour voir le résultat.

    A toi aussi de définir le chemin de ton fichier Excel dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbexcel = appexcel.Workbooks.Open(chemin)
    ========================================================

    Sinon,

    tu as aussi la commande TransferSpreadsheet qui te fait le tout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Internal", txtChemin, True
    Pour une synthèse, voici un tuto intéressant.

    A+

    PS: Si tu as une erreur sur CopyFromRecordset alors tu peux peut-être aller voir ce lien
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. Export de données d'Access vers Excel
    Par ROPERS dans le forum Access
    Réponses: 4
    Dernier message: 11/10/2005, 17h44
  2. Liaison Office Access vers Excel
    Par PDR dans le forum Access
    Réponses: 4
    Dernier message: 04/10/2005, 10h20
  3. Renseigner un formulaire Access depuis Excel
    Par vciofolo dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2005, 11h12
  4. comment afficher des données Access sur Excel ??
    Par merlubreizh dans le forum Access
    Réponses: 9
    Dernier message: 14/09/2005, 14h38
  5. Access vers excel
    Par tiopan dans le forum Access
    Réponses: 6
    Dernier message: 05/12/2003, 08h43

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