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

Macros et VBA Excel Discussion :

Creation d'un tableau VBA à partir de l'instruction CopyFromRecordset


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut Creation d'un tableau VBA à partir de l'instruction CopyFromRecordset
    Chéres amies, chers amis

    J'utilise ADO, et une requête SQL pour récupérer des données dans un classeur fermé.

    Pour l'instant la requete s'affiche sur une feuille de calcul:

    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
    Dim Source_1 As ADODB.Connection
        Dim Requete As ADODB.Recordset
        Dim Fichier_1, xSQL As String
        Dim i As Long
        xSQL = "requete ..."
     
        Set Source_1 = New ADODB.Connection
        Source_1.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier_1 & ";Extended Properties=""Excel 12.0;" & "HDR=YES;IMEX=1;"""
     
        Set Requete = New ADODB.Recordset
        Set Requete = Source_1.Execute(xSQL)
     
        For i = 0 To Requete.Fields.Count - 1
            Cells(1, i + 1) = Requete.Fields(i).Name
        Next
     
        Feuil3.Range("A2").CopyFromRecordset Requete
     
        Source_1.Close
     
        Set Source_1 = Nothing
        Set Requete = Nothing
    Cependant, j'aurais besoin de plutot remplir un tableau dont la taille s'ajusterait automatiquement.

    Auriez vous une idée SVP?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Regarde du coté de GetRows.

    Philippe

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si je comprends bien et que tu as au moins une version 2007 et plus, regarde du côté des Données Externes, onglet Données. Tu pourras lier tes données à ce tableau et faire un RefreshAll pour le mettre à jour quand nécessaire.

    Il te faudra créer une connexion selon le besoin.

  4. #4
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Je ne comprend pas bien cette solution, c'est en VBA?

    J'ai utilisé getrows ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Requete As ADODB.Recordset
    ...
    Dim Tab_Query() As Variant
    ...
    Tab_Query = Requete.GetRows(-1)
    j'ai la première colonne qui est est bien dans le tableau puis toutes autres valeurs sont NULL.

    De plus, la premières ligne avec le nom des colonnes sont manquantes.
    Alors lorsque je fais apparaître directement sur une feuilles le résultat avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil3.Range("A2").CopyFromRecordset Requete
    toutes les valeurs sont affiché.
    Auriez vous une idée SVP?

    Merci
    NB: pour afficher les nom des colonnes sur la feuille j'utilise ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To Requete.Fields.Count - 1
            Cells(1, i + 1) = Requete.Fields(i).Name
        Next

Discussions similaires

  1. [MySQL] Creation d'un tableau avancé à partir de dates en mysql
    Par Riri80 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/09/2012, 09h44
  2. [XL-2003] [VBA]remplisage d'un tableau a partir d' une liste
    Par olivier370 dans le forum Excel
    Réponses: 2
    Dernier message: 24/08/2009, 10h13
  3. creation de nouvelles feuilles a partir d'un tableau
    Par firaponte dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/07/2008, 12h05
  4. Réponses: 6
    Dernier message: 31/01/2007, 10h19
  5. Creation d'une table à partir d'un tableau
    Par fafabzh6 dans le forum Access
    Réponses: 10
    Dernier message: 20/09/2006, 17h10

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