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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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