Intégrer le contenu d'une cellule dans une requête SQL

Bonjour,

Je souhaiterai récupérer des informations d'une base SQL server pour alimenter des cellules d'un fichier excel jusqu'ici ça va j'ai créer une connexion de donnée et ça fonctionne

Mais le soucis c'est qu'il faudrait que j'intègre dans ma requête une valeur (une date) que je saisirai au préalable dans une des cellules de ce même fichier et la je n'ai rien trouvé

Merci pour lecoup de main si c'est possible

Salut,

Pourrais tu nous envoyer un exemple ? J'ai un peu de mal a qualifier ta demande.

Tu fais une requête en VBA ?

Si tu veux integrer la valeur d'une cellule dans une requête excel en VBA :

Imaginons que la date est dans la cellule A1

Alors : SQL = select * from matable where date ='" & cells(1,1) & "'"

Mais je pense pas que cela soit une réponse pour toi.

Bigdams

Merci

j'utilise une connexion existante dans excel(créer dans mes sources de données utilisateurs de l'ODBC)

dans les propriété de cette connexion j'ai la chaine de connexion et le texte de commande(ma requete)

le resultat se met bien dans ma 1ere feuille mais je doit filtrer en fonction de la date d'un des champs

cette date n'étant pas fixe il faudrait que je la saisisse dans une celulle et que la requete l'utilise

je voulais eviter le VBA car la programmation n'est pas vraiement mon fort (Ps : j'ai quand même essayer mais j'était a priori bloquer a cause de la longeur de ma requete)

Re,

Si j'ai bien compris:

Tu veux variabiliser une requête avec une date (where date ="XX/XX/XXX")

Aujourd'hui ce n'est pas le cas et tu recupere le resultat de la requete non filtré (toute les dates).

Le but est de n''afficher que les lignes dont les dates correspondent à une date préalablement saisie dans un champ.

Mon avis :

Je ne sais pas si cela est possible de varaibiliser la requête directement dans la config ODBC. (cela me semble complexe)

Si tu as deja tout les valeurs dans le fichier Excel, pourquoi ne pas faire un traitement ensuite et ne filtrer que les données en fonction de la date ?

Sinon en VBA, il n'y a pas de restriction de longueur de requête, peux-tu m'envoyer la requête en question afin de faire un test.

Bigdams

c'est exactement ça

Variabiliser la requete dans la config ODBC aurais eu l'avantage de simplifier l'utilisation du fichier excel (utiliser par des non informaticien) : un simple bouton de raffraichissement et hop tout est a jour(rapide en plus) et je peut protéger la feuille contre les modifications

Mais si non possible je vais réessayer le VBA

pour info ma requete est la suivante :

SELECT  ACTUAL_PERIODIC_BONUS.EMPLOYEE_SURNAME, ACTUAL_PERIODIC_BONUS.EMPLOYEE_FIRST_NAME, ACTUAL_PERIODIC_BONUS.EMPLOYEE_IDENTIFICATION_NUMBER, ACTUAL_PERIODIC_BONUS.SECTION_DESCRIPTION, ACTUAL_PERIODIC_BONUS.BONUS_TYPE_DESCRIPTION, ACTUAL_PERIODIC_BONUS.BONUS_TYPE_ABBREVIATION, EMPLOYEE_FIELD_ASSIGNMENT.EMPLOYEE_FIELD_VALUE, SUM(ACTUAL_PERIODIC_BONUS.UNITS)   from ACTUAL_PERIODIC_BONUS left outer join EMPLOYEE_FIELD_ASSIGNMENT  on ACTUAL_PERIODIC_BONUS.EMPLOYEE_KEY=EMPLOYEE_FIELD_ASSIGNMENT.EMPLOYEE_KEY  where (ACTUAL_PERIODIC_BONUS.BONUS_TYPE_ABBREVIATION = 'JTSH')   and EMPLOYEE_FIELD_ASSIGNMENT.EMPLOYEE_FIELD_DESCRIPTION = 'TEMPS PARTIEL'  GROUP BY ACTUAL_PERIODIC_BONUS.EMPLOYEE_SURNAME, ACTUAL_PERIODIC_BONUS.EMPLOYEE_FIRST_NAME, ACTUAL_PERIODIC_BONUS.EMPLOYEE_IDENTIFICATION_NUMBER, ACTUAL_PERIODIC_BONUS.SECTION_DESCRIPTION, ACTUAL_PERIODIC_BONUS.BONUS_TYPE_DESCRIPTION, ACTUAL_PERIODIC_BONUS.BONUS_TYPE_ABBREVIATION, EMPLOYEE_FIELD_ASSIGNMENT.EMPLOYEE_FIELD_VALUE ORDER BY ACTUAL_PERIODIC_BONUS.EMPLOYEE_SURNAME, ACTUAL_PERIODIC_BONUS.EMPLOYEE_FIRST_NAME

Salut,

Encore moi, je ne dis pas que cela n'est pas possible, attend un peu... Peut être que quelqun saura le faire et te répondra.

Je regarde ta requête mais je suis un peu chargé alors sois patient...

++

Je m'en suis sorti avec vba

exemple avec une requête simple

Sub Traitement()

Sheets("Feuil2").Select
valeur= Cells(1, 6)
        With ActiveWorkbook.Connections("requête1").ODBCConnection
        .BackgroundQuery = True
        .CommandText = "SELECT * FROM nom_table WHERE nom_champ < '" & valeur & "'"
        .CommandType = xlCmdSql
        .Connection = Array(Array( _
        "ODBC;DSN=AdresseIP_Serveur_SQL;Description=Datamart Mon_Datamart;UID=login;PWD=motdepasse;APP=2007 Microsoft Office system;WSID=XXXB;DATAB" _
        ), Array("ASE=Mon_Datamart"))
        .RefreshOnFileOpen = True
        .SavePassword = True
        .SourceConnectionFile = ""
        .SourceDataFile = ""
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    With ActiveWorkbook.Connections("requête1")
        .Name = "requête1"
        .Description = ""
    End With

ActiveWorkbook.RefreshAll
    MsgBox ("Traitement terminé !")

End Sub

merci

Rechercher des sujets similaires à "integrer contenu requete sql"