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 :

Resultat requete SQL a afficher dans Excel [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Resultat requete SQL a afficher dans Excel
    Bonjour,
    Je suis un vrai débutant en VBA Excel et j'ai besoin d'un conseil.
    Je viens de faire une fenetre en VBA qui me demande certains variable pour une requete SQL.
    La connection a la base de donnée via ma source de donnee ODBC fonctionne bien. Si je fais une requête simple avec un seul résultat et que je l'affiche dans une MsgBox je n'ai pas de problème.
    Là où j'en ai un (de problème ) c'est quand ma requête renvoit 6000 resultats et que je veux qu'ils s'affichent dans les cellules Excel.
    J'ai bien noté que je pouvais utiliser la fonction Cells mais je me demandais :
    - Dois je faire une boucle pour afficher tous mes resultats dans Excel cellule par cellule sachant que ma requete interroge 17 champs dans ma table ?
    - Existe t il une fonction indiquant a Excel de m'afficher tous les resultats ?

    Merci pour votre aide

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    une méthode est proposée dans la ici

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Je vous remercie pour votre réponse. Mais je vous rapelle que je débute en VBA et ma méthode pour me obtenir les infos de ma base de donnée est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim connection As ADODB.connection
        Dim record As ADODB.Recordset
     
        Set connection = New ADODB.connection
        connection.Open "DSN=NOMDEMONDSN;" & _
               "Uid=UTILISATEUR;" & _
               "Pwd=MOT DE PASSE"
     
    Set record = connection.Execute("MA REQUETE SQL")
    et quand j'écris Range("A1").CopyFromRecordset record comme dans la FAQ j'obtient un message d'erreur. Auriez vous une piste svp ?
    Merci

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Un exemple:
    sur c:\ j'ai :
    - une base que j'appelle "Base test.mdb"
    - dans cette base une table "Table1".

    je copie tous les enregistrements de cette table dans la feuille nommée "Feuil1" de mon classeur à partir de la cellule A1.
    code :
    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
    Sub TransfertAccess_Vers_Excel()
        Dim AccessCnn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim maBase As String
     
        'Chemin de la base Access
        maBase = "C:\Base test.mdb"
     
     
        'Connection à la base Access
        Set AccessCnn = New ADODB.Connection
        AccessCnn.Open "provider=microsoft.jet.oledb.4.0; data source=" & maBase
     
        'Transfert les données d'Access vers Excel
        Set rs = AccessCnn.Execute("SELECT *  FROM Table1")
     
        Sheets("Feuil1").Range("A1").CopyFromRecordset rs
     
        AccessCnn.Close
        Set AccessCnn = Nothing
    End Sub
    et j'ai tous les enregistrements dans "Feuil1".

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Merci pour votre aide mais ça ne fonctionne pas avec cette méthode.
    Vous trouverez ci joint la copie du message d'erreur. Pour information je suis sous windows 7 et Excel 2007 la base de données a laquelle je me connecte est une base Omnis via le pilote ODBC officiel.
    Images attachées Images attachées  

  6. #6
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    la base de données a laquelle je me connecte est une base Omnis
    tu l'aurais dis dès le départ on aurait évité de tourner en rond .
    Je ne connais pas les bases Omnis, et le code que je t'ai donné fonctionne avec une base Access.
    Désolé de ne pouvoir t'aider plus. Bonne soirée.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Je viens de trouver la solution. Si un jour quelqu'un d'autre a le même soucis ça pourrait faire plaisir :

    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 connection As ADODB.connection
        Dim record As ADODB.Recordset
     
        Set connection = New ADODB.connection
        connection.Open "DSN=NOMDEMASOURCEODBC;" & _
               "Uid=NOMDEMONUTILISATEUR;" & _
               "Pwd=MONMOTDEPASSE"
     
       Set record = New ADODB.Recordset
     
     
       Set record = connection.Execute("SELECT FROM WHERE")
     
    Cells(1, 1) =  ENTETE DE MA PREMIERE COLONNE
     
    i = 2
        While Not record.EOF
            ActiveSheet.Cells(i, 1).Value = record("NOM DU CHAMP DANS LE SELECT")
    i = i + 1
            record.MoveNext
        Wend
        record.Close
    Merci pour votre aide rvtoulon

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/09/2011, 18h24
  2. vba: afficher resultat requete sql
    Par ToTo develop dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2008, 13h08
  3. Resultat requete SQL dans SousFormulaire
    Par nabalilu dans le forum VBA Access
    Réponses: 6
    Dernier message: 03/06/2008, 16h21
  4. Resultat requete SQL dans MsgBox
    Par PhRey dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/01/2007, 11h03
  5. resultat requete SQL d'un select dans variable vb
    Par seb_06 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 11/10/2004, 16h29

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