|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonsoir,
j'aurais besoin d'un coup de main car je galère avec MS Query (sous Excel 2007), je m'explique : - j'ai une base de donnée M$ SQL contenant une table comportant deux colonnes : gencod et libelle. - dans Excel j'ai une liste de gencod dans la colonne A, et je voudrais remplir la colonne B avec les libellés correspondants à ces gencods. Jusqu'à maintenant au mieux j'arrive à avoir seulement la première ligne remplie, je n'arrive pas à remplir toutes les lignes de la colonne B. Lorsque je fais "Actualiser les données", tout s'efface et il n'y a que la première ligne qui reste. Ce que j'ai fait : - ouverture d'un classeur - données > données externes > à partir d'autres sources > MS Query - sélection de ma base de donnée déjà configurée ("Test"), validation - Assistant Requête, Annuler - Ouverture de MS Query automatique - Ajout de ma table "Test" de ma base "Test" - Bouton SQL, pour taper la requête SQL suivante : Code :
- Clique sur le bouton pour renvoyer les données et retourner sur Excel - Sur la fenêtre d'Importation des données, je laisse "Feuille de calcul existante =$A$1", validation. - Sur la fenêtre "Entrer une valeur de paramètre". Je suis obligé de mettre une seule cellule, je clique donc sur A1 (=Feuil1!$A$1) - Un tableau se crée, de deux lignes + une en-tête ayant le nom des colonnes dans ma table. et là... je ne sais plus quoi faire. Je colle dans la colonne A les gencod dont je veux faire la correspondance, rien ne se passe. Je clique donc sur Actualiser Tout, il me redemande d'Entrer une valeur de paramètre. Je ne peux pas sélectionner toute la colonne A, je suis obligé de ne mettre qu'une seule cellule. Je clique donc sur une cellule, je valide, toutes les lignes disparaissent sauf la cellule que j'ai choisi, et le libellé correspondant est bien mis à jour. Comment faire pour que la requête s'applique sur toutes les lignes renseignées dans la colonne A ? Merci beaucoup pour votre aide, Yateri |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric VandermeulenInscription : juillet 2007 Messages : 1 730 ![]() |
Salut,
Une autre piste que de lié la table tel quelle, passer par un TCD, tu pourras alors jouer avec les champs de page pour filtrer. A+
__________________
N'oubliez pas le si votre problème est solutionné.
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 166 ![]() |
la requête va s'appliquer sur la table SQL
le tri que tu demande lui est interne à Excel ta table est quoi ? juste un listing de code avec leur correspondance ? si c'est le cas la requête doit rapatrier toute la table ( 2003 la table ne doit pas excéder 65536 code) et faire une recherchev sur la table ( penses à la poser ailleurs que sur ta zone de travail en $e$1 par exemple)
__________________
Cordialement Daranc |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Merci pour vos réponses.
Je ne veux pas rapatrier toute la table SQL car on parle de plusieurs centaines de milliers de lignes, donc exit la solution du TCD ou de la RECHERCHEV... Sinon pour faire simple j'aurais tapé ma requête dans SQL Studio Management et copié le résultat. Je voudrais simplement que la requête se répète autant de fois qu'il y a de lignes à remplir dans la colonne B, avec comme variable le contenu de la cellule d'à côté (colonne A). Grosso modo on pourra imaginer une formule comme ça pour imager : - A -|- B - 123 | =REQUETE_SQL(maBDD;"SELECT Libelle FROM maTABLE WHERE Gencod = A1";FAUX) 456 | =REQUETE_SQL(maBDD;"SELECT Libelle FROM maTABLE WHERE Gencod = A2";FAUX) 789 | =REQUETE_SQL(maBDD;"SELECT Libelle FROM maTABLE WHERE Gencod = A3";FAUX) J'ai vu passer un fichier Excel il y a quelques années qui faisait ça (pas comme je viens d'imager mais avec MS QUERY dans Excel et la selection d'une variable) mais impossible de le reproduire, pourtant je suis sûr de ne pas être loin. Yat' |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 166 ![]() |
essayes d'enregistrer une macro en créant ta requête
le filtre sera écrit dans le code enregistré par exemple un date de debut et une de fin tu aura dans le sql écrit dans la macro les date qui apparaitront (un format spécial sql ) tu repères deux cellules qui vont te servir de butoir dans lesquelles tu entreras les dates. tu fait une moise en forme en entrée de procedure du type Code :
Code :
AND (RELEVE.DATE_DECL>=" & debut$ & " And RELEVE.DATE_DECL<=" & fin$ & ")"
__________________
Cordialement Daranc |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com