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 :

[VBA-E] requête SQL


Sujet :

Macros et VBA Excel

  1. #1
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut [VBA-E] requête SQL
    salut

    je réalise un fichier Excel qui consolide les données de 3 autres fichiers identiques à celui de destination A l'aide d'une requete.

    ca marche impec sauf qu'il me récupère à chaque fois la ligne de champs et moi je n'en veux pas parce qu'elle est présente dans le fichier de destination.

    je me suis appuyer sur le tuto de Silkyroad mais la je coince

    voici mon 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
    (...)
     For i = 1 To 3
    If i = 1 Then
         Fichier = "\Olivier\Olivier.xls"
            ElseIf i = 2 Then
         Fichier = "\Jean-Michel\Jean-Michel.xls"
            ElseIf i = 3 Then
        Fichier = "\Nicolas\Nicolas.xls"
    End If
     
         Set Cn = New ADODB.Connection
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Chemin & Fichier & _
                ";Extended Properties=Excel 8.0"
            .Open
        End With
        '-----------------
     
        'Définit la requête.
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
        ligne = 3 'pour coller les résultats à la suite
        Do While Not IsEmpty(Cells(ligne, "b"))
            ligne = ligne + 1
        Loop
     
        'Ecrit le résultat
        Range("A" & ligne).CopyFromRecordset Rst
     
        '--- Fermeture connection ---
        Cn.Close
        Set Cn = Nothing
    Next
    est-ce au niveau de la requete ?

    ci qq un à des idées ...
    merci d'avance
    jpo

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Bonsoir

    La ligne de champ est dans la 1ere ligne de la feuille? Normalement, par défaut, tu ne devrais pas récupérer cette ligne.


    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ";Extended Properties=""Excel 8.0;HDR=YES"""


    michel

  3. #3
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut
    ok super le truc c'était ca !
    la premiere ligne de la liste est en ligne 3 !

    ca marche si je supprime les premieres lignes mais si laisse le début de la liste à la ligne 3 ? comment faire ???

    merci pour ton aide ... et ton tuto !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Rebonsoir

    ca marche si je supprime les premieres lignes mais si laisse le début de la liste à la ligne 3 ? comment faire ???
    Dans l'introduction du tutoriel il est indiqué:

    Les informations fournies dans ce document supposent que le classeur est structuré comme une vraie base de données:
    La première ligne sert à indiquer le nom des champs, à partir de la première colonne.
    .....

    Après, tout est possible, mais on va vite partir dans des usines à gaz et ralentir la procedure.
    Trois possiblités:
    1. Tu supprimes la premiere ligne dans le classeur de destination, apres avoir utilisé CopyFromRecordset.
    2. Tu boucles sur tous les enregistrements du Recordset, à partir du deuxieme, et tu écris chaque données dans la feuille de destination
    3. Si les plages sont fixes dans chaque classeur, tu peux faire une requête sur une plage de cellules (voir chapitre IV-A. Lire)


    Bonne soirée
    michel

  5. #5
    jpo
    jpo est déconnecté
    Membre régulier
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 118
    Points
    118
    Par défaut
    ok et merci pour tes précision !!!

    je vais y retravailler !!!


    jpo

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

Discussions similaires

  1. [vba]-Access requête SQL
    Par jpo dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/07/2007, 07h44
  2. VBA avec requête SQL
    Par seba_stien dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/10/2006, 15h39
  3. Réponses: 6
    Dernier message: 09/06/2006, 00h19
  4. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  5. [VBA-A] Requête SQL
    Par Berny03 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/11/2005, 21h16

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