IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Requête ADO selection de multiples TABLE_NAME pour Excel


Sujet :

VBA

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Requête ADO selection de multiples TABLE_NAME pour Excel
    Bonjour,

    J'ai le code ci-après qui me permet de lire l'ensemble des cellules nommées, les [I]["named range"/I] donc, et qui fonctionne très bien. Mon problème/souhait serait de ne sélectionner que les cellules nommées/"named range" dont j'ai besoin car les feuilles Excel que je lis contiennent près d'un millier de cellules nommées !

    Bref, même la boucle s'exécute assez rapidement c'est pas très optimisé d'une part et lorsque l'on multiplie cette boucle par autant de fichiers lus cela prend tout de suite un peu de temps (je lis quelque dizaines de fichiers à chaque fois)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Dim Cn As ADODB.Connection
    Dim Rst As ADODB.Recordset, Rsc As ADODB.Recordset
     
    Set Cn = New ADODB.Connection
     
    With Cn
    	.Provider = "MSDASQL.1"
    	.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & Path & "\" & fName & ";ReadOnly=True;"
    	.Open
    End With
     
    Set Rsc = Cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, StrTable, Empty))
     
    While Not Rsc.EOF
     'Debug.Print Right(Rsc!Table_Name, 1), Rsc!Table_Name
     If Right(Rsc!Table_Name, 1) <> "$" Then                   'Exclude Sheet
    		Debug.Print Rsc!Table_Name, Rsc!Column_Name
    		Select Case Rsc!Table_Name
     
    			Case "Champ1"
    				Champ1= Rsc!Column_Name
     
    			Case "Champ2"
    				Champ2 = Rsc!Column_Name
     
    			Case "Champ3"
    				Champ3 = Rsc!Column_Name
     
    			Case "Champ4"
    				Champ4 = Rsc!Column_Name
     
    			End Select
     
    	End If
     
    	Rsc.MoveNext
    Wend
     
    Rsc.Close
    Set Rsc = Nothing
    Cn.Close
    Set Cn = Nothing
    Idéalement il faudrait que je puisse faire une requête du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSQL="Select Table_Name, Column_Name where Table_Name="Champ1" and Table_Name="Champ2" and Table_Name="Champ3" and Table_Name="Champ4""
    Mais est-ce la bonne solution et si tel est le cas je ne sais pas trop comment m'y prendre au niveau syntaxique est-ce un truc du genre

    Merci de votre aide car j'ai cherché de l'aide via les moteurs de recherche sans réellement trouver de solution

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Requête ADO selection de multiples TABLE_NAME pour Excel
    Je viens de trouver une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set Cn = New ADODB.Connection
    Set Rst = New ADODB.Recordset
     
    CxString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier& ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1;"""
     
    Cn.Open CxString
    Rst.Open "Select * from [Champ1], [Champ2]", Cn, adOpenStatic
    Debug.Print Rst.Fields.Count, Rst.Fields.Item(0), Rst.Fields.Item(1)
    Je ne sais pas si c'est la manière la plus élégante, mais elle a le mérite de répondre à mon besoin !v

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Requête SQL Select / Aucune valeur donnée pour un ou plusieurs des paramètres requis
    Par StarLord77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2015, 12h52
  2. [VBA pour Excel] Différence entre activate et select
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2008, 17h20
  3. [SQL] Requête SELECT avec un paramètre pour choisir une colonne
    Par svergeylen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/12/2007, 17h36
  4. selection filtrée tableau vba pour Excel
    Par dbgdbg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2007, 14h56
  5. Requête avec select multiple
    Par dams580 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/10/2007, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo