LIRE EXCEL AVEC LE DRIVER ODBC

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 4 août 2009 à 22:52
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018 - 11 août 2009 à 10:23
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/50402-lire-excel-avec-le-driver-odbc

cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
11 août 2009 à 10:23
Voir aussi : XLDB : Une base de données Excel via ODBC
www.vbfrance.com/code.aspx?id=29468
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
4 août 2009 à 22:52
Bonjour,

Voici quelques conseils.

1 --> Les modules de classes ne devraient plus être utilisé. Passer par les classes à la place.
2 --> La connexion au fichier Excel devrait être fermer voir disposé car c'est un objet COM derrière.
3 --> Pour la gestion du nom de fichier utiliser les focntions .net du namespace IO à la place de faire des opérations sur les strings.
(et si possible utiliser des opérations VB.NET et non VB6)

4 --> Qu'est que ce code fait ?? (commentaire = 0 et imperformant au possible)
# Try
# row.Item("Colonne" & i) = myReader.Item(i) ''MsgBox(myReader.Item(i))
# Catch ex As Exception
# column = New DataColumn()
# column.DataType = System.Type.GetType("System.String")
# column.ColumnName = "Colonne" & i
# datatable.Columns.Add(column)
# row.Item("Colonne" & i) = myReader.Item(i)
# End Try

La programmation par try catch est tres gourmande

Utiliser à la place

If (datatable.Contains("Colonne" & i) then
affectation
else
'Ajout de la datacolonne
end if

5 --> Utiliser
If (not myReader.Item(i).Equals(DbNull.Value) then
A la place de qui n'est pas objet
If IsDBNull(myReader.Item(i)) = False Then

6 --> Commentaire = 0
7 --> Renommer les élements = 0

8 --> Pourquoi ne pas utiliser le nom du fields.

Voila pour le moment.