Fonction find dans un claseur fermé (Requête OLEDB)

Vorens

XLDnaute Occasionnel
Bonjour au forum !


Je suis en pleine élaboration d'une solution de traitement de données basé sur des fichier Excel.

Pour cela j'utilise des requête SQL afin de récupérer les données dans les différents classeur fermé que je manipule.

Le problème est que je ne parviens pas a trouver un exemple pour effectuer une fonction FIND dans un classeur fermé.

Je cherche à déterminer l’existence d'une en tête de colonne et d'en récupérer l'adresse.

Je répond de suite à la question qui tue et que j'ai vu sur les post similaire :"Pourquoi tu ouvre pas simplement tes classeur pour les manipuler"

Tout simplement pour des questions de performance. mon code manipule une cinquantaine de fichier et chaque requête récurer des dizaine de millier de lignes.

Voici un exemple de mon code pour la récupération des données par requêtes SQL. Ce que je recherche donc est la commande permettant d'effectuer un Find sur un classeur fermer dans l'objectif de déterminer la position de l'information que je souhaite extraire de mon fichier.

Code:
Sub CommandButton1_click()


    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset

'Adresse de la cible

    Dim TargetCol As String
    
    Col = NumCol.Text



'Spécification de la feuille et du range à récupérer

    Feuille = "DB1$"
    Cellule = Col & "1" & ":" & Col & "10"


'Définit le classeur fermé servant de base de données

    Fichier = "C:\Users\Bruno\SkyDrive\Documents\Excel\Solution & Exemple VBA\Requête SQL dans Workbook et écriture dans un second Workbook\EA_Catalog_VPApplicationComponant.xlsx"
    Fichier2 = "C:\Users\Bruno\SkyDrive\Documents\Excel\Solution & Exemple VBA\Requête SQL dans Workbook et écriture dans un second Workbook\EA Catalog.xlsx"

'Nom de la feuille dans le classeur fermé

    NomFeuille = "DB1"
    Set Cn = New ADODB.Connection

'--- Connexion classeur 1 ---

    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
        & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
'-----------------
'
'... la requête ...



    Set Rst = Cn.Execute("[" & Feuille & Cellule & "]")
    
    
    
  '--- Connexion classeur 2 ---

    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
        & Fichier2 & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
'-----------------
    
    
    
    
    
    Range("A2").CopyFromRecordset Rst

'--- Fermeture connexion ---

    Cn.Close
    Set Cn = Nothing

End Sub



End Sub

Je fais appel au savoir infinis des membres les plus sages du forum pour parfaire mes connaissances en VBA et particulièrement le domaine des requêtes OLEDB.

Par avec merci pour votre aide


Meilleures salutations

Vorens
 

Vorens

XLDnaute Occasionnel
Re : Fonction find dans un claseur fermé (Requête OLEDB)

Salut Regueiro

Oui de Yverdon en Suisse. J'ai survolé ton fil mais il présente une question initiale résolue, plus pas mal de chose mais concrètement, ton problème à présent concerne la connections sur un classeur fermé ?
 

tototiti2008

XLDnaute Barbatruc
Re : Fonction find dans un claseur fermé (Requête OLEDB)

Bonjour Regueiro,
Re,

Comment à tu fait (et surtout ou tu as trouver la doc) pour savoir qu'il faut mettre un REQ$ pour spécifier le nom de l'en-tête de colonne car j'ai rien vu de tel durant mes recherche.

Je dois révéler mes secrets alors ? (même si ça a été un peu poussif ;))
Alors le REQ$ c'est moi qui l'ai ajouté, en SQL c'est un alias pour remplacer le nom complet de la "table" dans laquelle tu cherches tes données
en gros, j'ai mis l'alias por éviter de répéter
`" & fichier2 & "`.`" & NomFeuille & "`
avant chaque champ

Mais pour voir comment écrire la requête (et d'ailleurs il crée un alias lui aussi), le plus simple est :
d'enregistrer une macro
faire des données externes vers ton fichier Catalogue_1.xlsx
arrêter l'enregistrement de la macro
regarder la requête SQL générée dans le VBA quand tu as fait tes données externes (QueryTable)
 

Vorens

XLDnaute Occasionnel
Re : Fonction find dans un claseur fermé (Requête OLEDB)

Re,

Merci Toto pour ses informations. J'ai pas assez le réflexe de l'enregistreur de macro :p.
Pour le Req tu m'apprend un new truc je connaissais pas :D


Encore merci a toi !

Meilleures salutations
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35