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 :

sql sur une feuille excel active


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 171
    Par défaut sql sur une feuille excel active
    bonjour à toute l'equipe;

    je voudrai faire une requete sur feuille excel deja ouverte, alors je ne sais pas où est le probleme:
    Est ce que je dois utiliser le nom de la feuille :
    CONSOMMATEURS ou Feuil4????
    est ce qu'il ya qlq pour m'iader, merci par avance. voilà mon code et il marche pas!!!!!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL_conso = "SELECT  *FROM [Feuil4$] "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Requête qui fait la jointure entre la feuille CONSOMMATEURS et la feuille GRILLECONSOMMATEURS
    SQL_conso = "SELECT  [Feuil4$].BUREAU " & "FROM [Feuil4$] " & _
    "INNER JOIN [Feuil6$] ON [Feuil4$].NOPRET = [Feuil6$].NOPRET"
    Set rsTconso = New ADODB.Recordset
    Set rsTconso = cn.Execute(SQL_conso)
    'Afficher le résultat de la requete dans A93
    [Feuil9].Range("A93").CopyFromRecordset rsTconso
    'réinitialiser le recordset
    Set rsTconso = Nothing

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 171
    Par défaut précision
    j'ai oublier de préciser que dans le meme code qd j'utilse la requete pour un classeur fermé ça marche bien§§§!!!est ça peut etre un probleme de connection??? la partie du code qui marche bien:
    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
    '--- Connection ---
    Set cn = New ADODB.Connection
    With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & Fichier & _
     ";Extended Properties=""Excel 8.0;HDR=yes"""
    .Open
    End With
    'Requête SQL_conso = " SELECT  COUNT(*)  FROM[" & NomFeuille & "$]  "
    Set rsTconso = New ADODB.Recordset
    Set rsTconso = cn.Execute(SQL_conso)
    'Afficher le nombre total prets réalisés dans la case B27
    rsTconso.MoveFirst
    nbconso = rsTconso.Fields(0)
    [Feuil9].Range("B20").Value = nbconso
    'réinitialiser le recordset
    Set rsTconso = Nothing

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 171
    Par défaut PROBLEME DE CONNECTION
    JE PENSE QUE J'AI FAIT une betise, c'est la connection je dois préciser le fichier, car ce n'est plus le fichier fermé alors je fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Définit le chemin du fichier  servant de base de données
     Direction = ThisWorkbook.Path
     Fichier2 = OUTILSCONTROLE
     'Mise en place de la connexion avec le fichier
        Set Conn = New ADODB.Connection
            With Conn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=" & Direction & "/" & Fichier2 & _
                ";Extended Properties=Excel 8.0;"
                .Open
            End With
    ensuite ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Requête qui fait la jointure entre la feuille CONSOMMATEURS et la feuille GRILLECONSOMMATEURS
       rSQL = "SELECT * FROM [GRILLECONSOMMATEURS$] "
        'Exécution de la Recherche SQL
        Set rsT = New ADODB.Recordset
       Set rsTavere = Conn.Execute(rSQL)
    mais il m'affiche un message comme quoi je ne peux acceder à ce fichier car il est déja ouvert!!!!!!?????? effectivement il ouvert car je travaille la dessuaidez moi svp merci

  4. #4
    Expert confirmé

    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
    Par défaut
    bonjour

    tu peux utiliser cette procédure. le classeur est supposé déjà sauvegardé. les données sont dans la Feuil1. le résultat de la requete est écrit dans la Feuil2.


    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
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
        'Le classeur est supposé déjà sauvegardé
        Fichier = ThisWorkbook.FullName
        'Nom de la feuille
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        '-----------------
     
        'Définit la requête.
        '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
        'Ecrit le résultat de la requête dans la cellule A2
        Feuil2.Range("A2").CopyFromRecordset Rst
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing


    bonne soirée
    michel

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

Discussions similaires

  1. [XL-2003] Impossibilité d'activer un bouton sur une feuille Excel
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/03/2015, 12h16
  2. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  3. [Vba-Excel] Exécuter une requete SQL sur une feuille de donnée
    Par Spacy_green dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2006, 09h27
  4. Réponses: 8
    Dernier message: 15/05/2006, 14h33
  5. ecrire sur une feuille excel avec Asp
    Par Ajay dans le forum ASP
    Réponses: 7
    Dernier message: 06/01/2006, 23h18

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