EXPORTATION ACCESS VERS EXCEL

Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- - Dernière réponse : cs_philnext
Messages postés
9
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
29 novembre 2010
- 1 avril 2013 à 20:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/55047-exportation-access-vers-excel

cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10 -
question posée de manière récurrente sur le forum..
Ce code répond je pense à tes besoins,
mais il ne traite pas la question de manière générale..

Il aurait été intéressant de l'aborder quel que soit le nombre de champs existants dans la table et aussi quels que soient leurs structures.

On peut aussi prendre une hypothèse de travail plus large encore en choisissant d'exporter un dataset et là quelque soit la base !

Il faudrait aussi lui ajouter une option afin de choisir un format de sortie et prévoir un traitement d'erreurs toujours possibles.
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10 -
if ADOQuery.RecordCount = 0 then

à remplacer par :
if (ADOQuery.BOF) and (ADOQuery.EOF)then

si les deux pointeurs sont vrais alors la table est vide, beaucoup plus rapide que recordcount qui parcourt toute la table..
yvessimon
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Bonjour,

Avec ADOQuery2 il est possible de transferer toute la table sélectionnée
dans excel (ou l'invers), avec une sipmle commande SQL.

La table destination doit être inexistante.

Salutations

//--------- extrait de code

Tab_source := edit13.Text ;// table ACCESS existante
Tab_destination:= edit6.Text; // table EXCEL nouvelle

sCopy := 'SELECT * INTO ["Excel 8.0;Database=' + Source_EXCEL.Text + '"].['+Tab_destination+'] FROM '+ Tab_source;

// LA TABLE EXCEL EXISTE ?
i := combobox1.Items.IndexOf(Tab_destination ) ;
if i > 0 then
BEGIN
showmessage(' la table EXCEL : ' +Tab_destination+ #10' existe ');
exit;
END;

// COPIE ACCESS VERS EXCEL POSSIBLE
caption := sCopy;
TRY
BD_.ADOQuery2.SQL.Text:= sCopy; // liée avec ACCESS
BD_.ADOQuery2.ExecSQL;
EXCEPT
// message ..;
END;
//----------
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
Très bonnes remarques de Cantador!

Je déplore l' utilisation d' Excel (ExcelApp := CreateOleObject('Excel.Application')) qui rend notre application dépendente alors qu' il est possible de créer un fichier *.csv.

a+
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10 -
merci Mauricio,
OLE, c'est bien sans plus..

il y a la dépendance notamment en cas de changement de version
et aussi et la vitesse d'exécution qui n'est pas terrible.
Alors qu'll existe beaucoup d'autres solutions bien meilleures..
le .cvs en fait partie puisqu'il est reconnu aussitôt par EXCEL et
s'ouvre directement en mode tableur.