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 :

Importer un recordset (access) dans un tableau VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut Importer un recordset (access) dans un tableau VBA
    Bonsoir,

    Cela fait déjà plusieurs jours que je cherche la solution à mon problème.
    Je cherche à un importer des données d'une database access directement dans vba sans passer par excel (sans utiliser une feuille, cellules etc dans mon code).
    J'ai essayé de 1000 façons différentes, je finis toujours par tomber sur une erreur de compilation (incompatibilité de type).

    Même en reprenant le tuto présent sur le site ici (http://silkyroad.developpez.com/vba/tableaux/ tout en bas), j'ai cette foutue erreur d'incompatibilité à ce niveau là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Redimensionne le tableau en fonction du nombre de champs et d'enregistrements contenu dans le recordset.
    ReDim Tbl(Rs.RecordCount - 1, Rs.Fields.Count)
    Je débute tout juste sur vba et j'avoue en pas comprendre ou est le hic. Si quelqu'un pouvait m'expliquer si c’est la bonne méthode ou bien qu'est ce que je dois changer dans le code svp.

    Merci d'avance,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je te proposes une 1001 façon!

    Ceci dit je ne vois pas l'intérêt de ne pas traiter ton problème par requête! Passer par un table quel intérêt?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With CreateObject("ADODB.Connection")
                .Open("Provider=microsoft.ace.oledb.12.0;Data Source=C:\Users\...\Documents\Database3.accdb;")
    Tableau =application.transpose(.execute("select * From [table]").getrows)
    .close
            End With
    Dernière modification par Invité ; 13/02/2018 à 09h40.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour le code! Il marche. Juste un souci, pour une raison que j'ignore les données ne sont pas transposées.
    Quand je les affiche dans un userform via un ListBox1.List() = parameter , elles s'affichent sous une matrice (4x1) alors qu'à l'origine c'est du (1x4) dans la database.

    J'ai essayé aussi sans le transpose(), même résultat, du coup le problème vient surement du Listebox1.list finalement!


    Je vais devoir traiter ces données pour des calculs et donc il est préférable pour moi de les stocker dans un table. Problème, je n'arrive pas à faire ne sorte que mon tableau prenne les valeurs du recordset.
    J'ai longtemps essayé quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table = rstData.GetRows(rstData.RecordCount)
    Avec rstData le recordset mais arrivé à la ligne ci-dessus j'ai une erreur (incompatibilité de type).

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut
    Bonjour,

    J'ai réussi à importer d'autres tables d' Access, la transpose fonctionne bien.
    Il y a juste pour le premier tableau format (1 ligne x 4 colonnes) que ça en fonctionne pas.
    Le listbox persiste à me l'afficher en format (4 lignes x 1 colonne).

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut
    Bonjour,

    Autre problème que je rencontre. J'essaye d'affecter les valeur du tableau à un listbox via une boucle (afin de seulement prendre les x premières lignes du tableau).
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Dim i as Integer
            For i = 1 To 10
               ListBox1.List(i - 1, 1) = portfolio(i, 1)
            Next
    J'ai le code d'erreur 381 "impossible de définir la propriété list; Index de table de propriété non valide"
    J'ai aussi essayé avec .List(i, 1), même résultat.
    Pourtant la première ligne du listbox c'est bien soit 0 soit 1 non?

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/08/2012, 09h11
  2. Importer une table access dans un tableau 2 dimenssion
    Par christopher07 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2007, 19h47
  3. Duplication dans un tableau (VBA et MySQL)
    Par xianxian620 dans le forum Access
    Réponses: 5
    Dernier message: 19/02/2007, 14h06
  4. Importer des données Access dans Excel
    Par petitloup71 dans le forum Access
    Réponses: 7
    Dernier message: 30/08/2006, 15h48
  5. [VBA Excel] Importer des tables Access dans Excel
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2005, 12h44

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