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 :

Demande d'aide sur une requête ADO DB [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 25
    Par défaut Demande d'aide sur une requête ADO DB
    Bonjour à tous,

    Dans le cadre d'un de mes projets je dois réalisé une macro qui effectue une requête SQL sur un champs d'une table situé dans un autre classeur. J'arrive pour le moment a réaliser une requête qui me permet de récuperer l'entièreté de la table, mais impossible pour moi d'ajouter une clause where.
    Voici ma source de donnée (Pour des raisons de sécurité seul le nom des champs sera visible.
    Nom : AIDE bdd.png
Affichages : 682
Taille : 185,7 Ko

    Voici ensuite 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
    39
    40
    41
    42
    43
    44
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim ADOCommand As ADODB.Command
        Dim Fichier As String, Cellule As String, Feuille As String
        Dim Site As String
        Site = Workbooks("Tab2Bord.xlsm").Sheets("MAIN").Range("B3")
        Site = Left(Site, Len(Site) - 2)
        'Adresse de la cellule contenant la donnée à récupérer
        Cellule = "A1:M1839"
          'Pour une plage de cellules, utilisez:
          'Cellule = "A4:C10"
     
        Feuille = "table$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
        'Chemin complet du classeur fermé
        Fichier = "C:\Users\XX\Desktop\Travail\PARCVEHICULE2.xlsx"
     
        Set Source = New ADODB.Connection
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
     
        Set ADOCommand = New ADODB.Command
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
        End With
     
        Set Rst = New ADODB.Recordset
        Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
     
        Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
     
        Workbooks("Tab2Bord.xlsm").Sheets("MAIN").Range("A63").CopyFromRecordset Rst
            Range("C63:C64").Select
        ActiveCell.FormulaR1C1 = "entite"
        Range("C63:C64").Select
        ActiveSheet.Range("$A$1:$M$1840").AutoFilter Field:=3, Criteria1:="entite"
        ActiveSheet.Range("$A$1:$M$1840").AutoFilter Field:=3, Criteria1:=Workbooks("Tab2Bord").Sheets("MAIN").Range("Z1")
          Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End  Sub
    La syntaxe de la requête SQL me pose problème, je sais que ma requête devrai ressembler à " SELECT * FROM [" & Feuille & Cellule & "] Where entite LIKE" & Site & "
    Mais cela me génèrent une érreur.
    J'aimerais donc trouver la bonne syntaxe pour réaliser ma reqûete.
    Merci par avance.
    Cordialement

    Alexis

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CommandText = "SELECT * FROM [" & Feuille & Cellule & "] Where [Marque]='xx'"

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Il faudrait savoir quelle erreur est générée.
    Est-ce une erreur de syntaxe ?

    Attention aux espaces (comme dans ce que tu as mis)
    Il devrait y avoir un espace après le LIKE...

    Est-ce que LIKE est nécessaire ?
    Tu pourrais essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM [" & Feuille & Cellule & "] Where entite ='" & Site & "'"
    Avec apostrophes si entite est du texte. Autrement, enlève les apostrophes.

    Et est-ce que Site peut contenir des apostrophes ?
    Si oui, il faut alors les doubler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM [" & Feuille & Cellule & "] Where entite ='" & Replace(Site, "'", "''") & "'"
    Ah ben si dysorthographie s'en mêle (bonjour à toi), je te laisse à ses bons soins...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Parmi,
    dans sa chaîne de connexion, il ne définissait pas la première ligne comme titre de colonne! HDR=No;

    de plus la fusion des ligne c'est pas cool!

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 25
    Par défaut
    Bonjour à tout les deux et merci pour vos réponses, alors j'ai remplacé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
        End With
    par le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "] Where 'entite' LIKE '" & Site & "'"
        End With
    La requête s'éffectue mais bizarrement cela me donne toute la table, alors que dans mon exemple je veux afficher que les enregistrements dont le champ entite est égale au contenu de la variable Site qui contient dans mon test la valeur "Amiens".

    Si vous avez une idée de ce qui peut causer l'érreur

    Cordialement Alexis

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Pas d'apostrophe autour du champ, mais des crochets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CommandText = "SELECT * FROM [" & Feuille & Cellule & "] Where [entite] LIKE '" & Site & "'"
    Et comme mentionné, défusionne tes entêtes.
    Mets-les sur une seule ligne.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 25
    Par défaut
    Citation Envoyé par parmi Voir le message
    Pas d'apostrophe autour du champ, mais des crochets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CommandText = "SELECT * FROM [" & Feuille & Cellule & "] Where [entite] LIKE '" & Site & "'"
    Et comme mentionné, défusionne tes entêtes.
    Mets-les sur une seule ligne.
    J'ai éffectuer les modifications mais j'ai encore le même problème, je récupère toute la table :/.

  8. #8
    Invité
    Invité(e)
    Par défaut
    que représente Site?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Site="x"
    Set Rst = Source.Execute("SELECT * FROM [" & Feuille & Cellule & "] Where [entite] LIKE '%" & Site & "%'")

  9. #9
    Invité
    Invité(e)
    Par défaut
    as tu compris que le problème est sur ta connexion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 25
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    as tu compris que le problème est sur ta connexion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
    Alors pour être tout à fait honnete oui j'ai remplacé ma ligne de code par la vôtre mais je n'ai aucune idée de ce à quoi elle correspond

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

Discussions similaires

  1. Demande d'aide sur une requête
    Par Damien062 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/08/2015, 18h21
  2. [11gR2] Demande aide sur une requête SQL
    Par Igname dans le forum SQL
    Réponses: 17
    Dernier message: 08/10/2013, 10h08
  3. demande d'aide sur une requête d'update
    Par jmclej dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/02/2013, 10h41
  4. Demande d'aide sur une requête
    Par gandalf_le_blanc dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/11/2011, 04h21
  5. demande d'aide sur une requête sql serveur
    Par PHPkoala dans le forum Développement
    Réponses: 8
    Dernier message: 30/09/2009, 15h11

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