Union dans une sous-requete en excel vba
mady13camara
Messages postés
1
Statut
Membre
-
mady13camara -
mady13camara -
Bonjour,
Ca fait deux jours que je parviens pas a resoudre un probleme qui me fatigue vraiment malgré pas mal de recherches sur le net.Le voici:
Jai une base composée de 3 tables:
-Inscrits (MsisdnClient,Date)
-TransactionsClient(MsisdnBeneficiaire,Date,Statut,Type)
-PlageASuspendre(MsisdnASuspendre)
Je voudrais faire une requete qui puisse me sortir les MsisdnASuspendre qui n'ont pas été inscrits et n'ont pas fait de transactions sur une periode donnée.Mon code actuel se présente comme suit:
Tout marche bien mais c'est au niveau de ma requete jai l'erreur Erreur Systeme &H80040E14 (-2147217900).
Merci d'avance pour l'aide
Cdt
Ca fait deux jours que je parviens pas a resoudre un probleme qui me fatigue vraiment malgré pas mal de recherches sur le net.Le voici:
Jai une base composée de 3 tables:
-Inscrits (MsisdnClient,Date)
-TransactionsClient(MsisdnBeneficiaire,Date,Statut,Type)
-PlageASuspendre(MsisdnASuspendre)
Je voudrais faire une requete qui puisse me sortir les MsisdnASuspendre qui n'ont pas été inscrits et n'ont pas fait de transactions sur une periode donnée.Mon code actuel se présente comme suit:
Sub MsisdnSuspense()
Dim Cn As Object
Dim strConnection As String
Dim rs As Object
Dim strSql As String
'Je récupère la plage de jours à étudier, en les convertissants en date US (pour requête SQL°
Dim DateDebut As String
Dim DateFin As String
'J'ajoute un jour à la date de fin pour éviter l'erreur de date longue
DateFin = DateAdd("d", 1, ThisWorkbook.Worksheets("Plage Msisdn").Cells("4", "D"))
' Je mets en forme pour requête SQL
DateDebut = VBA.Format(CDate(ThisWorkbook.Worksheets("Plage Msisdn").Cells("2", "D")), "mm/dd/yyyy")
DateFin = VBA.Format(CDate(DateFin), "mm/dd/yyyy")
Set Cn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\Bdd OM\BaseSuspension.accdb"
Cn.Open strConnection
'Je configure la requête SQL
strSql = "SELECT MsisdnASuspendre"
strSql = strSql & " FROM PlageASuspendre"
strSql = strSql & " WHERE MsisdnASuspendre NOT IN"
strSql = strSql & " (SELECT Inscrits.MsisdnClient FROM Inscrits WHERE Inscrits.[Date] >=#" & DateDebut & "# AND Inscrits.[Date] <#" & DateFin & "#"
strSql = strSql & " UNION"
strSql = strSql & " SELECT TransactionsClient.MsisdnBeneficiaire FROM TransactionsClient WHERE Statut LIKE '%Success' AND Type LIKE '%Cash in' AND TransactionsClient.[Date] >=#" & DateDebut & "# AND TransactionsClient.[Date] <#" & DateFin & "#);"
MsgBox strSql
Set rs = Cn.Execute(strSql)
'J'affecte le résultat à la variable de retour
ThisWorkbook.Worksheets("Plage Msisdn").Range("A7").CopyFromRecordset rs
'je ferme les variables objets
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
MsgBox "test"
End Sub
Tout marche bien mais c'est au niveau de ma requete jai l'erreur Erreur Systeme &H80040E14 (-2147217900).
Merci d'avance pour l'aide
Cdt
A voir également:
- Union dans une sous-requete en excel vba
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
1 réponse
Bonjour
a 1° vue:
Tu combines 3 tables sans effectuer de jointure ; il semble que la syntaxe serait
Select.... FROM .... LEFT JOIN Table2 ON condition ...
sur 2 niveaux (table3)
et comme condition
champ IS NULL
a 1° vue:
Tu combines 3 tables sans effectuer de jointure ; il semble que la syntaxe serait
Select.... FROM .... LEFT JOIN Table2 ON condition ...
sur 2 niveaux (table3)
et comme condition
champ IS NULL
mady13camara
Merci du retour michel mais vu que c'est une UNION est-ce vraiment de joindre les tables?