Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1341 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete MSQUERY dans Excel, prb de critères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete MSQUERY dans Excel, prb de critères

n°700075
AuBonMicro
Posté le 15-04-2004 à 13:17:16  profilanswer
 

Bonjour,
 
Je réalise un document XLS, dans le lequel j'extrait des données d'une base SQL, via des requetes MSQUERY.
Jusque la, tout marche bien.
Aucun soucis.
 
Seul petit problème, je voudrais dans ma requete MSQUERY, faire référence au contenu d'une cellule de mon fichier excel original en temps que valeur d'un critère de recherche.
 
Exemple :
 
... WHERE table.article.gaht=[CELLULE A3]
et je ne sais pas comment arriver à résultat ?
 
Si quelqu'un peut m'aider,
vous l'aurez sans doute compris je suis débutant dans cette activité.
 
Vous remerciant pas avance de vos réponses,

mood
Publicité
Posté le 15-04-2004 à 13:17:16  profilanswer
 

n°701081
FRED20000
Posté le 16-04-2004 à 14:25:56  profilanswer
 

Where table.article.gaht ='" + Worksheets("feuil1" ).Range("A1" ) + "'"

n°701435
AuBonMicro
Posté le 16-04-2004 à 20:36:01  profilanswer
 

Tout d'abord MERCI pour la réponse, mais ce qui me gène c'est le Worksheets("feuil1" ). Car en effet cette requete SQL sera copié d'une feuille sur l'autre dans un classeur, chaque feuille aura un nom différent biensur.. et je ne voudrais avoir à récoder le nom de la feuille en DUR dans la requete à chaque fois.. y a t'il une sollution ?
 

n°702596
FRED20000
Posté le 19-04-2004 à 11:05:10  profilanswer
 

Je ne comprends pas bien ce que tu veux faire.
Mais si tu ne veux pas le Worksheets("feuil1" ) enlèves-le autrement remplaces le par une variable : Worksheets("feuil" & a).Range("A1" )
Moi je cherche à extraire des données sql pour les mettre ds un tableau virtuel et c'est la que je bloque, peux-tu m'écrire le code de ta connexion Sql et de tes requêtes?
A+

n°702931
Agagax
Posté le 19-04-2004 à 15:44:00  profilanswer
 

aubonmicro a écrit :

Tout d'abord MERCI pour la réponse, mais ce qui me gène c'est le Worksheets("feuil1" ). Car en effet cette requete SQL sera copié d'une feuille sur l'autre dans un classeur, chaque feuille aura un nom différent biensur.. et je ne voudrais avoir à récoder le nom de la feuille en DUR dans la requete à chaque fois.. y a t'il une sollution ?


Si c'est seulement Worksheets("feuil1" ) qui te dérange, tu peux le remplacer par Worksheets(Me.Name).

n°704637
AuBonMicro
Posté le 21-04-2004 à 10:13:23  profilanswer
 

Merci Agagax, en méttant Me.Name, si j'ai bien compris, cela prendra comme nom de feuille, le nom de la feuille active dans la laquelle est placée la requete SQL ?

n°705378
Agagax
Posté le 21-04-2004 à 19:03:38  profilanswer
 

Oui c'est bien ça. 'Me' reférence la feuille active.

n°705461
AuBonMicro
Posté le 21-04-2004 à 21:49:20  profilanswer
 

J'ai testé, mais dans MSQUERY je ne m'en sors pas.. j'édite la requete SQL, et il me dit toujours erreur de syntaxe ou alors que les ' sont mal placés... grr..

n°708482
dalcap
Posté le 26-04-2004 à 12:26:54  profilanswer
 

bonjour,
 
une solution serait de passer par une macro.
tu ouvres une nouvelle feuille,
tu lances l'enregistreur de macro,
tu fais ta requete (donnes externes, msquery), tout le tralala en mettant une valeur fixe :
 pour WHERE table.article.gaht=[CELLULE A3]  
 tu mettras WHERE table.article.gaht=26 par exemple
tu fermes l'assistant msquery,
tu arretes l'enregistreur de macro.
 
dans l'éditeur de macro, tu remplace le 26 par la référence de la cellule qui va bien, en faisant attention à la syntaxe.
 
qu'en penses-tu ?
 
bon courage.


