[.NET] EXPORT EXCEL XLS RAPIDE PAR MSQUERY (PROC STOCKÉES TABLES VUES REQUETES .

cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018 - 11 déc. 2004 à 11:07
cosmos_final Messages postés 1 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 28 avril 2010 - 28 avril 2010 à 14:07
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/28101-net-export-excel-xls-rapide-par-msquery-proc-stockees-tables-vues-requetes

cosmos_final Messages postés 1 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 28 avril 2010
28 avril 2010 à 14:07
Je reve ou CommandText a une taille limite ?
J'essaye avec une requete de 15 lignes environ et sa me fait une erreur de type, alors que si je suprime des caracteres il n'y a plus d'erreur ...
Quelqu'un a une idée pour executé des requetes plus longue ?
greg38bj Messages postés 83 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 17 novembre 2008
20 déc. 2007 à 22:45
salut
cette source m'a été trés utile, mais j'aimerais pouvoir changer une image présente sur ma feuille excel par cette méthode.
Est ce possible ?
l'enregistreur de macro ne me fait rien sur les images ...
merci de m'aider si cela est possible

greg38bj
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
11 juin 2007 à 12:52
je ne vois pas de différence quelque soit la source des données.
reste juste à trouver la chaine de connection vers ton dataset à mon avis.

en même temps je l'ai jamais fait (datatable vers excel direct) et si j'avais à le faire, je crois que je ferais pas comme ça de toutes façons.


je pense que tu dois avoir un moyen simple de le faire, essaie par exemple de mettre ta datatable dans la 1ère cellule. il se pourrait qu'excell s'aperçoive qu'il s'agit d'un tableau et te le dispatche tout seul.

Dans tous les cas il doit y avoir une méthode plus rapide, moins pénible et surtout moins vilaine que le remplissage cellule par cellule.


Benouille, quelques grammes de grenouille dans un monde de brute
cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 août 2007
7 juin 2007 à 17:29
Salut,

je souhaite Exporter une DataTable vers Excel (cette DataTable est construite d'après des données de Dataset retravaillé)
Existe-t'il un moyen de ne pas passer par de la cellule à cellule ?
Le code ici doit se connecter à une base (voire base Access dans le cas de xtrusion)

Merci d'avance
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
6 mars 2007 à 20:52
ah
cmd_raz Messages postés 12 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 11 mai 2007
16 févr. 2007 à 11:26
C'est trés pratique c'est sur la question; si j'ai un lien de foto et que je veux que la foto sois integre dans la feuille on ne peut pas le faire.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 sept. 2006 à 15:59
Il est possible d'exporter via ODBC vers un fichier Excel, à condition que la première ligne contienne l'entete de chaque colonne (et c'est aussi une bonne idée d'ajouter une ligne d'exemple pour indiquer à Excel le type de donnée à recevoir), voir un exemple ici :
ODBCDotNet : Extraire des requêtes ODBC dans un tableau de tableaux de String
www.vbfrance.com/code.aspx?ID=34701
Je vais mettre à jour cette source prochainement.
cycofred0 Messages postés 6 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 11 décembre 2007
18 sept. 2006 à 15:15
Le code ci-dessus part d'une base de données. Dans mon cas je cherche à exporter vers Excel une matrice en mémoire, donc ODBC est proscrit (à moins d'exporter le contenu de ma matrice vers une base avec 50.000 "INSERT INTO" mais c'est aussi lent je présume...)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
18 sept. 2006 à 14:52
cycofredo: c'est exactement le but de cette source
cycofred0 Messages postés 6 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 11 décembre 2007
28 août 2006 à 15:11
Sympa.

Pour ma part je cherche à balancer le contenu d'un gros tableau en mémoire dans Excel. Problème de performance avec : MyXL.Worksheets(X).cells(Y,Z).value = "BLAH BLAH" qui rame à mort quand il y en a pour plusieurs milliers de lignes.

La méthode la plus rapide que j'ai trouvée est de générer d'exporter mon tableau en HTML, puis de l'importer dans un objet Excel (temps d'exécution passant de 3 minutes à 15 secondes par fichier). Question : y a t'il plus simple / plus rapide ?

Merci :-)
cs_isame Messages postés 31 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 25 juin 2007
24 févr. 2006 à 15:49
oui j'ai excel 2000
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
24 févr. 2006 à 15:37
t'es sur que t'as excel sur le serveur?

ça de mande de la configuration je crois pour les utiliser en distant
SR2 Messages postés 46 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 25 juillet 2006 1
24 févr. 2006 à 11:56
essaies
dim xlapp as object
set xlapp=createobject("excel.application")
cs_isame Messages postés 31 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 25 juin 2007
23 févr. 2006 à 15:05
bah si
j'arrive a créer un fichier texte ou xml mais pas excel...
il bloque à
xlapp= new Excel.application
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
23 févr. 2006 à 14:59
faut croire que non ;Þ
cs_isame Messages postés 31 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 25 juin 2007
22 févr. 2006 à 18:12
bonsoir si quelqu'un pourrait m'aider
kan je l'excéute (application web) il me met une erreur
<System.UnauthorizedAccessException: Accès refusé. >
pourtant j'ai donné tous les droits
DocPhiphi Messages postés 42 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 4 novembre 2008
15 févr. 2005 à 22:08
Pour avoir la librairier Microsoft Excel 9 il faut avoir Excel installé sur son poste, donc l'acheter......
cs_guigui43 Messages postés 6 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 25 février 2005
15 févr. 2005 à 11:13
J'ai pas cette librairie Microsoft excel 9 !!!
Comment faire ou peut-on me l'envoyer?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
3 févr. 2005 à 11:37
XLDOTNET : QUITTER EXCEL SANS LAISSER D'INSTANCE EN RAM
www.vbfrance.com/code.aspx?id=27541
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
3 févr. 2005 à 09:47
bon ben voila, ca fonctionne a merveille ! Merci a vous tous car joré jamais pu y arriver tout seul ! :P

Jsé meme pa kommen vous avé été capable de faire un truc pareil ... ( et encore jme doute ke c pa ce kil y a de plus difficile a faire ... ms kd meme ! lol ) il me reste plus ka virer excel de la RAM automatikement pr eviter kil plante ...

MERCI surtout a BENOUILLE pr sa patience et ses connaissances ! ^^

++
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
1 févr. 2005 à 13:26
OK merci pr tout en tout cas ! La jvé chercher c juste un pb de syntaxe ...
++
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
1 févr. 2005 à 11:06
le principe ici d'utiliser msquery à la différence des solutions habituelles de remplissage d'une feuille excell par parcourt d'un recordset (ou dataset maintenant), c'est d'utiliser la puissance de msquery pour qu'il fasse lui meme l'acces a la bdd (ici access).

ça veut dire que tu crées un fichier un excel par le code, et ce fichier excel vit ensuite sa vie tout seul, pouvant meme rafraichir ses données avec la base sans intervention de ton programme qui l'a construit.

ça veut dire aussi puisqu'il n'est pas lié a ton programme, qu'il ne le connait pas, la chaine de connection sera donc créée une fois pour toute.
(mais tu peux la modifier depuis ton classeur xls créé).

si c'est au moment de l'instalation (création du doc excel dans le rep de l'application qui peut être n'importe ou mais qui ne bougera jamais une fois posé) que tu veux déterminer le app.path alors la tu peux le faire.

pour ça faut lui passer une chaine string qui contienne le bon chemin. dans ta chaine tu lui passes en dur "application.startuppath", c'est pas malin: c'est la valeur chaine de application.startuppath qui est interressante pas son nom en lui meme.

autrement dit:
sConnection = "odbc ... " & app.path & " ....
ou la valeur de app.path est insérée au bon endroit.

attention: comme dit plus haut, la chaine de connection est ensuite figée dans excel.

ça me dérange pas de t'aider dans la mesure ou t'attends pas de moi que je resolve tes problemes ou que je te programme ton truc à ta place; dans la mesure ou tu reflechis et que tu cherches les solutions par toi meme avant de poser les questions.
bonne prog.

ouaip tu pourras pas m'aider en vb: je suis passé a vb.net ;)
mais c'est pas grave, tu pourras aider quelqu'un d'autre, c'est pas juste entre nous deux que ça se passe.
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
1 févr. 2005 à 09:08
T'es trop le meilleur Benouille ! :P

Ca fonctionne a merveille !

Dernière question, promis apré je t'embete plus ! ;o)

Ma base de donnée doit pouvoir être deplacée, donc j'essaye de lui mettre un chemin relatif, et quelque soit ce que j'essaye ca marche pas ... Jvoudré simplement kelle soit définie par défaut dans le repertoire de l'executable .... Donc je fé :

(Connection:="ODBC;DSN=MS Access Database;DBQ=Application.StartupPath\biblio.mdb;DefaultDir=Application.StartupPath;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;", Destination:=listedocs.Range("A1"))

Ms il a pa l'air d'apprecier le Application.StartupPath ... J'essaye de le mettre entre "&" et tout ms il aime pa trop trop trop ca ! lol Alor ke ds ma chaine de connection a BDD ca fonctionne ...
J'ai essayé ca aussi ms sans succès :

DBQ=Application.StartupPath & " \ " & biblio.mdb;DefaultDir=Application.StartupPath

Si ta une idée merci, sinon, laisse tomber ;o) tu en a deja assez fé ! Merci pour tout! (jdiré bien a charge de revanche ms ... jriske pa de pouvoir t'aider en VB apparement ! :p ) LOL
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
31 janv. 2005 à 19:37
ah bin vi c'est plutot caca ton truc

la chaine de connection doit pas être si lourdement vétue, elle doit se retrouver quasi à poil: en string.

moi j'aurais fait comme toi: enlevé les tableaux (array)
"ODBC;DSN=MS Access Database;DBQ=C:\Documents and Settings\Administrateur\Bureau\Projet 2005\Projet 2005\Biblio[FAL62]\bin\biblio.mdb;DefaultDir=C:\Documents and Settings\Administrateur\Bureau\Projet 2005\Projet 2005\Biblio[FAL62]\bin;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;",Destination:=Range("A1"))

