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 :

exportation donnée dans fichier excel [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut exportation donnée dans fichier excel
    Bonjour,

    J'utilise une fonction pour exporte mes données dans word qui marche super bien. ( voir dessous)
    Je souhaite avoir le même principe pour exporté des données sous excel dans un fichier existant. avec ces champs a renseigné
    cellule B6 = nom de l'opération (1 seule fois)
    cellule A12 = Numéro de lot ( a ajoute dessous l'ensemble des données)
    Cellule B12 = Nom de l'entreprise ( a ajoute dessous l'ensemble des données)

    voila le code pour la fonction word mais je n'arrive pas a trouve pour excel
    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
     
    DoCmd.SetWarnings False
     Dim DOC_WORD10 As String
    DoCmd.RunSQL " DELETE Courier.* FROM Courier IN '" & Environ("USERPROFILE") & "\access_pc3d\publipostage.mdb';"
    DoCmd.RunSQL "INSERT INTO Courier ( NUM_OPERATION, NOM_OPERATION ) IN '" & Environ("USERPROFILE") & "\access_pc3d\publipostage.mdb' SELECT OPERATION.NUM_OPERATION, OPERATION.NOM_OPERATION From operation WHERE (((OPERATION.NUM_OPERATION)=[Forms]![Décompte Général Définitif]![NUM_OPERATION]));"
    DoCmd.SetWarnings True
    ' Chemin d'accès au document Word de publipostage
    DOC_WORD10 = Environ("USERPROFILE") & "\access_pc3d\doc\Financier chantier\466. Pochettes dossier DGD - DOE. R4.doc"
    ' Variable pour gérer l'objet Word
    Dim wdApp10 As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp10 = CreateObject("Word.Application")  'ici
    With wdApp10
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Open DOC_WORD10
        ' Lier la lettre type à la source de données Access
        .ActiveDocument.MailMerge.OpenDataSource _
            Name:=Environ("USERPROFILE") & "\access_pc3d\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [Courier]"
         ' La fusion doit se faire dans un nouveau document
        .ActiveDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
    .ActiveDocument.MailMerge.Execute
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        .Documents.Open DOC_WORD10
        .ActiveDocument.Close wdDoNotSaveChanges
        End With
    Set wdApp10 = Nothing
    Exit Sub
    voila la requête ou l'on trouve les information nom du chantier, numéro de lot et nom de l'entreprise, dans la fonction word j'exporte les donnée dans uen base extérieure a voir si c'est utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT OPERATION.NOM_OPERATION, ESTIM_OPE.NUM_LOT, ENTREPRISE.NOM_ENTREPRISE
    FROM (OPERATION INNER JOIN (ESTIM_OPE INNER JOIN ENTREPRISE_SOLLICITE ON (ESTIM_OPE.NUM_CORPS_ETATS = ENTREPRISE_SOLLICITE.NUM_CORPS_ETATS) AND (ESTIM_OPE.NUM_OPERATION = ENTREPRISE_SOLLICITE.NUM_OPERATION)) ON OPERATION.NUM_OPERATION = ESTIM_OPE.NUM_OPERATION) INNER JOIN ENTREPRISE ON ENTREPRISE_SOLLICITE.NUM_ENTREPRISE = ENTREPRISE.NUM_ENTREPRISE
    WHERE (((OPERATION.NUM_OPERATION)=[Forms]![Décompte Général Définitif]![NUM_OPERATION]));
    Merci de m'aide car je ne trouve pas de fonction pour exporte sur excel avec la fonction de garde la mise en page.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu montres un exemple sous Word, mais as-tu utilisé la FAQ en mettant le mot Excel dans le moteur de recherche de celle-ci ? A priori non, car tu aurais trouver des exemples de codes pour piloter Excel à partir d'Access.

    Philippe

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour popofPopof,

    jette un coup d'oeil sur ce post qui pourrait t'aider.

    Bonne journée.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    Merci pour ton lien je l'avais déjà lu, mais je n'arrive pas a l'applique a mon cas car je le trouve différent de mon cas.

    et en plus je suis nul en VBA.

    tu peux m'aide a le faire STP?

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    regardes cet exemple :

    Décompresse les deux fichiers dans un même dossier.
    Le code exemple est dans le module modExportXL (sub ExporteDsExcelAvecModele).
    Il remplit un fichier modèle Excel (.xlt).
    Pour un fichier Excel standard, remplacer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Crée un nouveau Classeur à partir d'un modèle
    Set xlWbk = xlApp.Workbooks.Add(CurrentProject.Path & "\ModeleAR.xlt")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Ouvre un classeur existant
    Set xlWbk = xlApp.Workbooks.Open(CurrentProject.Path & "\FichierExcel.xls")
    Ça devrait te donner les principes de base.

    A+

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    SAlut

    Merci je le trouve pas mal du tout ton code le voila modifier avec mes valeurs sa marche
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    Sub ExporteDsExcelAvecModele()
    ' Variables pour manipuler Excel
    Dim xlApp As Excel.Application, xlAppCreated As Boolean
    Dim xlWbk As Excel.Workbook, xlSht As Excel.Worksheet
    Dim lgCntLigne As Long
    ' Variables données sources
    Dim db As DAO.Database, rs As DAO.Recordset
    ' Variable spécifiques à l'appli
    Dim strope As String
     
     
    On Error GoTo ErrH
     
    Set db = CurrentDb
    ' Ouvre la requête
    Set rs = db.OpenRecordset("SELECT [suivi DGD excel].NOM_OPERATION, [suivi DGD excel].NUM_LOT, [suivi DGD excel].NOM_ENTREPRISE FROM [suivi DGD excel] ORDER BY [suivi DGD excel].NUM_LOT")
    ' Si vide sortir
    If rs.EOF Then GoTo ExitSub
     
    ' Tente de récupérer une instance d'Excel déjà créée
    Set xlApp = GetObject(, "Excel.Application")
    ' Sinon, crée une nouvelle instance d'Excel
    If xlApp Is Nothing Then
       Set xlApp = CreateObject("Excel.Application")
       xlAppCreated = True
    End If
    ' Crée un nouveau Classeur à partir d'un modèle
    Set xlWbk = xlApp.Workbooks.Add(Environ("USERPROFILE") & "\access_pc3d\doc\Financier chantier\465. Suivi DGD- DOE- PV. R4.xls")
     
    ' Référence la feuille active du classeur
    Set xlSht = xlWbk.ActiveSheet
     
    ' Infos générales à mettre dans les cellules C2,C3,C5
    strope = rs("NOM_OPERATION")
    xlSht.Range("B6") = strope
     
     
    'Détail (lignes) commence à partir de cellule B8
    Do
        '1ère colonne (offset 0)
        xlSht.Range("A12").Offset(lgCntLigne, 0) = rs("NUM_LOT")
        '2ème colonne (offset 1)
        xlSht.Range("A12").Offset(lgCntLigne, 1) = rs("NOM_ENTREPRISE")
     
        rs.MoveNext
     
        ' Incrémenter n° de ligne (relatif à la ligne 8 (B8))
        lgCntLigne = lgCntLigne + 1
    Loop Until rs.EOF
     
     
    ' Pour confirmer l'écrasement du Classeur s'il existe
    xlApp.DisplayAlerts = False
    ' Sauvegarde du Classeur
    xlWbk.SaveAs CurrentProject.Path & "\Cmde_" & strope, xlNormal
    ' Fermeture du Classeur
    xlWbk.Close False
     
    ExitSub:
    ' Réactive les messages d'avertissement
    If Not (xlApp Is Nothing) Then xlApp.DisplayAlerts = True
     
    ' Libération des variables objets
    Set rs = Nothing
    Set db = Nothing
     
    Set xlSht = Nothing
    Set xlWbk = Nothing
    If xlAppCreated = True And Not (xlApp Is Nothing) Then xlApp.Quit
    Set xlApp = Nothing
    Exit Sub
     
    ErrH:
    ' Gestion d'erreurs
    Select Case Err.Number
        Case 429
             ' Ignorer Erreur causée par GetObject(, "Excel.Application")
             Resume Next
     
        Case Else
             MsgBox "Erreur N. " & Err.Number & " : " & Err.Description
             Resume ExitSub
    End Select
    End Sub

    Par contre actuellement il me crée un fichier excel la ou se trouve la base, je souhaite que le fichier s'ouvre et reste ouvert sans crée un fichier déjà enregistre sa sera utilisateur qui choisira de l’enregistre ou non.

    Tu peux me dire ou modifier le code et comment ?

    Merci encore chef

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2014, 12h10
  2. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  3. Recup données dans fichier Excel
    Par Titototi dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/04/2008, 16h02
  4. Entré de données dans fichier excel avec Form VB6
    Par avyrex dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/05/2007, 14h08
  5. Exporter résultats dans fichier excel [forms 6i]
    Par OUALASS dans le forum Forms
    Réponses: 4
    Dernier message: 30/05/2006, 19h38

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