Bonjour à tous,
C'est un exercice est en pure SQL, pas d'ajout d'appel à une fonction VBA dont je vous donne la solution en fin de post
J'ai les données suivantes (jointes en fichier texte)
RecordID Order Stage Person StageDate 1 1 A1 Allan 01-May 2 1 Brody 04-May 3 1 A2 Cash 05-May 4 2 A1 Neff 08-May 5 2 A2 Dub 08-May 6 2 A3 Duff 09-May 7 3 A1 Pat 15-May 8 3 Allan 20-Jun 9 3 A2 Brody 21-Jun 10 4 A1 Duff 03-May 11 4 Brody 05-May 12 4 A2 Duff 09-May 13 4 A3 Cash 10-May
Je veux obtenir
Order StagePersonDateSeries
1 A1 Allan 01-May A2 Cash 05-May
2 A1 Neff 08-May A2 Dub 08-May A3 Duff 09-May
3 A1 Pat 15-May A2 Brody 21-Jun
4 A1 Duff 03-May A2 Duff 09-May A3 Cash 10-May
avec
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TRANSFORM First([Stage] & [Person] & [StageDate]) AS exp1 SELECT tblMyData.Order FROM tblMyData WHERE (((tblMyData.Stage)<>"")) GROUP BY tblMyData.Order PIVOT tblMyData.Stage;
J'obtiens
Order StagePersonDateSeries
1 A1 Allan 01-May A2 Cash 05-May
2 A1 Neff 08-May A2 Dub 08-May A3 Duff 09-May
3 A1 Pat 15-May A2 Brody 21-Jun
4 A1 Duff 03-May A2 Duff 09-May A3 Cash 10-May
Order StagePersonDateSeries 1 A1 Allan 01-May A2 Cash 05-May 2 A1 Neff 08-May A2 Dub 08-May A3 Duff 09-May 3 A1 Pat 15-May A2 Brody 21-Jun 4 A1 Duff 03-May A2 Duff 09-May A3 Cash 10-May
Maintenant comment faire pour fusionner les colonnes de caque lignes ????
Merci pour votre aide
Pour le plaisir, solution avec fonction VBA
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DISTINCT tblMyData.Order, SimpleCSV("SELECT [Stage] & ' ' & [Person] & ' ' & [StageDate] FROM tblMyData WHERE [Stage] is not null And [Order] = " & [Order]," ") AS StagePersonDateSeries FROM tblMyData;
Dans un module
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Public Function SimpleCSV(strSQL As String, _ Optional strDelim As String = ",") As String 'Downloaded from theDBguy's site 'Returns a comma delimited string of all the records in the SELECT SQL statement 'Source: http://accessmvp.com/thedbguy Option Compare Database Option Explicit Public Function SimpleCSV(strSQL As String, _ Optional strDelim As String = ",") As String 'Downloaded from theDBguy's site 'Returns a comma delimited string of all the records in the SELECT SQL statement 'Source: http://accessmvp.com/thedbguy 'v1.0 - 8/20/2013 Dim db As DAO.Database Dim rs As DAO.Recordset Dim strCSV As String Set db = CurrentDb() Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) 'Concatenate the first (and should be the only one) field from the SQL statement With rs Do While Not .EOF strCSV = strCSV & strDelim & .Fields(0) .MoveNext Loop .Close End With 'Remove the leading delimiter and return the result SimpleCSV = Mid$(strCSV, Len(strDelim) + 1) Set rs = Nothing Set db = Nothing End Function
Partager