Bonjour à tous,

Je travaille actuellement sur plusieurs fichiers Excel, récupérant des données à droite et à gauche, principalement par requêtes SQL, pour éviter d'ouvrir les fichiers Excel. Voici en gros un modèle de mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim conn as New ADODB.Connection
Dim rs as new Recordset
 
With conn
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .ConnectionString = "Data Source=" & chemin_fichier_excel_2007 & ";" & _
                      "Extended Properties=""Excel 12.0;HDR=Yes;"""
  .Open
End With
 
With rs
  .ActiveConnection = conn
  .CursorType = adOpenForwardOnly
End With
 
requete_sql = "SELECT * FROM MaTable"
rs.Open requete_sql
ActiveSheet.Range("A1").CopyFromRecordset rs
rs.Close
Cela fonctionne parfaitement ... tant que mes fichiers Excel ont une unique ligne de titres (ou aucune en passant "HDR=No").

En revanche, ces fichiers Excel ayant d'autres utilités que de servir de base de données, il arrive qu'ils aient la structure de titres suivante (voir pire) :
|    TENSION    |
| V_MIN | V_MAX |
|   0   |   5   |
...
Et évidemment, dans ce cas, ça ne fonctionne pas, puisque les seules colonnes retenues pour les requêtes sont celles ayant un titre fourni en 1ère ligne.

Pour le moment, les 2 solutions que j'ai mis en oeuvre sont :
- Copier les données dans un fichier temporaire, réaliser mes requêtes dessus, puis détruire le fichier ;
- Utiliser une tout autre méthode (récupération des données dans un tableau, ajout dans une collection avec une clé) si le seul intérêt est de copier des infos à partir d'une clé donnée.

J'ai appris récemment qu'en définissant des zones d'impression par exemple, de nouvelles tables sont "créées" dans le fichier Excel (elles apparaissent dans la liste des tables). Mais là, je ne maitrise plus du tout le sujet : je ne sais pas dans quelle mesure on peut y accéder, ni sous quelles conditions.

Ma question est donc la suivante :
Est-il possible d'exécuter, sans certaines conditions, des requêtes sur des morceaux d'une feuille de données ?
Merci d'avance pour toute information.
Et n'hésitez pas aussi à me préciser aussi si cela vous semble impossible.

Cela n'inspire personne ?

Notez que si vous savez faire ce genre de chose à partir des fonctions Excel, je suis preneur aussi. Je me débrouillerai ensuite avec l'enregistreur de Macro.

Une idée ? Quelqu'un ?