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 :

[Excel/VBA] Requete SQL avec clause sur une suite de Cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut [Excel/VBA] Requete SQL avec clause sur une suite de Cellule
    Bonjour,

    Je voudrais incorporer dans le where de ma requéte SQL une clause que dirais
    Articles.Codeart <> des nombre dans les cellules A80:A110 de ma feuille Statistique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApproSQL10 = "SELECT TOP 10 Articles.Codeart, Articles.Désignation, Articles.Localisation, [QteThéorique]*[Prixachat] AS Montant, [Qtéstock]+[Qtéréser] AS QteThéorique FROM Articles WHERE ( AND (Articles.Codeart>=100000000) AND (([Qtéstock]+[Qtéréser])<>0) AND (Articles.Dateachat>=#" & DateDeb & "#) AND (Articles.Dateachat<=#" & DateFin & "#)) ORDER BY 4 DESC"
    A tout hazard peut étre que ça pourrez vous aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Statistique").Range("A80:A110")
    Un grand Merci à tous

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    en sql, ça se traduit par ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim strIn as String
    for each c in Range("A80:A110").Cells
      strIn = strIn & ", " & c.value
    next c
    SQL = "SELECT ...." & _
          "FROM ...... " & _
          "WHERE .... CodeArt Not In(" & mid(strIn, 2) & ") ....."

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    Je traduis ça en VBA comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim strIn As String
            For Each c In Sheets("Statistique").Range("A80:A110").Cells
                strIn = strIn & ", " & c.Value
                Next c
            ApproSQL10 = "SELECT TOP 10 Articles.Codeart, Articles.Désignation, Articles.Localisation, [QteThéorique]*[Prixachat] AS Montant, [Qtéstock]+[Qtéréser] AS QteThéorique" & _
                    "FROM Articles " & _
                    "WHERE ((Articles.Dateachat>=#" & DateDeb & "#) AND (Articles.Dateachat<=#" & DateFin & "#) AND (Articles.Codeart>=100000000) AND (([Qtéstock]+[Qtéréser])<>0) AND (Articles.Codeart Not In(" & Mid(strIn, 2) & "))) ORDER BY 4 DESC"
    J'ai une erreur ici (un mot interdit ou argument mal ortho...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApproData.Open ApproSQL10, ApproConnect, adLockReadOnly, adLockReadOnly, adCmdText
    Dans strIn j'ai ça ",145789658,54789854,457854785,...."

    Une idée ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Déjà strIn est du texte, il faut donc mettre des ' avant et après dans ta requête (avant "" et après "").

    Starec

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Articles.Codeart Not In(" & Mid(strIn, 2) & ")
    Aprés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Articles.Codeart Not In('" & Mid(strIn, 2) & "')
    Marche toujours pas...
    Merci quand même

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    2 choses à faire ...

    • quel est le type de données de CodeArt ?
    • debug.print ApproSQL10

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    Je connaissais pas le Debug.print, merci je vous donne ce que ça me dis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 10 Articles.Codeart, Articles.Désignation, Articles.Localisation, [QteThéorique]*[Prixachat] AS Montant, [Qtéstock]+[Qtéréser] AS QteThéoriqueFROM Articles WHERE ((Articles.Dateachat>=#01/01/2004#) AND (Articles.Dateachat<=#01/01/2007#) AND (Articles.Codeart>=100000000) AND (([Qtéstock]+[Qtéréser])<>0) AND (Articles.Codeart Not In(' 420000153, 420000151, 600006210, .... 600006425, '))) ORDER BY 4 DESC
    Codeart est format "Numérique" sous la base Access


    j'ai modifier la requete pour éloigner QteThéorique et FROM depuis j'ai pas la même erreur je vous donne l'erreur dans pas longtemps

    type de données incompatible maintenant j'ai l'impression que ça vient bien maintenant de la suite de nombre...

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Si c'est numérique arrange toi pour avoir ...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    CodeArt Not In (nombre1, nombre2, ...., nombren)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    C'est bon j'ai trouvé j'ai enlevé les ' ' de l'expression que j'avais rajouté et ça fonctionne je valide que ce soit bon et je mets le tag résolu

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    AND (Articles.Codeart Not In(' 420000153, 420000151, 600006210, .... 600006425, '))) ORDER BY 4 DESC

    Si Articles.Codeart est du texte, chaque valeur doit etre encadrée par des cotes :
    AND (Articles.Codeart Not In('420000153', '20000151', '600006210', .... '600006425'))) ORDER BY 4 DESC

    Mais s'il s'agit effectivement de valeurs numériques alors tu n'as pas besoin de cotes :
    AND (Articles.Codeart Not In(420000153, 20000151, 600006210, .... 600006425))) ORDER BY 4 DESC

    ... en espérant t'apporter un peu d'aide...

    ---> Oups...on a du poster en meme temps

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    Merci bien @ tous

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

Discussions similaires

  1. Pb de requete SQL avec clauses WHERE dans une procédure stockée
    Par CocoLeNain dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/06/2010, 23h48
  2. [SQL - Oracle 9i] Requete Sql avec filtre sur critere
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 05/12/2007, 08h45
  3. [VBA]Requete SQL avec parametre numérique
    Par Pitou5464 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/09/2006, 10h33
  4. requete sql avec between sur des champs de type Date
    Par ersoufiane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/08/2006, 19h43
  5. [Access] requete sql avec condition sur date
    Par qeja dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/03/2006, 23h54

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