Salut :)
J'ai déjà fait des truc dans le genre (mais en VB.NET) je te post ces fonctions (TRÈS lentes avec Oracle par contre).
Public Enum EnIn_TypeDeDonnees As Integer
TypeTexte = 1
TypeDate = 2
TypeReal = 3
TypeEntier = 4
End Enum
Public Function ListeTable() As String()
Dim test As New ADODB.Connection
Dim rr As ADODB.Recordset
Dim RetourShema As String
Dim SplitRetourShema() As String
Dim Retour() As String
test.ConnectionString = Connection.ConnectionString
test.Mode = ADODB.ConnectModeEnum.adModeRead
test.Open()
rr = test.OpenSchema(ADODB.SchemaEnum.adSchemaTables)
If rr.EOF Then
Return Nothing
Else
RetourShema = rr.GetString(ADODB.StringFormatEnum.adClipString, , vbTab, vbCrLf, "NULL") ' rr.GetString(ADODB.StringFormatEnum.adClipString, , "|", vbCrLf, "NULL")
SplitRetourShema = Split(RetourShema, vbCrLf)
ReDim Retour(0 To UBound(SplitRetourShema) - 1)
For Compteur As Int32 = 0 To UBound(SplitRetourShema) - 1
Retour(Compteur) = Split(SplitRetourShema(Compteur), vbTab)(2)
Next
Return Retour
End If
End Function
Public Function ListeClonnes(ByVal NomTable As String) As String()
Try
Dim TableShema As New DataTable()
Dim EtatInitial As ConnectionState
Dim Retour As String()
EtatInitial = Connection.State
If EtatInitial <> ConnectionState.Open Then
Connection.Open()
End If
Select Case True
Case TypeOf Connection Is System.Data.Odbc.OdbcConnection
Dim Adapteur As System.Data.Odbc.OdbcDataAdapter
Adapteur = New System.Data.Odbc.OdbcDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
Case TypeOf Connection Is System.Data.OleDb.OleDbConnection
Dim Adapteur As System.Data.OleDb.OleDbDataAdapter
Adapteur = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
Case TypeOf Connection Is System.Data.SqlClient.SqlConnection
Dim Adapteur As System.Data.SqlClient.SqlDataAdapter
Adapteur = New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
End Select
ReDim Retour(0 To TableShema.Columns.Count - 1)
For Compteur As Int32 = 0 To TableShema.Columns.Count - 1
Retour(Compteur) = TableShema.Columns(Compteur).ColumnName
Next
If EtatInitial <> ConnectionState.Open Then
Connection.Close()
End If
Return Retour
Catch ex As Exception
Return Nothing
End Try
End Function
Public Function ListeTypeClonnes(ByVal NomTable As String) As ClassSourcesDeDonneesNew.Cl_DefinitionEnumConstStructFoncPartager.EnIn_TypeDeDonnees()
Try
Dim TableShema As New DataTable()
Dim EtatInitial As ConnectionState
Dim Retour As ClassSourcesDeDonneesNew.Cl_DefinitionEnumConstStructFoncPartager.EnIn_TypeDeDonnees()
EtatInitial = Connection.State
If EtatInitial <> ConnectionState.Open Then
Connection.Open()
End If
Select Case True
Case TypeOf Connection Is System.Data.Odbc.OdbcConnection
Dim Adapteur As System.Data.Odbc.OdbcDataAdapter
Adapteur = New System.Data.Odbc.OdbcDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
Case TypeOf Connection Is System.Data.OleDb.OleDbConnection
Dim Adapteur As System.Data.OleDb.OleDbDataAdapter
Adapteur = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
Case TypeOf Connection Is System.Data.SqlClient.SqlConnection
Dim Adapteur As System.Data.SqlClient.SqlDataAdapter
Adapteur = New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM """ & NomTable & """ WHERE 0 = 1;", Connection)
Adapteur.Fill(TableShema)
End Select
ReDim Retour(0 To TableShema.Columns.Count - 1)
For Compteur As Int32 = 0 To TableShema.Columns.Count - 1
Debug.Print(TableShema.Columns(Compteur).ColumnName & "|" & TableShema.Columns(Compteur).DataType.ToString())
Select Case TableShema.Columns(Compteur).DataType.ToString()
Case "System.String"
Retour(Compteur) = EnIn_TypeDeDonnees.TypeTexte
Case "System.Decimal"
Retour(Compteur) = EnIn_TypeDeDonnees.TypeEntier
Case "System.Single"
Retour(Compteur) = EnIn_TypeDeDonnees.TypeReal
Case "System.Double"
Retour(Compteur) = EnIn_TypeDeDonnees.TypeReal
Case "System.DateTime"
Retour(Compteur) = EnIn_TypeDeDonnees.TypeDate
End Select
Next
If EtatInitial <> ConnectionState.Open Then
Connection.Close()
End If
Return Retour
Catch ex As Exception
Return Nothing
End Try
End Function
Bonne prog :)
Amicalement 
Pensez "Réponse acceptée"