Modifier Requête SQL avec VBA

Bonjour à tous. Jusqu'alors j'ai trouvé sur ce forum toutes les réponses à mes questions mais là j'avoue que je sèche...

Explications:

J'ai un classeur EXCEL avec lequel je me connecte à mon serveur SQL. J'ai une notion de date dans ma commande SQL que je souhaiterais pouvoir modifier à chaque rafraîchissement sans avoir à retourner dans les propriétés de la connexion. Pour faire bref, je souhaite qu'une macro, par le biais d'une invite utilisateur, puisse me permettre de renseigner les dates et actualise par la même occasion ma requête.

Pour info, voici la partie de la commande SQL qui comprend la notion de dates:

 Where ( tgAgendaTarea.InicioFecha Between '01/01/2015' And '15/05/2015' ) 

Et la commande dans son intégralité (qui fonctionne très bien):

Select "Date Action","Type Action","Vendeur Action","Créateur Action","Sujet de l'Action","Observation sur l'Action"  From ( Select Convert(VarChar, tgAgendaTarea.InicioFecha, 103) As "Date Action",tgAgendaTareaCodigo.Descrip As "Type Action",LTRIM(RTRIM(IsNull(tgVendedorAction.Nombre,'')) + ' ' + RTRIM(IsNull(tgVendedorAction.Apellido1,''))) As "Vendeur Action",RTRIM(LTRIM(tyUsuarioCreateur.Nombre)) As "Créateur Action",tgAgendaTarea.Asunto As "Sujet de l'Action",tgAgendaTarea.Observa As "Observation sur l'Action" From ((tgAgendaTarea LEFT JOIN tgAgendaTareaCodigo ON (tgAgendaTarea.Emp = tgAgendaTareaCodigo.Emp And tgAgendaTarea.codigo = tgAgendaTareaCodigo.codigo)) LEFT JOIN (TGVENDEDOR TGVENDEDORACTION LEFT JOIN TYUSUARIO TYUSUARIOACTION ON (TGVENDEDORACTION.VENDEDOR = TYUSUARIOACTION.CODIGO)) ON (TGAGENDATAREA.EMP = TGVENDEDORACTION.EMP AND TGAGENDATAREA.DEQUIEN = TGVENDEDORACTION.VENDEDOR) ) LEFT JOIN TYUSUARIO TYUSUARIOCREATEUR ON TGAGENDATAREA.DEQUIENORIGEN = TYUSUARIOCREATEUR.CODIGO  Where ( tgAgendaTarea.InicioFecha Between '01/01/2015' And '15/05/2015' ) And ( (tgAgendaTarea.Codigo in ('28                       ','02                       ','202                      ','03                       ','18                       ','04                       ','103                      ','27                       ','29                       ','101                      ','07                       ','20                       ','30                       ','201                      ','25                       ','26                       ','10                       ','100                      ','05                       ','06                       ','110                      ','108                      ','109                      ','17                       ','16                       ','102                      ','13                       ','104                      ','106                      ','107                      ','01                       ')) ) And ( tgAgendaTarea.Emp = '001' ) And tgAgendaTarea.AQuien In (Select tgCliente.Codigo  From (tgCliente LEFT JOIN tgCortesia ON (tgCliente.Cortesia = tgCortesia.Codigo)) LEFT JOIN TGPOBLA ON (TGCLIENTE.POBLA = TGPOBLA.ID) Where ( Not tgCliente.Codigo in (select Codigo from tgClienteFAC where TipoCliente > 0) ) And ( (CASE WHEN TgCliente.Codigo in (select AQUIEN from TGAGENDATAREA) THEN 1 ELSE 0 END in (1)) )) ) Requete2

J'espère avoir été assez clair. Merci d'avance pour votre aide !

Damien

Bonjour,

Atoutzazard....

Essaie ainsi (non testé...)

Dim DateDeb As Date, DateFin As Date
DateDeb = InputBox("Mettre la date de début sous la forme jj/mm/yyyy")
DateFin = InputBox("Mettre la date de fin sous la forme jj/mm/yyyy")
If DateFin >= DateDeb Then
'tout le début du code &
'Where ( tgAgendaTarea.InicioFecha Between '" & DateDeb & "' And '" & DateFin & "' )
End If

Attention, il y a un ' puis un " puis un espace, puis & puis espace puis DateDeb puis espace, puis & puis " puis '

Idem pour DateFin

Bon courage

Bonjour,

Puisque tu travailles avec Excel 2013, tu peux peut-être travailler avec 'Microsoft Power Query for Excel'.

C'est gratuit.

Je découvre et apparemment c'est puissant.

Il y a aussi PowerPivot (MS Office Pro).

Cdlt.

Merci beaucoup pour vos réponses !

cousinhub a écrit :

Bonjour,

Atoutzazard....

Essaie ainsi (non testé...)

Dim DateDeb As Date, DateFin As Date
DateDeb = InputBox("Mettre la date de début sous la forme jj/mm/yyyy")
DateFin = InputBox("Mettre la date de fin sous la forme jj/mm/yyyy")
If DateFin >= DateDeb Then
'tout le début du code &
'Where ( tgAgendaTarea.InicioFecha Between '" & DateDeb & "' And '" & DateFin & "' )
End If

Attention, il y a un ' puis un " puis un espace, puis & puis espace puis DateDeb puis espace, puis & puis " puis '

Idem pour DateFin

Bon courage

Alors j'ai essayé mais n'étant pas vraiment un spécialiste du VB, l'essai n'a pas été très concluant...

Jean-Eric a écrit :

Bonjour,

Puisque tu travailles avec Excel 2013, tu peux peut-être travailler avec 'Microsoft Power Query for Excel'.

C'est gratuit.

Je découvre et apparemment c'est puissant.

Il y a aussi PowerPivot (MS Office Pro).

Cdlt.

En effet, après installation de Power Query, j'ai créé mon rapport en 1h environ. Prise en main facile, suffit juste de trouver les bonnes infos et de mettre en application. Merci beaucoup !

Rechercher des sujets similaires à "modifier requete sql vba"