VBA - Export de fichier dans Excel

remus83 Messages postés 1 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008 - 1 oct. 2008 à 00:06
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 1 oct. 2008 à 20:36
Bonjour à tous,

J'utilise un code VBA dans Access qui me permet de filtrer les données que je recherche dans une grande table (plus de 40000 lignes) et d'exporter automatiquement les données dans Excel. Ayant plus de 100 filtres, ce code me fait gagner énormément de temps.

L'exportation se fait de la façon la plus simple dans Excel (copier/coller pour résumer) et j'aimerai pouvoir gagner encore plus de temps en automatisant la mise en forme des fichiers Excel. Pour faire simple, je voudrais éviter de devoir ouvrir chaque fichier Excel venant de l'exportation de Access et de faire la mise en forme à chaque fois.

J'ai tout d'abord essayer de copier coller le code VBA que j'ai pu récupérer en enregistrant une mise en forme grâce à l'assistant Visual Basic Editor dans Excel. Malheureusement cela ne fonctionne pas.

Pouvez-vous me dire comment procéder?

Merci de votre aide.

2 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 oct. 2008 à 02:41
Bonsoir,


Si ta page Excel est toujours la même au niveau des colones exportées:


1-Faire un fichir modèle avec une mise en page personnalisée.
2-Automatiser la procédure exportation.
Pour ceci, perso j' utilise la méthode suivante:
  
Sub EXPORTER()
   Dim sQuery As String
   Dim rs As Recordset
   
'Construire l' expression de la requete selon les critères filtres.
   sQuery="SELECT ..."
 'instancier le recordset
 Set rs = CirrentDB.OpenRecordset(sQuery, dbOpenSnapshot)
     
 Dim sDestination As String
 sDestination=<chemin et nom du classeur Excel>


'variable classeur Excel
         Dim appExcel As Excel.Application 'Application Excel
         Dim wbExcel As Excel.Workbook 'Classeur Excel
         Dim wsExcel As Excel.Worksheet 'Feuille Excel
       
     'Ouverture de l'application
        Set appExcel = CreateObject("Excel.Application")
     'Ouverture d'un fichier Excel
        Set wbExcel = appExcel.Workbooks.Open(sDestination)
     'wsExcel correspond à la première feuille du fichier
        Set wsExcel = wbExcel.Worksheets(1)
          
      With wsExcel
           'Réinitialiser la page en supprimant le contenu des 'cellules à partir de la ligne des données (A8 par exemple)


           .Range("A8").ClearContents

 '... REMPLISSAGE
           .Range("A8").CopyFromRecordset rs
 
'Fermer en sauvegardant
            .Close True
 End With


 '...Détruire les objets Excel
        Set appExcel = Nothing
        Set wbExcel = Nothing
        Set wsExcel = Nothing
  
 '...Fermer et détruire l' objet recordset
        rs.Close
        Set rs = Nothing


End Sub


J' espère que cela te conviendera.




      
<hr />



[] Ce qui va sans dire. va mieux en le disant.


<hr />
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
1 oct. 2008 à 20:36
Pour info :

pas dans le bon theme ! pour le VBA c'est ici :

Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-LANGAGES-DERIVES_287.aspx Langages dérivés] / [theme-VBA_244.aspx VBA] /
0
Rejoignez-nous