idem plus bas
.CommandText = "SELECT Document.Titre, Document.Date, Document.Public, Document.Support, Document.Thème, Document.Service, Document.Auteur, Document.MaisondEdition, Document.NumRevue, Document.DatedePublication, Document.RevuecontenantlArticle, Document.Résumé, Document.Emplacement, Document.NombredExemplaires FROM Document ORDER BY Document.Titre"

s'il attends du string, il faut lui passer du string.

vbnouille, grenouille en string
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
31 janv. 2005 à 13:54
Merci a toi ! voici le code :

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=C:\Documents and Settings\Administrateur\Bureau\Projet 2005\Projet 2005\Biblio[FAL62]\bin\biblio.mdb" _
), Array( _
";DefaultDir=C:\Documents and Settings\Administrateur\Bureau\Projet 2005\Projet 2005\Biblio[FAL62]\bin;DriverId=25;FIL=MS Access" _
), Array(";MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Document.Titre, Document.Date, Document.Public, Document.Support, Document.Thème, Document.Service, Document.Auteur, Document.MaisondEdition, Document.NumRevue, Document.DatedePublication, Docu" _
, _
"ment.RevuecontenantlArticle, Document.Résumé, Document.Emplacement, Document.NombredExemplaires" & Chr(13) & "" & Chr(10) & "FROM Document Document" & Chr(13) & "" & Chr(10) & "ORDER BY Document.Titre" _
)
.Name = "Lancer la requête à partir de MS Access Database"
.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

