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 :

Enregistrer fichier Excel en VBA sous Access [AC-2002]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Points : 89
    Points
    89
    Par défaut Enregistrer fichier Excel en VBA sous Access
    Bonjour,

    J'ai un fichier DQY qui s'ouvre dans un fichier Excel en VBA.
    J'aimerai pouvoir enregistrer ce fichier excel dans un répertoire spécifique. Le problème je ne trouve pas la bonne propriété car elle est différente que le VBA sous Excel.

    Voila 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
    'On intègre dans la feuille BDCF les résultats du fichier dqy
    Private Sub extraction_dqy_aval(fichier_bdcf_aval, ledir_bdcf)
     
        Dim xlApp As Object
     
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        xlApp.Workbooks.Open ("" & ledir_bdcf & fichier_bdcf_aval & "")
     
        'On ajoute la derniere dans le fichier
        intFic = FreeFile
        Open ledir_bdcf & fichier_bdcf_aval For Append As intFic
        Print #intFic, res
        Close intFic
     
        'On lance l'éxécution du fichier DQY
        With ActiveSheet.QueryTables.Add(Connection:= _
            "FINDER;" & ledir_bdcf & fichier_bdcf_aval & "", _
            Destination:=Range("A1"))
            .Name = "bdcf_aval"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
     
     
        End With
     
        timestamp = Format(Now, "dd-mm-yyyy-hhnnssms")
        fichier_final = "bdcf_aval_MAJ_timestamp"
     
        xlApp.Workbooks.SaveAs "" & ledir_bdcf & "Archive/" & fichier_final & ""
     
    End Sub
    Ma dernière ligne ne fonctionne pas bien sûr

    Cordialement

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonsoir

    Il ne faut pas confondre l'appli Excel, le classeur (fichier) et la feuille

    Pour ouvrir et intervenir sur le Xls :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim xlAppAs Variant, xlBook As Variant, xlSheet As Variant  
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("CheminCompletDuFichierXls") 'à modifier
        Set xlSheet = xlBook.Worksheets("NomDeLaFeuille") 'à modifier
        xlApp.visible = True
        ...
    Pour Sauvegarder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        xlBook.SaveAs "CheminCompletDuFichierXls"   'et non xlApp !
    Pour fermer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        xlBook.Close
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
    titi95

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Un complément

    Pour créer un classeur Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim xlAppAs Variant, xlBook As Variant, xlSheet As Variant  
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
        xlBook.SaveAs "CheminCompletDuFichierXls"
    titi95

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Points : 89
    Points
    89
    Par défaut
    parfait ça marche

    Merci beaucoup

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Je profite de cette discussion, pour savoir, si quelqu'un sais comment « enregistrer sous » un classeur en lecture seule par Access en VBA.

    En fait, j’ai utilisé les commandes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    DoCmd.OpenForm "nomFormulaire_tableauCroiséDynamique", acFormPivotTable
    DoCmd.RunCommand acCmdPivotTableExportToExcel
    pour exporter ma tableau croisé dynamique dépandant en formulaire vers excel, mais le classeur est en lecture seule. Je voudrais pouvoir enregistrer ce classeur en VBA, mais j’ai pas trouvé la solution...

    Quelqu'un peux m’aider s’il vous plait ?

    Merci d’avance

    Cdt,
    DY





    Citation Envoyé par titi95 Voir le message
    Un complément

    Pour créer un classeur Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim xlAppAs Variant, xlBook As Variant, xlSheet As Variant  
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
        xlBook.SaveAs "CheminCompletDuFichierXls"
    titi95

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut Sauvegarder un Classeur Excel en Lecture seule
    pour Hopee,

    voir ma solution dans ma réponse du 26/06 : il faut mettre la propriété du Classeur en Lecture-Ecriture avant son ouverture (je crois). dans mon code ça marche

    Extraits :


    Dim NomFichierExcel As String
    Dim NomClasseur As String

    Dim ApplicationExcel As Excel.Application 'Application Excel
    Dim FichierExcel As Excel.Workbook 'Classeur Excel


    NomClasseur = "MonClasseur.xlsx" 'Nom du Classeur
    NomFichierExcel = "C:\MonRepertoire\MonClasseur.xlsx" 'Chemin du Classeur


    Set ApplicationExcel = GetObject(, "Excel.Application") 'Session active d'Excel


    SetAttr NomFichierExcel, vbNormal 'Donne la propriété Lecture-écriture au Classeur

    Set FichierExcel = ApplicationExcel.Workbooks(NomFichierExcel)


    ' ...

    FichierExcel.Save

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    merci Luc,

    mais en fait, c'est pas mon problème...
    mon souci est que, j'ai réussi à exporter mon tableau croisé dynamique dépendant (formulaire) vers Excel, mais je sais pas comment faire pour enregistrer le classeur nommé avec la date d'exportation. (surtôt le problème d'enregisrtement).

    quand j'exporte le tableau croisé dynamique, le classeur est exporté, dans le premier onglet, le tcd, et dans le 2em onglet, les données. pourtant, ce classeur est en lecture seule...
    j'ai pas envie de sauvegarder 100 fois le classeur si j'ai envie d'exporter 100 tcd... c'est long pour le traitement, la nominnation, ...

    tu peux m'aider s'en sortir, stp?

    merci d'avance


    Hopee

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut
    Salut,

    je ne comprends pas tout : tu veux sauvegarder ton classeur sous un autre nom (ou le renommer en le sauvegardant) ?
    si c'est ça tu peux utiliser ce genre de choses :

    NouveauNomClasseur = "(MonClasseur " & now () & Format(Now(), "yyyy/mm/dd hh:mm") & ".xls"
    NomFichierExcel = "C:\MonRepertoire\" & NouveauNomClasseur
    FichierExcel.SaveAs NomFichierExcel ' qui sauvegarde la nouvelle version

    ...

    NomFichierExcel = "C:\MonRepertoire\" & AncienNomClasseur
    Kill NomFichierExcel ' qui supprime l'ancienne ou précédente version

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Salut Luc,

    Merci d’abord pour tes aides, j’essaie de m’expliquer plus précisément :

    J’ai un formulaire dépendant permettant de créer un tableau croisé dynamique dépendant.
    En utilisant les codes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.OpenForm "nom de formulaire tableau croisé dynamique dépendant", acFormPivotTable
    DoCmd.RunCommand acCmdPivotTableExportToExcel
    Je me permets d’exporter le tableau croisé dynamique dépendant vers Excel. Dans le premier onglet, je vais trouver mon tableau croisé dynamique et dans le deuxième onglet, j’ai la base de données.

    L’exportation est bien faite, mais le classeur est en lecture seule, et le nom de classeur n’est pas fixe, il est nommée toujours comme PivotTableXXXX (XXXX sont des chiffres aléatoires, y’a pas de règle).

    Voici mon problème :

    Je voudrais pouvoir écrire un code, me permettant de enregistrer sous / sauvegarder ce classeur avec un nom automatique avec la date d’exportation. De meilleurs, de nommer aussi systématiquement, le premier onglet « Synthèse » et le deuxième onglet « Détail ».

    Est-t-il possible pour la réalisation ?

    En espérant que je me suis clairement expliquée….

    Merci d’avance pour tous les idées et les aides


    Hopee

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

Discussions similaires

  1. [AC-2003] Générer fichier texte en VBA sous Access
    Par pal017 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/08/2009, 19h05
  2. Enregistrement fichier excel via VBA
    Par vwtroudy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2009, 09h28
  3. [E-07] Enregistrement fichier Excel en VBA
    Par sylvain7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2009, 16h39
  4. [VBA-E] Enregistrement fichier Excel
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2006, 09h55
  5. Ouverture d'un fichier Excel en VBA par Access
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 11h14

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