Afficher un message
Vieux 09/07/2005, 18h19   #9 (permalink)
_Thierry
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 099
Par défaut Re:ADO Lecture Feuille Classeur Précise (Index 2)

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
_Thierry est déconnecté   Réponse avec citation