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 :

import d'une requête sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut import d'une requête sous excel
    Bonjour à tous,
    J'ai besoin de récupérer sous excel des données se trouvant sur aramis mais j'ai une erreur d'automation.
    Je ne suis pas encore très expérimenté en programmation, merci de votre aide

    Le 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub récup()
     
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
     
    Dim rst As ADODB.Recordset
    With conn
        .Provider = "SQLOLEDB.1;Password=MonMotDePasse;Persist Security Info=True;User ID=MonID;Initial Catalog=aramis;Data Source=agirsrvn"
        .Open
    End With
     
    Set rst = New ADODB.Recordset
     
    Dim requete1 As String
    Dim entrées As String
    Dim sorties As String
    Dim Date_deb As Date
    Dim Date_fin As Date
    Dim antenne As Integer
    Dim ligne As Integer
    Dim s As String
    Dim numchamp As Integer
    Date_deb = Range("date_deb").Value
    Date_fin = Range("date_fin").Value
    antenne = Range("antenne").Value
     
    requete1 = "SELECT dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée" & _
    "FROM dbo_appareils INNER JOIN dbo_mouvementappareils ON dbo_appareils.No_Appareil = dbo_mouvementappareils.No_Appareil" & _
    "WHERE (((dbo_appareils.Famille) <> '6-C' or (dbo_appareils.Famille) <> '6-P'))" & _
    "GROUP BY dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée, dbo_appareils.No_Appareil" & _
    "HAVING (((dbo_mouvementappareils.Date_Validation) > '" & Date_deb & "' And (dbo_mouvementappareils.Date_Validation) < '" & Date_fin & "') And ((dbo_mouvementappareils.Point_Arrivée) = " & antenne & ")) Or (((dbo_mouvementappareils.Point_Origine) = " & antenne & ") And ((dbo_mouvementappareils.Date_Validation) > '" & Date_deb & "' And (dbo_mouvementappareils.Date_Validation) < '" & Date_fin & "'))" & _
    "ORDER BY dbo_appareils.Modèle, dbo_mouvementappareils.Date_Validation;"
     
    ligne = 1
    rst.Open requete1, conn  'à prioris l'erreur vient d'ici
    rst.MoveFirst
    Do Until rst.EOF
       For numchamp = 0 To 4
        s = rst(numchamp)
        Sheets("présentation").Cells(ligne, 3 + numchamp ) = s
       Next numchamp
       ligne = ligne + 1
       rst.MoveNext
    Loop
    rst.Close
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je pense que ton pb vient de la chaîne SQL.
    • Tu as 5 champs de regroupement pour 4 sélectionnés
    • Il manque un espace devant FROM, WHERE, ...
    • Les dates ne semblent pas au bon format
    • ...?
    Je te conseille d'éditer ta variable requete1 pour mieux voir les pb.


    Cordialement,

    PGZ

    Bonjour.

    Les dates s'écrivent comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "... [dbo_mouvementappareils.Date_Validation] > #" & Format(Date_deb,"mm/dd/yyyy") & "#..."
    Si ta requête ne fonctionne pas, je te recommande de donner ici la chaîne de caractères de la variable requete1. La typologie des erreurs possibles est très variée.

    Cordialement,

    PGZ

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,

    Citation Envoyé par pgz Voir le message
    je te recommande de donner ici la chaîne de caractères de la variable requete1. La typologie des erreurs possibles est très variée.

    PGZ
    Est-ce ça dont tu parles ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    requete1 = "SELECT dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée" & _
    " FROM dbo_appareils INNER JOIN dbo_mouvementappareils ON dbo_appareils.No_Appareil = dbo_mouvementappareils.No_Appareil" & _
    " WHERE (((dbo_appareils.Famille) <> '6-C' or (dbo_appareils.Famille) <> '6-P'))" & _
    " GROUP BY dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée" & _
    " HAVING (((dbo_mouvementappareils.Date_Validation) > #" & Format(Date_deb, "mm/dd/yyyy") & "# And (dbo_mouvementappareils.Date_Validation) < #" & Format(Date_fin, "mm/dd/yyyy") & "#) And ((dbo_mouvementappareils.Point_Arrivée) = " & antenne & ")) Or (((dbo_mouvementappareils.Point_Origine) = " & antenne & ") And ((dbo_mouvementappareils.Date_Validation) > #" & Format(Date_deb, "mm/dd/yyyy") & "# And (dbo_mouvementappareils.Date_Validation) < #" & Format(Date_fin, "mm/dd/yyyy") & "#))" & _
    " ORDER BY dbo_appareils.Modèle, dbo_mouvementappareils.Date_Validation;"
    Cordialement

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Non ce n'est pas cela.

    Dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requete1 = ...
    Debug.Print requete1
    A chaque exécution du code, la chaîne de caractère créée dans requête1 par la ligne d'instruction que tu donnes sera copiée dans la fenêtre d'exécution.

    Si tu ne sais pas ce qu'est la fenêtre d'exécution, tu devrais lire un cours sur l'éditeur VB. Si tu n'as pas le temps : sous éditeur VB, menu Affichage, tu cliques la commande "fenêtre d'exécution".


    Cordialement,

    PGZ

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,
    voilà ce que j'obtiens dans la fenêtre d'execution :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée FROM dbo_appareils INNER JOIN dbo_mouvementappareils ON dbo_appareils.No_Appareil = dbo_mouvementappareils.No_Appareil WHERE (((dbo_appareils.Famille) <> '6-C' or (dbo_appareils.Famille) <> '6-P')) GROUP BY dbo_appareils.Modèle, dbo_mouvementappareils.Point_Origine, dbo_mouvementappareils.Date_Validation, dbo_mouvementappareils.Point_Arrivée HAVING (((dbo_mouvementappareils.Date_Validation) > #03/01/2005# And (dbo_mouvementappareils.Date_Validation) < #01/01/2006#) And ((dbo_mouvementappareils.Point_Arrivée) = 148)) Or (((dbo_mouvementappareils.Point_Origine) = 148) And ((dbo_mouvementappareils.Date_Validation) > #03/01/2005# And (dbo_mouvementappareils.Date_Validation) < #01/01/2006#)) ORDER BY dbo_appareils.Modèle, dbo_mouvementappareils.Date_Validation;

    cordialement

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    A mon avis, il y a qq problèmes de placement de parenthèses. Pour mettre ta chaîne au point, je te conseille de procéder ainsi:
    • Enlever les clauses WHERE et HAVING
    • SI ca ne marche toujours pas, regarder la clause FROM et arriver à obtenir qqc.
    • Quand ça marche, ajouter la clause WHERE et la mettre au point
    • puis la clause HaVING et la mettre au point
    .

    Pense que la moindre erreur d'orthographe plante la requête. DOnc la méthode c'est "step by step" en commençant très simple.

    Pense à chaque essai à éditer la chaîne comme tu viens de le faire.

    Alors au travail et reviens nous dire...


    PGZ

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Re,

    Meme avec le code le plus simple possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete1 = "SELECT dbo_appareils.Modèle FROM dbo_appareils;"
    Cela ne fonctionne pas.

    Est-ce que cela peut venir de la connection avec ma base de données ? (cela me paraitrait plus plausible )

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Pas sûr : l'exécution de ne renvoie pas d'erreur.
    Je commencerais par m'assurer de l'orthographe des noms de tables et de champs.

    Tu es dans une meilleure situation maintenant : tu as une requête élémentaire à faire fonctionner.

    A+

    PGZ

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,

    Merci de m'avoir donné des pistes, ça fonctionne mieux maintenant.
    Cela dit j'ai encore une petite chose qui marche pas.

    Ceci marche très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    requete1 = "SELECT appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " FROM appareils INNER JOIN mouvementappareils ON appareils.No_Appareil=mouvementappareils.No_Appareil" & _
    " WHERE (((appareils.Famille)<>'6-C' Or (appareils.Famille)<>'6-P'))" & _
    " GROUP BY appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " HAVING ((mouvementappareils.Point_Arrivée)=" & antenne & ")" & _
    " ORDER BY appareils.Modèle, mouvementappareils.Date_Validation;"
    mais lorsque je rajoute mes dates ça ne marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    requete1 = "SELECT appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " FROM appareils INNER JOIN mouvementappareils ON appareils.No_Appareil=mouvementappareils.No_Appareil" & _
    " WHERE (((appareils.Famille)<>'6-C' Or (appareils.Famille)<>'6-P'))" & _
    " GROUP BY appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " HAVING ((mouvementappareils.Date_Validation)>#" & Format(Date_deb, "dd/mm/yyyy") & "# And(mouvementappareils.Point_Arrivée)=" & antenne & ")" & _
    " ORDER BY appareils.Modèle, mouvementappareils.Date_Validation;"
    Est-ce que tu aurais une idée ?
    Merci de ton aide

  10. #10
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Quand tu dis que ça ne marche pas avec les dates,
    • tu lèves une erreur
    • ou le résultat n'est pas celui que tu attends?

    Pour les dates essaie avec le format "mm/dd/yyyy"

    PGZ

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Re,

    Oui je relève une erreur ( erreur d'automation).
    J'ai testé avec "mm/dd/yyyy" et c'est le même soucis.

    Dans la base de donnée, les dates sont au format "dd/mm/yyyy", je préfèrerai donc les garder sous cette forme si cela est possible

    Dans la base de donnée, certaines dates sont suivies de l'heure.
    Est-ce que cela peut venir de là? Et comment faire ?

    Merci

  12. #12
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Je te répète de rajouter un pendant cette phase de mise au point, pour voir à chaque fois la chaîne envoyée.

    Je te propose cette rédaction de la clause Having
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete1 = "SELECT appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " FROM appareils INNER JOIN mouvementappareils ON appareils.No_Appareil=mouvementappareils.No_Appareil" & _
    " WHERE (((appareils.Famille)<>'6-C' Or (appareils.Famille)<>'6-P'))" & _
    " GROUP BY appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " HAVING ((mouvementappareils.Date_Validation > #" & Format(Date_deb, "mm/dd/yyyy") & "#) And (mouvementappareils.Point_Arrivée =" & antenne & "))" & _
    " ORDER BY appareils.Modèle, mouvementappareils.Date_Validation;"
    Debug.Print requete1
    Mais je n'en suis pas sûr. Alors, s'il te plaît, met le Debug.print et donne le résultat si ça foire.

    La variable antenne est de quel type?
    PGZ

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,

    la variable antenne est un entier, date_deb une date.

    Avec ce que tu m'as donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete1 = "SELECT appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " FROM appareils INNER JOIN mouvementappareils ON appareils.No_Appareil=mouvementappareils.No_Appareil" & _
    " WHERE (((appareils.Famille)<>'6-C' Or (appareils.Famille)<>'6-P'))" & _
    " GROUP BY appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée" & _
    " HAVING ((mouvementappareils.Date_Validation > #" & Format(Date_deb, "mm/dd/yyyy") & "#) And (mouvementappareils.Point_Arrivée =" & antenne & "))" & _
    " ORDER BY appareils.Modèle, mouvementappareils.Date_Validation;"
    Debug.Print requete1
    j'obtiens une erreur d'automation.

    Et voici ce que donne le debug.print
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée FROM appareils INNER JOIN mouvementappareils ON appareils.No_Appareil=mouvementappareils.No_Appareil WHERE (((appareils.Famille)<>'6-C' Or (appareils.Famille)<>'6-P')) GROUP BY appareils.Modèle, mouvementappareils.Point_Origine, mouvementappareils.Date_Validation, mouvementappareils.Point_Arrivée HAVING ((mouvementappareils.Date_Validation > #01/01/2008#) And (mouvementappareils.Point_Arrivée =148)) ORDER BY appareils.Modèle, mouvementappareils.Date_Validation;

    L'erreur ne vient pas de la variable antenne puisque dans la clause having, si je ne garde que
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    HAVING (mouvementappareils.Point_Arrivée =" & antenne & ")
    la requete fonctionne.


    Si tu as une autre idée, je suis preneur.
    Merci

  14. #14
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    C'est lent, mais on commence à y voir plus clair.

    Apparemment il y a un pb autour de Date_Validation. Je pense qu'il faudrait commencer par s'assurer que ce champ est bien du type Date/Heure.

    Pour cela, tu fais une requête simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Date_Validation FROM mouvementappareils;
    Tu copies le jeu d'enregistrement obtenu sur une feuille (CopyFromRecordSet) et tu vérifies le type des données obtenues.

    Si ce sont bien des Date/Heure, alors tu fais une nouvelle requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_Validation FROM Mouvementsappareils WHERE Date_Validation > #03/01/2010#;
    et tu vois ce que cela donne.

    A+

    PGZ

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Re,

    J'ai utilisé le CopyFromRecordSet pour le code que tu m'as dit, la date est bien au bon format (le premier format date).

    Ensuite j'ai donc testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requete2 = "SELECT Date_Validation FROM MouvementAppareils WHERE Date_Validation > #01/03/2011#;"
    Debug.Print requete2
    Et la toujours erreur automation.

    le debug.print donne
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Date_Validation FROM MouvementAppareils WHERE Date_Validation > #01/03/2011#;

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Re,

    Je pense avoir trouvé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete2 = "SELECT Date_Validation FROM MouvementAppareils WHERE Date_Validation > '01/03/2011';"
    Cela me donne le bon résultat en utilisant ensuite un CopyFromRecordSet.
    Si je n'utilise pas le copyfromrecordset pour écrire le résultat, ça ne me donne pas les bonnes dates, ce qui parait logique puisque mes dates sont au format "dd/mm/yyyy" et que par défaut vba est en "mm/dd/yyyy".

    Je vais donc tester le code dans ma requete principale pour etre sur que tout est réglé.
    En tout cas, un grand merci pour ton aide pgz.

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    re,

    un dernier problème, j'ai besoin de la première requête créé pour en générer une seconde.

    j'ai donc rajouté :
    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
     Dim rst2 As ADODB.Recordset
    Set rst2 = New ADODB.Recordset
    dim entrées as string
    requete1 = ....
    rst.Open requete1, conn
     
    entrées = "SELECT Requete1.Modèle" & _
    " FROM requete1;"
    Debug.Print entrées
     
    rst2.Open entrées, conn
    rst2.MoveFirst
    Do Until rst2.EOF
       Cells(1, 5).CopyFromRecordset rst2
    Loop
    rst.Close
    rst2.Close
    le debug. print de entrées donne SELECT Requete1.Modèle FROM requete1;

    Déjà avec la variable entrées simplifiée, "erreur automation"

    Ai-je oublié quelque chose ?
    Merci

  18. #18
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Cela me paraît normal, la BD ne connaît pas requete1!
    Essaie en imbriquant la première comme sous-requête de la deuxième
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "SELECT appareils.Modèle" & _
    " FROM (ici la première requete);"
    Ceci dit, je ne vois pas pourquoi tu as besoin d'une deuxième requête qui vient prendre juste 1 champ de la première et sans ajouter aucune clause...


    PGZ

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Bonjour,

    Citation Envoyé par anthonyy Voir le message
    Déjà avec la variable entrées simplifiée, "erreur automation"
    Elle est un peu plus complexe, j'ai simplement essayé de suivre tes conseils . . .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "SELECT appareils.Modèle" & _
    " FROM (ici la première requete);"
    ne fonctionne pas non plus

Discussions similaires

  1. [AC-2010] Importation d'une requête Access sur Excel
    Par jurta dans le forum Access
    Réponses: 22
    Dernier message: 22/11/2013, 08h57
  2. [ODBC] Exporter les resultats d'une requête sous format Excel
    Par razily dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/06/2010, 21h32
  3. Importer un fichier XML sous Excel 2002
    Par NPortmann dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 16/05/2006, 13h35
  4. Suppression d'une feuille sous excel
    Par dimdidi dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2006, 09h29
  5. Probleme pour faire une somme sous Excel
    Par Nicolas92 dans le forum Excel
    Réponses: 5
    Dernier message: 02/12/2005, 11h38

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