Message édité par dalcap le 26-04-2004 à 12:27:33
n°708732
AuBonMicro
Posté le 26-04-2004 à 15:31:07  profilanswer
 

Re, sachant que ma feuille excel s'appele LOT200 et que le paramètres est dans la cellule B3 de cette même feuille, suivant vos conseils, j'ai édité la requete dans MSQUERY, et j'ai mis :
 
SELECT ARTICLE.GA_ARTICLE, ARTICLE.GA_CODEARTICLE, ARTICLE.GA_LIBELLE, ARTICLE.GA_LIBCOMPL, LIGNE.GL_MONTANTHT, LIGNE.GL_PMAP, ARTICLE.GA_PVTTC, ARTICLE.GA_CHARLIBRE2, LIGNE.GL_CODEARTICLE, LIGNE.GL_QTEFACT, LIGNE.GL_NATUREPIECEG, LIGNE.GL_DEPOT
FROM DB000000.dbo.ARTICLE ARTICLE, DB000000.dbo.LIGNE LIGNE
WHERE LIGNE.GL_CODEARTICLE = ARTICLE.GA_CODEARTICLE AND ((ARTICLE.GA_CHARLIBRE2='  " + Worksheets("LOT200" ).Range("B3" ) + " ') AND (LIGNE.GL_NATUREPIECEG='BLF') AND (LIGNE.GL_DEPOT='902'))
 
Le résultat... RIEN.
pas d'erreur, mais rien ne sort, quelque soit ce que je puisse mettre dans la cellule B3 de la feuille excel LOT200
 
Il ne doit pas y avoir grand chose je pense.. j'attends donc le petit bout de solution qui me manque..
 
Merci d'avance.

mood
Publicité
Posté le 26-04-2004 à 15:31:07  profilanswer
 

n°708794
dalcap
Posté le 26-04-2004 à 16:05:12  profilanswer
 

un petit bout de solut ion :??:
heu,
 
tu colles toute ta requete dans une variable et tu l'affiches pour voir s'il a bien remplacé  

Code :
  1. ARTICLE.GA_CHARLIBRE2='  " + Worksheets("LOT200" ).Range("B3" ) + " '


par la valeur que tu attendais.
 
sinon, s'il te sors un truc style ARTICLE.GA_CHARLIBRE2= ' ' (blanc, rien, nada) et bien, c'est normale qu'il ne ressorte rien.

n°708824
AuBonMicro
Posté le 26-04-2004 à 16:30:10  profilanswer
 

En effet dans ce cas il ne renvoie RIEN.. comme si il ne prennait pas en compte la formule '  " + Worksheets("LOT200" ).Range("B3" ) + " ' , mais la CHAINE DE CARRACTERE '  " + Worksheets("LOT200" ).Range("B3" ) + " '  
 
Un soucis dans le placement des ' et des " ?

n°708889
dalcap
Posté le 26-04-2004 à 16:54:42  profilanswer
 

AuBonMicro a écrit :


Un soucis dans le placement des ' et des " ?


 
c'est probable
essaye cela
 
"WHERE ARTICLE.GA_CHARLIBRE2=" & Worksheets("LOT200" ).Range("B3" ) & "le reste de tes critères "
 
a) la concaténation d'une chaîne de caractères avec & dans VB
b) fermer une chaine avec "


Message édité par dalcap le 26-04-2004 à 16:56:10
n°708902
AuBonMicro
Posté le 26-04-2004 à 17:03:22  profilanswer
 

Désolé d'insister.. le code SQL complet que j'ai indiqué plus donne donc :
 
SELECT ARTICLE.GA_ARTICLE, ARTICLE.GA_CODEARTICLE, ARTICLE.GA_LIBELLE, ARTICLE.GA_LIBCOMPL, LIGNE.GL_MONTANTHT, LIGNE.GL_PMAP, ARTICLE.GA_PVTTC, ARTICLE.GA_CHARLIBRE2, LIGNE.GL_CODEARTICLE, LIGNE.GL_QTEFACT, LIGNE.GL_NATUREPIECEG, LIGNE.GL_DEPOT  
FROM DB000000.dbo.ARTICLE ARTICLE, DB000000.dbo.LIGNE LIGNE  
WHERE LIGNE.GL_CODEARTICLE = ARTICLE.GA_CODEARTICLE AND ((ARTICLE.GA_CHARLIBRE2=" + Worksheets("LOT200" ).Range("B3" ) + " ) AND (LIGNE.GL_NATUREPIECEG='BLF') AND (LIGNE.GL_DEPOT='902'))
 
