régulièrement y a des codes qui tombent qui montrent comment remplir un tableau excel case par case, mais des qu'il y a quelques milliers de lignes c'est lent.
Le code ouvre l'aplication excel en cours ou une nouvelle.
Il appelle la proc sur le serveur
Il renvoie les milliers de lignes et affiche le tout en moins d'une seconde.
Le code est totalement accesible par des débutants.
Enjoy It
[b]VBenouille.
/b
[i]ps: je vous mets juste le code de la fonction, car je le tire directement de mon projet pro et je l'adapte a peine (je change juste les noms des variables)
/i
Source / Exemple :
Private Sub ExportExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExportXls.Click
'wait'n see
Me.Cursor = System.Windows.Forms.Cursors.WaitCursor
'ouverture d'excel
Dim xlApp As Excel.Application
Try
xlApp = GetObject(, "excel.application")
Catch
xlApp = New Excel.Application
Finally
xlApp.Visible = False
End Try
'ajout d'une page et sélection
Dim xsSoldesComptes5 As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet
'requete serveur
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"))
.CommandText = "MaProcStockée" ' ou la requete select * from machin si vous n'avez pas de proc
.Name = "SoldesComptes5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh(BackgroundQuery:=False)
End With
' affichage
Me.Cursor = System.Windows.Forms.Cursors.Default
xlApp.Visible = True
End Sub
Conclusion :
demande d'ajouter la librairie Microsoft excel 9.
la fonction réagit à un clic sur un menu qui s'appelle mnuExportExcel, il faut adapter la déclaration à votre projet de test.
les droits d'acces à la base sont gérés par windows (sspi), il faut donc que l'utilistateur aie les droits de faire la requête ou d'éxécuter la proc stockée comme moi.
le code est en prod chez moi.
dites moi si vous voyez des défauts ou si vous avez des remarques.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.