Le soucis c kil me dit ke array est un type donc kil ne pe pa etre utiliser en tant qu'expression ... Et si je les vire les array, ca marche pa .... jcomprends pa ...
Ya kelke chose a faire ? ;o) toi t'en as pa ds ton code source des array .... moi jen ai partout ! lol

T'a pa une idée par hazard? :P

Merci davance !
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
28 janv. 2005 à 17:33
la macro sert a récupérer le code.

tu ouvres un nouvelle macro pour commencer l'enregistrement.

ensuite tu vas dans excel, données, données externes, nouvelle requete. la tu dois choisir une source de données, tu choisis MS Access DAtabase, tu pointes sur ton .mdb, et tu fais une requete bidon (select * from matable ou matable est le nom d'une table de ta base access). à la fin tu dois avoir les données de ta tables acces dans excel.

tu arrete ta macro et tu regardes dans le code de la macro la chaine de connection qu'il a utilisé, tu remplaces ma chaine de connection par la tienne et cela devrait fonctionner.

je suppose que tu devrais avoir une différence ici: ODBC;DRIVER=SQL Server; parceque tu ne vas pas passer par odbc mais oledb et pas prendre le driver prévu pour sql server mais celui pour access.

je n'ai pas access donc je ne peux pas tester pour toi, mais tu devrais t'en sortir en faisant les choses calmement et en lisant bien tout.
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
28 janv. 2005 à 13:54
paske la g mi ca ms ca marche pa, ca ouvre excel ms rien de plus :



With xsSoldesComptes5.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=Connection;Integrated Security=SSPI;" & _
"APP=Microsoft® Query;DATABASE=biblio.mdb;Trusted_Connection=Yes" _
, Destination:=xsSoldesComptes5.Range("A1"))

.CommandText = "select * from Document" ' ou la requete select * from machin si vous n'avez pas de proc


Merci les gars ! ;o)
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
28 janv. 2005 à 13:50
merci a toi ms jcomprends pa commen tu ve ke je me connecte a ma bdd access a partir d'excel, ds outils macro, jvois pa koi faire, jpense avoir tout essayé ! :p

Et kd tu me dis de remplacer le nom du serveur par mes noms a moi, je mets koi ? g koi a remplacer conkretement steplé?

Merci de votre aide ! elle mé precieuse ! :p
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
28 janv. 2005 à 01:16
access n'est pas a proprement parlé un serveur, mais a priori ça ne change pas grand chose, remplace donc le nom du serveur de la base par tes noms et la proc stockée par ta requete et cela devrait marcher.

si cela ne fonctionne pas , va dans excel, ouvre une nouvelle macro, connecte toi depuis excel à ta base access, recupère le code et remplace le ici.
ça n'est pas plus compliqué que ça.
-----------------
xtrusion Messages postés 51 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 20 mai 2006
27 janv. 2005 à 16:55
Salu!
Voici ma methode pr me connecter a ma base de données access :
======================================
Imports System.Data
Imports System.Data.OleDb
Imports System.Net

Public Class visudocs
Inherits System.Windows.Forms.Form
'declaration de la connection
Private Connection As New OleDb.OleDbConnection
'declaration du DataSet
Private DtSet As New DataSet
'declaration du dataAdapter
Private Adapbiblio As New OleDb.OleDbDataAdapter("select Titre, Date, Public, Support, Thème, Service, Auteur, MaisondEdition, DatedePublication, RevuecontenantlArticle, Emplacement, NombredExemplaires, Résumé from Document order by Titre", Connection)

Private Sub visudocs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'on parametre la chaine de connection pour la base de donnée biblio.mdb
Connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _
"data source= " & Application.StartupPath & "" & "biblio.mdb;"

'rempli le dataset
Adapbiblio.Fill(DtSet, "Document")

'remplissage de la liste avec le dataset
Dim Matable As DataTable
Matable = DtSet.Tables("Document")
Grid_docs.DataSource = Matable
end sub
======================================

Commen faire pr appliker cette premiere source déposée par benouille a mon projet sivouplé?

Je suppose ke tout se passe ici :
**************************
With xsSoldesComptes5.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=MonServeur;Integrated Security=SSPI;" & _
"APP=Microsoft® Query;DATABASE=MaBase;Trusted_Connection=Yes" _
, Destination:=xsSoldesComptes5.Range("A1"))
**************************
Mais commen faire?

C'est vraimen important les gars ! ;o)

Merci davance all !
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
12 janv. 2005 à 16:04
je saurais m'en souvenir si je travaille avec un recordset local ou si pour une raison soudaine, l'utilisateur venait a avoir moins de droits que l'appli (mais avec moi il y a peu de chance: l'applis n'a pas de droits, seuls les droits utilisateurs comptent).

dans les autres cas ou je peux connecter excel à la base de données sans passer par vb, sachant en outre que cela permet une mise a jour ultérieure des données (une requete msquery pouvant être mise a jour), j'utiliserais msquery.

en plus en enlevant les options qui servent a rien, ça va un plus vite malgres tout (évite les entetes de colonnes); meme si je reconnais pour le coup que l'argument du gain de 4 secondes d'écriture de code peut être limite :)

a voir en perf aussi si c'est pareil, ou si c'est plus rapide.
En bref je garde les deux et je ferais selon le besoin ;)
merci pour ta réactivité et tes eclaircissements.

VBnouille
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
12 janv. 2005 à 15:47
Oui c'est générique, quelqu'un a fait une démo à ce sujet récemment :
www.vbfrance.com/code.aspx?ID=28744
En plus il est passé par ADODB, on n'est pas obligé de passer par Access, ca devrait donc marcher aussi en .Net

Je confirme que ca marche bien avec toutes les versions d'Access, je viens de livrer un logiciel avec à un client !

Par contre j'ai déjà rencontré un cas où ca ne marche plus sur un poste : on obtenait l'err n°430 (Requete ADO au lieu de DAO avec Excel 97 ???) et je n'ai jamais pu corriger cela (il faut reinstaller Excel dans ce cas je pense)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
12 janv. 2005 à 15:38
visiblement il y a des soucis avec cette fonction
--------------------------------------------------------------------------------
Posté par : PIERRERAVAUX
le 08/08/2003 12:27:41
Re : Exportation d'un recordset
Répondre à ce message - Imprimer ce message
--------------------------------------------------------------------------------
Bonjour,