??

n°708904
dalcap
Posté le 26-04-2004 à 17:05:21  profilanswer
 

bah, désolé d'insister aussi, mais, ...
peux tu essayer avec des & à la place des +  ?
 
c bizarre, mon excel me crie "incompatibilité de type" chez moi;
toi, tu peux ?


Message édité par dalcap le 26-04-2004 à 17:05:37
n°710430
dalcap
Posté le 28-04-2004 à 09:17:56  profilanswer
 

alors, ça marche ?

n°749108
AuBonMicro
Posté le 02-06-2004 à 16:48:12  profilanswer
 

Non ca marche pas, j'ai essayé avec des + mais aussi des &
 
SELECT ARTICLE.GA_CODEARTICLE, ARTICLE.GA_LIBELLE, ARTICLE.GA_LIBCOMPL, Sum(LIGNE.GL_QTEFACT) , Sum(LIGNE.GL_MONTANTHT), LIGNE.GL_PMAP, ARTICLE.GA_PVTTC, ARTICLE.GA_CHARLIBRE2  FROM DB000000.dbo.ARTICLE ARTICLE, DB000000.dbo.LIGNE LIGNE  WHERE LIGNE.GL_CODEARTICLE = ARTICLE.GA_CODEARTICLE AND ((ARTICLE.GA_CHARLIBRE2='" & Worksheets('LOT').Range('A3') & "')  AND (LIGNE.GL_NATUREPIECEG='BLF') AND (LIGNE.GL_DEPOT='902'))  GROUP BY ARTICLE.GA_ARTICLE, ARTICLE.GA_CODEARTICLE, ARTICLE.GA_LIBELLE, ARTICLE.GA_LIBCOMPL, LIGNE.GL_PMAP, ARTICLE.GA_PVTTC, ARTICLE.GA_CHARLIBRE2 ORDER BY GA_CODEARTICLE
 
Il me dis toujours que la requete est incorrect et qu'elle ne peut pas être préparée...
 
je craque..
 
Une autre idée ?

n°749205
dalcap
Posté le 02-06-2004 à 17:53:05  profilanswer
 

heu ???
1) essayer d'abord avec une requete simple avec une seule table, sans where ?
2) ajouter 1 where (1 seul)
3) remplacer ta clause where par un where quelquechose =" & worsheet_machin  
 
P.S.: les tables avec des points ('.') dedans, c'est normal ?
c'est quelque chose que je n'avais pas vu, mais qui me tracasse, là, tu pourrais me dire ?
 
bon courage

n°867155
AuBonMicro
Posté le 07-10-2004 à 15:59:04  profilanswer
 

Oui, c'est normale.
Article.piece
 
C'est Table Article et champs piece.

n°867273
dalcap
Posté le 07-10-2004 à 18:18:41  profilanswer
 

AuBonMicro a écrit :

Oui, c'est normale.
Article.piece
 
C'est Table Article et champs piece.


 
heu... t'es encore là dessus...  :ouch:  
 
c'est plutôt à cela que je faisais allusion :
 

AuBonMicro a écrit :

Non ca marche pas, j'ai essayé avec des + mais aussi des &
<...>
FROM DB000000.dbo.ARTICLE ARTICLE, DB000000.dbo.LIGNE LIGNE  WHERE LIGNE.GL_CODEARTICLE  
<....>


où là, il me semble qu'il s'agirait plutôt de nom de tables, non ???
 
Sinon, tu en es où ? t'as réussi à faire ce que tu voulais ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete MSQUERY dans Excel, prb de critères

 

Sujets relatifs
[SBBD] Aide pour faire une requête[SQL] Requete update qui ne s'effectue pas
Excel, fonction "case à cocher"verification de la présence ou non d'une requete
Programmer : Envoyer un mail sous excelProblème de requête SQL
Excel, VBA, ACCESS et ... les dates ....recherche d'une fonction ou d'un mini prog sur excel!
[MySQL] Comment optimiser une requête pourtant simple ? [c'était moi]convertir chiffre en lettre Excel
Plus de sujets relatifs à : Requete MSQUERY dans Excel, prb de critères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR