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 :

Copie fichier Excel [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut Copie fichier Excel
    Bonjour, je me permet de faire un seul post pour 2 problèmes :
    En premier lieu, je remplie un fichier Excel avec des données d'un formulaire. Cependant, j'aimerai copier le fichier Excel encore vierge dans une autre feuille en nommant celle-ci avec la date du jour, et ce à chaque fois que l'utilisateur remplira le formulaire et clickera sur "valider". J'arrive a copier la premiere feuille sur la deuxieme mais il faudrait la nommée et copier la mise en page... et si possible, créer une nouvelle feuille à chaque fois et non pas remplacer les données. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private sub BTN_Valider.click()
    MonFichier = "C:\Desktop\FDL.xlsx"
    Set MonXL = CreateObject ("Excel.Application")
    MonXL.Workbooks.Open MonFichier
    MonXL.Visible = true
    MonXL.Workbooks("FDL.xlsx").sheets("Sheet2").range("A1:AF86").value = MonXL.Workbooks("FDL.xlsx").Sheets("Sheet1").range("A1:AF86").Value
    MonXL.range("Y8").Value = Forme![FDL_pré_remplie]![Fiche_liaison]
    'Je copie ainsi toutes mes données
    End sub
    J'espère avoir tout bien expliquer, je vous remercie d'avance pour votre aide^^

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour,

    Il y a plus simple au niveau de la copie et cela permet la copie de la mise en forme en plus et de renommer les Feuilles.

    il te suffit de changer le chemin du fichier Excel et le nom des onglets.

    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
    Sub CopyExcel()
        Dim xlExcel As Excel.Application
        Dim xlClasseur As Excel.Workbook
        Dim xlFeuil As Excel.Worksheet
     
        Set xlExcel = CreateObject("Excel.Application")
        Set xlClasseur = xlExcel.Workbooks.Open(CurrentProject.Path & "\Classeur1.xlsx")
        Set xlFeuil = xlClasseur.Worksheets("Test")
     
        xlExcel.Visible = False
     
        xlFeuil.Copy After:=Worksheets(xlFeuil.Name)
        xlClasseur.Worksheets(xlFeuil.Name & " (2)").Name = "Toto"
        xlClasseur.Save
     
        Set xlFeuil = Nothing
        xlClasseur.Close: Set xlClasseur = Nothing
        xlExcel.Quit: Set xlExcel = Nothing
    End Sub
    @++

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse, cependant j'ai des messages d'erreurs... Tout d'abord en ce qui concerne la déclaration des variables, je dois les déclarer en "Variant" sinon j'ai un message comme quoi le type n'est pas définit. De plus j'ai une erreur sur cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlFeuil.Copy After:=Worksheets(xlFeuil.Name)
    Il ne reconnait pas "Worksheets"

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour,

    Il te faut declarer la refrence : Microsoft Excel xx.x

    http://access.developpez.com/faq/?page=ref#Reference

    @++

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Bonjour, effectivement ça marche mieux^^
    Cela m'effectue bien la copie pile poil comme il faut, cependant j'ai un message d'erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlClasseur.Worksheets(XLFeuil.Name & "(2)").Name = "Test2"
    Il me dit que l'indice n'a pas été trouvé dans la sélection.
    Merci à toi =)

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    J'ai tout simplement enlevé la ligne et c'est bon ça marche nickel.
    Par contre, est-ce possible de faire en sorte qu'il créé une feuille à chaque fois et pas forcément après la première ? pcq du coup quand j'essaie de le faire une deuxième fois il plante.

  7. #7
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Citation Envoyé par Eva06 Voir le message
    J'ai tout simplement enlevé la ligne et c'est bon ça marche nickel.
    La ligne en question permet de renommer l'onglet copié.

    Citation Envoyé par Eva06 Voir le message
    Par contre, est-ce possible de faire en sorte qu'il créé une feuille à chaque fois et pas forcément après la première ?
    Je ne comprends pas, as-tu la maitrise des noms d'onglets ? Si tu créer beaucoup d'onglets cela peut rendre instable ton fichier.

    Citation Envoyé par Eva06 Voir le message
    pcq du coup quand j'essaie de le faire une deuxième fois il plante.
    Bizarre, je viens de voir qu'il restait une instance d'Excel ouverte après l’exécution du code alors qu'elle doit se fermer.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    sinon au lieu de créer des onglets à chaque fois, on peut créer d'autre fichier Excel en copiant la même chose ?

  9. #9
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour,

    si tu veux copier le fichier avant de le modifier, utilise FileCopy

    Comment copier un fichier d'un répertoire à un autre ?

    @++

  10. #10
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    re,

    sinon modification du code qui permet de créer un nouvel onglet, il te suffit d'exporter dans le nouvel onglet une fois créée. L'instance qui restait dans le précédent code est résolu. Dans celui-ci Access libère bien 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
    Sub CopyExcel()
        Dim xlExcel As Excel.Application
        Dim xlClasseur As Excel.Workbook
        Dim xlFeuil As Excel.Worksheet
     
        Set xlExcel = CreateObject("Excel.Application")
        Set xlClasseur = xlExcel.Workbooks.Open(CurrentProject.Path & "\Classeur1.xlsx")
        Set xlFeuil = xlClasseur.Worksheets.Add
     
        xlFeuil.Name = "Toto"
        xlClasseur.Save
     
        xlClasseur.Close: Set xlClasseur = Nothing
        xlExcel.Quit: Set xlExcel = Nothing
        Set xlFeuil = Nothing
        MsgBox "Fin"
    End Sub

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    Ton code renomme bien ma nouvelle feuille cependant j'ai toujours mon fichier Excel qui se ferme mal, a la limite ce n'est pas très grave.
    Par contre, je souhaite renommer ma feuille avec la date du jour en plus. Cependant la date est nulle, je ne comprend pas trop pourquoi, sachant qu'elle retourne bien la date du jour sur d'autre formulaire.
    Une idée?
    Un grand merci en tout cas pour ton aide

  12. #12
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    bonjour,

    comment ça la date est nulle ?

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Et bien, j'utilise la fonction "date" pour avoir la date du jour, et lorsque j'exécute le code, la valeur de "date" est nulle. Du coup ça plante. J'ai essayé de passer par une variable, de mettre des crochets mais elle est toujours nulle.

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Re,
    c'est bon, en fait dans mon formulaire j'avais un champs nommé date et qui etait effectivement null^^
    Ça marche bien du sauf cette histoire de fichier Excel qui se ferme mal, si jamais tu as une autre idée je suis preneuse sinon tant pis.
    Encore merci pour ton aide

  15. #15
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    re,

    avec le dernier code je n'ai plus de problème d'instance qui reste

    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
    Sub CopyExcel()
        Dim xlExcel As Excel.Application
        Dim xlClasseur As Excel.Workbook
        Dim xlFeuil As Excel.Worksheet
     
        Set xlExcel = CreateObject("Excel.Application")
        Set xlClasseur = xlExcel.Workbooks.Open(CurrentProject.Path & "\Classeur1.xlsx")
        Set xlFeuil = xlClasseur.Worksheets.Add
     
        xlFeuil.Name = "Toto"
        xlClasseur.Save
     
        xlClasseur.Close: Set xlClasseur = Nothing
        xlExcel.Quit: Set xlExcel = Nothing
        Set xlFeuil = Nothing
        MsgBox "Fin"
    End Sub

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

Discussions similaires

  1. [POI] Copie fichier Excel
    Par titou31000 dans le forum Documents
    Réponses: 9
    Dernier message: 10/01/2013, 11h48
  2. RegExp aprés copie fichier excell
    Par Mordok dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/03/2012, 10h53
  3. [VBA-EXCEL] Copie Fichier sur un serveur
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/05/2007, 10h25
  4. copie de données entre 2 fichiers excel
    Par kalu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/10/2006, 17h31
  5. Copie entre 2 fichiers excel
    Par Freerideuse dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 29/06/2006, 16h12

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