J'ai un petit problème avec cette instruction Copyfromrecordset qui fonctionnait très bien avec une base ACCESS97 et qui ne fonctionne plus avec ACCESS2000

Est-ce à cause de cette library Microsoft Excel 9.0 que je n'ai pas sur mon poste.

Merci de votre aide

Cordialement
--------------------------------------------------------------------------------

en fait au dela de la version d'excel je suppose que le probleme vient plus de l'acces aux données. donc vérifie si ta fonction marche encore sur une version plus récente.
A part ça et le fait que cela ne récupère pas l'entete des champs, cela semble être assez simple comme méthode.
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
12 janv. 2005 à 15:23
oula faut que je regarde ça.
c'est un truc générique le copy from recordset ?
ça peut être pas mal à utiliser si la gestion des droits s'avère insuffisante (ie si l'utilisateur n'a pas les droits sur la requete alors que l'applis les a).

je regarderais ça dans l'apres midi.
merci.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
8 janv. 2005 à 09:35
Ok, ça fonctionne très bien, mais je viens de m'apercevoir que sous Access, j'avais déjà une fonction pour exporter une requête directement sous Excel via CopyFromRecordset :

Private Sub CopierRqDansXL(sFeuilleXL$, sRq$, oWkb As Object, oXL As Object)

Dim oSht As Object
Dim intLastCol%, intLastRows%, iCols%
Const conMAX_ROWS = 20000

Dim Rq As DAO.Recordset
On Error GoTo ErrCRqXL
Set Rq = CurrentDb.OpenRecordset(sRq, dbOpenSnapshot)
Set oSht = oWkb.Worksheets(sFeuilleXL)
With oSht
.Activate ' Activer la feuille XL
' Suppression du contenu précédent
intLastCol = .UsedRange.Columns.Count
intLastRows = .UsedRange.Rows.Count
.Range(oXL.Cells(1, 1), oXL.Cells(conMAX_ROWS, intLastCol)).ClearContents
' Recopier le nom des champs de la table ou rq
For iCols = 0 To Rq.Fields.Count - 1
.Cells(1, iCols + 1).Value = Rq.Fields(iCols).Name
Next iCols
' Recopier la table ou rq
.Range("A2").CopyFromRecordset Rq
End With

Fin:
On Error Resume Next ' Au cas où la Rq ne serait pas encore ouverte
Rq.Close
Set oSht = Nothing
Exit Sub

ErrCRqXL:
AfficherMsgErreur Err, "CopierRqDansXL"
Resume Fin

End Sub
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
5 janv. 2005 à 11:14
pour une listbox c'est pas du tout la bonne methode :)
recherche sur ce site, sur msdn ou sur pimpernet, tu devrais trouver assez facilement.
SR2 Messages postés 46 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 25 juillet 2006 1
4 janv. 2005 à 23:27
Ca a l'air super votre truc
mais comment on récupère les résultats dans une liste box par exemple
merci
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
13 déc. 2004 à 16:29
Oui mais attention, pendant qu'il y a une instance d'Excel qui reste plantée en RAM, cela risque d'empecher le fonctionnement normal d'Excel tant que ton appli est ouverte.

Dès que j'ai le temps, je teste ton soft.
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
13 déc. 2004 à 16:01
si! si! cela pose des soucis effectivement: tant que l'appli est lancée, excel considère qu'il a un "appelant" et l'instance reste active meme une fois fermée.

ceci dit une fois l'appli et excel fermés, l'instance est libérée.

c'est aussi pour ça que j'en ouvre pas un nouveau par défaut et que je regarde d'abord si une instance d'excel est pas déja lancée (cf le try catch)

par contre pour ce qui est de marcher, ça marche bien; moi j'ai fait le test avec 65 000 lignes, je t'invite a le faire aussi, tu me diras ce que t'en penses.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
11 déc. 2004 à 11:07
Bien, je voulais justement un truc de ce genre, je vais voir si cela marche.

Dans le même genre, je rappele qu'ODBC permet de lire un fichier Excel quasi-instantanément, je ferais une démo bientot...

Au fait, tu n'as pas de problème avec Excel 9 en dotnet ?
Regarde ici :
XLDOTNET : QUITTER EXCEL SANS LAISSER D'INSTANCE EN RAM
www.vbfrance.com/code.aspx?id=27541
Rejoignez-nous