Requete type SQL sur excel, besoin d'aide

sim

XLDnaute Occasionnel
Bonjour a tous!!

Alors me voila avec un probleme de taille!! Alors ce fil s'adresse au courageux qui non pas froid au yeux!!!

On m'a aider a creer une SQL, me permettant de faire des comparaisons d'un mois sur l'autre de la meme feuille. Dans l'exemple j'ai trois feuilles (mars avril mai) avec les changement fait sur la feuille "changements".


Malheureusement je n'arrive pas a l'adapter a excel et je n'ai absolument aucune idee de la facon de la mettre en place.

La SQL s'aide d'une clee pour comparer les colonnes

Voici une requête union (qui réunit 3 requêtes en une seule) pour faire apparaître les changements d’un mois M et d’un mois M-1
Cette requête retourne 1 seule ligne par changement effectif. Par exemple les quatres lignes du mois de mars disparues en avril et qui sont identiques, n’en feront en fait, qu’une seule. (Cf PJ)

Les deux premières requêtes (ajout et suppression) compare les iRules Descriptions en s’appuyant sur les Brand Familly C et une relation de 1 à plusieurs sur iRule Description.
Elles sont identiques (à un poil près) à part que M devient M-1 et M-1 devient M

La troisème ne fait qu’une comparaison textuelles sur iRuleDescription en s’appuyant sur une relation de 1 à plusieurs sur CLEE
Pour que la modification soit prise en compte, il faut que la clef soit la même dans M et M-1 mais le iRule description soit différent.


Code:
‘----------------------------------------Texte de la requête
SELECT M.CLEE, M.[iRule Description], "added" AS State, DateAdd("m",-1,[M].[DateH]) AS [Date of change]
FROM MAI AS M LEFT JOIN AVRIL AS [M-1] ON M.[iRule Description] = [M-1].[iRule Description]
GROUP BY M.CLEE, M.[Brand Family C], M.[iRule Description], [M-1].[iRule Description], "added", DateAdd("m",-1,[M].[DateH])
HAVING ((([M-1].[iRule Description]) Is Null))
UNION
SELECT [M-1].CLEE, [M-1].[iRule Description], "deleted " AS State, DateAdd("m",1,[M-1].[DateH]) AS [Date of change]
FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].[iRule Description] = M.[iRule Description]
GROUP BY [M-1].CLEE, [M-1].[iRule Description], "deleted ", DateAdd("m",1,[M-1].[DateH]), [M-1].[Brand Family C], M.[iRule Description]
HAVING (((M.[iRule Description]) Is Null))
UNION
SELECT [M-1].CLEE, [M-1].[iRule Description], "modified " AS State, [M-1].DateH AS [Date of change]
FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].CLEE = M.CLEE
GROUP BY [M-1].CLEE, [M-1].[iRule Description], "Modified ", [M-1].DateH, M.[iRule Description], M.CLEE
HAVING (((M.[iRule Description])<>[M-1].[iRule Description]));

Voila, donc mon soucy, et mes connaissance sont tres loin de pouvoir resoudre dle soucy, alors si jamais ca parle a quelqu'un ca serait vraiement fortement apprecie!!! :)

Bonne journee a tous.

Sim.
 

Pièces jointes

  • Hisorisation_FX_EXEMPLE.zip
    9.9 KB · Affichages: 25
Dernière édition:

sim

XLDnaute Occasionnel
Re : Requete type SQL sur excel, besoin d'aide

Re,

Si un pro (pas besoin de facture) passe par la je suis tout a fait pres faire appel a vos services. Une journee de recherche et je n'ai pas avancer d'un poil.

Merci d'avance!

Sim
 

sim

XLDnaute Occasionnel
Re : Requete type SQL sur excel, besoin d'aide

Re a tous et a toutes!!

Etre entete parfois ca paye!!

Voici l'adaptation de la SQL a Excel, je sais c'etait tout bete mais on sait tous que parfois avec excel les choses toutes betes prennent bcp de temps!! :)

Code:
SQL = "SELECT M.CLEE, M.[iRule Description], 'added' AS State, DateAdd('m',-1,[M].[DateH]) AS [Date of change] " & _
      "FROM [MAI$] AS M LEFT JOIN [AVRIL$] AS [M-1] ON M.[iRule Description] = [M-1].[iRule Description] " & _
      "GROUP BY M.CLEE, M.[Brand Family C], M.[iRule Description], [M-1].[iRule Description], 'added', DateAdd('m',-1,[M].[DateH]) " & _
      "HAVING ((([M-1].[iRule Description]) Is Null)) " & _
      "Union " & _
      "SELECT [M-1].CLEE, [M-1].[iRule Description], 'deleted' AS State, DateAdd('m',1,[M-1].[DateH]) AS [Date of change] " & _
      "FROM [MARS$] AS [M-1] LEFT JOIN [AVRIL$] AS M ON [M-1].[iRule Description] = M.[iRule Description] " & _
      "GROUP BY [M-1].CLEE, [M-1].[iRule Description], 'deleted', DateAdd('m',1,[M-1].[DateH]), [M-1].[Brand Family C], M.[iRule Description] " & _
      "HAVING (((M.[iRule Description]) Is Null)) " & _
      "Union " & _
      "SELECT [M-1].CLEE, [M-1].[iRule Description], 'modified' AS State, [M-1].DateH AS [Date of change] " & _
      "FROM [MARS$] AS [M-1] LEFT JOIN [AVRIL$] AS M ON [M-1].CLEE = M.CLEE " & _
      "GROUP BY [M-1].CLEE, [M-1].[iRule Description], 'Modified', [M-1].DateH, M.[iRule Description], M.CLEE " & _
      "HAVING (((M.[iRule Description])<>[M-1].[iRule Description]));"

Merciii a ceux qui ont passe leur temps sur mon cas :)

Sim