Re Bonjour Michel
Je suis en train de me documenter sur ADOX, mais d'ores et déjà je remarque une anomalie dans le fonctionnement si j'ai des champs nommés dans le Classeur Source... En effet on dirait que celà prime plutôt que les noms de Feuilles...
Ensuite j'aii un autre souci à venir dans l'avenir !!! lol
En fait je dois donc scanner la Plage de Cellules 'R19:U29' de chaque Feuilles 'Calculs' dans 90 Classeurs...
Or si j'utilise 'SELECT * FROM [' & Feuille & '];' qui donc doit être sensé être la Feuille (quand j'y arriverai lol) je ne vois pas comment m'en sortir pour compléter la requête SQL pour ne pointer sur la Range R19:U29...
En fait maintenant (sans préciser de Feuille) je passe ma plage 'RangeSource' dans la Commande (ADOCommand) SQL 'SELECT * from' Directement (Sans ADOX) comme ceci :
Citation:
Sub TheADOReader()
Dim XLFile AsString
Dim RangeSource AsString
Dim ADOConnection As ADODB.Connection
Dim ADOCommand As ADODB.Command
Dim ADORecordSet As ADODB.Recordset
XLFile = ThisWorkbook.Path & 'MyTestFileSource.xls'
RangeSource = 'R19:U29'
Set ADOConnection = New ADODB.Connection
ADOConnection.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & XLFile & ';' & _
'Extended Properties=''Excel 8.0;HDR=No;'';'
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = ADOConnection
.CommandText = 'SELECT * from [' & RangeSource & ']'
EndWith
Set ADORecordSet = New ADODB.Recordset
ADORecordSet.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set ADORecordSet = ADOConnection.Execute('[' & RangeSource & ']')
With Sheets('ADOCollector')
.Range('A' & .Range('A65536').End(xlUp).Row).CopyFromRecordset ADORecordSet
EndWith
ADORecordSet.Close
ADOConnection.Close
EndSub
|
En fait tout va pour le meilleur des mondes, si la feuille qui contient la Plage 'R19:U29' est bien située en Index 1 du Classeur 'MyTestFileSource.xls'... Mais sinon NON !!!
Et pour ADOX, j'ai des champs nommée en prime dans le Classeur Source ... Alors je n'en vois pas la Fin...
Mais bon je cherche encre !!!
@+Thierry