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 :

Inscrire le résultat d'une requête dans une plage de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 25
    Par défaut Inscrire le résultat d'une requête dans une plage de cellules
    Bonjour,

    Depuis quelques temps, je recherche à inscrire le résultat d'une requête SQL dans une plage de cellules, mais en vain.

    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
    Private Sub Connect()
        Dim oConn As New ADODB.Connection
        Dim rst As New ADODB.Recordset
        Dim requete As Object
        Dim coll_i As Integer
     
        Set oConn = New ADODB.Connection
        oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};" & _
            "SERVER=localhost;" & _
            "DATABASE=test;" & _
            "USER=root;" & _
            "PASSWORD=;" & _
            "Option=3"
     
        texte_SQL = "SELECT * FROM test"
        Set requete = CreateObject("ADODB.Recordset")
        Set requete = oConn.Execute(texte_SQL)
     
    End Sub
    J'ai essayé ce bout de code trouvé sur le net, mais rien n'y fait. Je n'ai aucun résultat qui s'affiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("Feuil1").Range("A1").CopyFromRecordset requete
    Le but recherché est d'avoir au final le nom des colonnes et les données

    Auriez-vous une solution ?


    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 187
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si c'est une requête sur une base de données Access, cette contribution t'aidera peut-être Fonction qui renvoie une table contenant résultat d'une requête SQL sur une base de données Acces
    Il suffit de passer la requête SQL en paramètre à la fonction qui renvoie une table contenant les enregistrements.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 25
    Par défaut
    Bonjour,

    Je suis passé par l'ODBC et sa fonctionne

    Merci de ton aide

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 187
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Super, l'important est d'avoir résolu son problème.
    Pour rester dans l'esprit du forum, ce serait très sympathique de publier ta solution.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 25
    Par défaut
    Coucou

    Toutes mes excuses, je me rend très rarement sur ce forum
    Je vous posterais ma solution permettant de récupérer le contenue d'une table aussi bien sur Hyperfile que sur SQL, mais demain

  6. #6
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 25
    Par défaut
    Pour se connecter à une base hyperfile et écrire le résultat d'une requête SELECT dans une plage de cellules, il vous faut d'abord installer le pilote ODBC que vous trouverez sur ici.
    Il vous faut également le nom de votre DSN (Configurer les sources de données ODBC)

    De mémoire, il n'y a aucune référence à importer.

    Pour MySQL et Oracle c'est la même chose, il vous suffit d'installer un connecteur :
    http://dev.mysql.com/downloads/connector/odbc/
    http://www.oracle.com/technetwork/de...ads/index.html

    VBA :
    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
     
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "ODBC;DSN=NOM_DSN;", Destination:=Range("$A$1")).QueryTable
            .CommandText = "SELECT * FROMtable"
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
    End With
    VB.NET :
    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
     
    Dim cn As OdbcConnection
    cn = New OdbcConnection("dsn=NOM_DSN;uid=user;pwd=password;")
     
    Dim cmd As OdbcCommand = New OdbcCommand("SELECT * FROM table", cn)
    cn.Open()
     
    Dim myReader As OdbcDataReader = cmd.ExecuteReader()
     
    If myReader.HasRows Then
          Do While myReader.Read()
    'Boucle lignes par lignes
                  msgbox var.LISTE_BCLI.Add(myReader.GetString(myReader.GetOrdinal("Nom_colonne")), 
          loop
    End if

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

Discussions similaires

  1. Réutiliser des données d'une requête dans une requête
    Par mims1664 dans le forum Requêtes
    Réponses: 12
    Dernier message: 06/02/2009, 15h12
  2. Résultat d'un champ d'une requête dans une variable
    Par PsychedeChed dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 13h50
  3. Réponses: 4
    Dernier message: 02/07/2008, 12h32
  4. Réponses: 2
    Dernier message: 02/06/2006, 12h26
  5. Réponses: 4
    Dernier message: 01/12/2005, 15h36

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