J'ai une table avec un champ "FORMATIONS", j'aimerai=20
regroupe dans un m=EAme champ les valeurs contenue dans le =20
champ "FORMATIONS"....
Ex:
"Formations"
F1
F2
F3
.....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Xavier HUE
Bonjour,
1) Requête Analyse Croisée (créée avec l'assistant): TRANSFORM First(Formations.Valeur) AS PremierDeValeur SELECT Formations.Id1 FROM Formations GROUP BY Formations.Id1 PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " & [F5] AS Fx FROM [Table2_Analyse croisée];
Un bémol: La requête No 2 reprend "en dur" les codes retournés par la requête Analyse Croisée. Si plus tard tu crées de nouveaux codes, il faudra les ajouter dans celle-ci.
Un autre moyen serait de travailler par VBA.
Ca aide? Cordialement.
Bonjour,
1) Requête Analyse Croisée (créée avec l'assistant):
TRANSFORM First(Formations.Valeur) AS PremierDeValeur
SELECT Formations.Id1
FROM Formations
GROUP BY Formations.Id1
PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse
croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse
croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " &
[F5] AS Fx
FROM [Table2_Analyse croisée];
Un bémol:
La requête No 2 reprend "en dur" les codes retournés par
la requête Analyse Croisée. Si plus tard tu crées de
nouveaux codes, il faudra les ajouter dans celle-ci.
1) Requête Analyse Croisée (créée avec l'assistant): TRANSFORM First(Formations.Valeur) AS PremierDeValeur SELECT Formations.Id1 FROM Formations GROUP BY Formations.Id1 PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " & [F5] AS Fx FROM [Table2_Analyse croisée];
Un bémol: La requête No 2 reprend "en dur" les codes retournés par la requête Analyse Croisée. Si plus tard tu crées de nouveaux codes, il faudra les ajouter dans celle-ci.
Un autre moyen serait de travailler par VBA.
Ca aide? Cordialement.
M
Merci je fais déja cela je le voudrais en VBA car plus souple en cas de changement de valeurs.....
-----Message d'origine----- Bonjour,
1) Requête Analyse Croisée (créée avec l'assistant): TRANSFORM First(Formations.Valeur) AS PremierDeValeur SELECT Formations.Id1 FROM Formations GROUP BY Formations.Id1 PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " & [F5] AS Fx FROM [Table2_Analyse croisée];
Un bémol: La requête No 2 reprend "en dur" les codes retournés par
la requête Analyse Croisée. Si plus tard tu crées de nouveaux codes, il faudra les ajouter dans celle-ci.
Un autre moyen serait de travailler par VBA.
Ca aide? Cordialement. .
Merci je fais déja cela je le voudrais en VBA car plus
souple en cas de changement de valeurs.....
-----Message d'origine-----
Bonjour,
1) Requête Analyse Croisée (créée avec l'assistant):
TRANSFORM First(Formations.Valeur) AS PremierDeValeur
SELECT Formations.Id1
FROM Formations
GROUP BY Formations.Id1
PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse
croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse
croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " &
[F5] AS Fx
FROM [Table2_Analyse croisée];
Un bémol:
La requête No 2 reprend "en dur" les codes retournés
par
la requête Analyse Croisée. Si plus tard tu crées de
nouveaux codes, il faudra les ajouter dans celle-ci.
Merci je fais déja cela je le voudrais en VBA car plus souple en cas de changement de valeurs.....
-----Message d'origine----- Bonjour,
1) Requête Analyse Croisée (créée avec l'assistant): TRANSFORM First(Formations.Valeur) AS PremierDeValeur SELECT Formations.Id1 FROM Formations GROUP BY Formations.Id1 PIVOT Formations.Valeur;
2) Requête concaténant les champs:
SELECT [Table2_Analyse croisée].F1, [Table2_Analyse croisée].F2, [Table2_Analyse croisée].F4, [Table2_Analyse croisée].F5, [F1] & ", " & [F2] & ", " & [F4] & ", " & [F5] AS Fx FROM [Table2_Analyse croisée];
Un bémol: La requête No 2 reprend "en dur" les codes retournés par
la requête Analyse Croisée. Si plus tard tu crées de nouveaux codes, il faudra les ajouter dans celle-ci.
Un autre moyen serait de travailler par VBA.
Ca aide? Cordialement. .
Xavier HUE
Bonjour,
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If
End Sub
Cordialement. Xavier.
Bonjour,
Sub ConcatenerColonnes()
Dim db As Database
Dim Frd As Recordset
Dim intF As Integer
Dim strConcat As String
Set db = CurrentDb
Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner:
' Un champ en tant que Entête de ligne
' les Champs contenant les valeurs F1, F2...
' soit par exemple
' XXXXX F1 F2 F4 F6
' YYYYY F1 F3 F4
If Not (Frd.BOF) Then
Frd.MoveFirst
While Not (Frd.EOF)
strConcat = ""
For intF = 1 To Frd.Fields.Count - 1
If Not (IsNull(Frd.Fields(intF).Value)) Then
strConcat = strConcat & Frd.Fields(intF).Value
& ", "
End If
Next intF
If strConcat <> "" Then 'Supprimer dernière
virgule et espace
strConcat = Left(strConcat, Len(strConcat) - 2)
End If
'Ici, placer le code utilisant strConCat
' ...
Frd.MoveNext
Wend
End If
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If
End Sub
Cordialement. Xavier.
M
Bonjour
Je teste de suite
Merci beaucoup
A+
-----Message d'origine----- Bonjour,
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If
End Sub
Cordialement. Xavier. .
Bonjour
Je teste de suite
Merci beaucoup
A+
-----Message d'origine-----
Bonjour,
Sub ConcatenerColonnes()
Dim db As Database
Dim Frd As Recordset
Dim intF As Integer
Dim strConcat As String
Set db = CurrentDb
Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner:
' Un champ en tant que Entête de ligne
' les Champs contenant les valeurs F1, F2...
' soit par exemple
' XXXXX F1 F2 F4 F6
' YYYYY F1 F3 F4
If Not (Frd.BOF) Then
Frd.MoveFirst
While Not (Frd.EOF)
strConcat = ""
For intF = 1 To Frd.Fields.Count - 1
If Not (IsNull(Frd.Fields(intF).Value)) Then
strConcat = strConcat & Frd.Fields(intF).Value
& ", "
End If
Next intF
If strConcat <> "" Then 'Supprimer dernière
virgule et espace
strConcat = Left(strConcat, Len(strConcat) - 2)
End If
'Ici, placer le code utilisant strConCat
' ...
Frd.MoveNext
Wend
End If
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If
End Sub
Cordialement. Xavier. .
Bonojour
J'ai fais la 1ére méthodes qui differe de la mienne je n'est pas le résultat attendu.
NOMPRENOM Formation1 Formation2 Formation3 XXXXXX F1 F2 yyyyyyy F6 F4 yyyyyyy F5 ZZZZZZZ F1 F3
Fx donne F1, F2, j'aimerai avoir
Fx Fxx XXXXX F1, F2, YYYYY F6,F5 ,, Merci
-----Message d'origine----- Bonjour,
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If
End Sub
Cordialement. Xavier. .
Bonojour
J'ai fais la 1ére méthodes qui differe de la mienne je
n'est pas le résultat attendu.
NOMPRENOM Formation1 Formation2 Formation3
XXXXXX F1 F2
yyyyyyy F6 F4
yyyyyyy F5
ZZZZZZZ F1 F3
Fx donne F1,
F2,
j'aimerai avoir
Fx Fxx
XXXXX F1, F2,
YYYYY F6,F5 ,,
Merci
-----Message d'origine-----
Bonjour,
Sub ConcatenerColonnes()
Dim db As Database
Dim Frd As Recordset
Dim intF As Integer
Dim strConcat As String
Set db = CurrentDb
Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner:
' Un champ en tant que Entête de ligne
' les Champs contenant les valeurs F1, F2...
' soit par exemple
' XXXXX F1 F2 F4 F6
' YYYYY F1 F3 F4
If Not (Frd.BOF) Then
Frd.MoveFirst
While Not (Frd.EOF)
strConcat = ""
For intF = 1 To Frd.Fields.Count - 1
If Not (IsNull(Frd.Fields(intF).Value)) Then
strConcat = strConcat & Frd.Fields(intF).Value
& ", "
End If
Next intF
If strConcat <> "" Then 'Supprimer dernière
virgule et espace
strConcat = Left(strConcat, Len(strConcat) - 2)
End If
'Ici, placer le code utilisant strConCat
' ...
Frd.MoveNext
Wend
End If
J'ai fais la 1ére méthodes qui differe de la mienne je n'est pas le résultat attendu.
NOMPRENOM Formation1 Formation2 Formation3 XXXXXX F1 F2 yyyyyyy F6 F4 yyyyyyy F5 ZZZZZZZ F1 F3
Fx donne F1, F2, j'aimerai avoir
Fx Fxx XXXXX F1, F2, YYYYY F6,F5 ,, Merci
-----Message d'origine----- Bonjour,
Sub ConcatenerColonnes() Dim db As Database Dim Frd As Recordset Dim intF As Integer Dim strConcat As String
Set db = CurrentDb Set Frd = db.OpenRecordset("Table2_Analyse croisée")
'La Requête Analyse Croisée doit retourner: ' Un champ en tant que Entête de ligne ' les Champs contenant les valeurs F1, F2... ' soit par exemple ' XXXXX F1 F2 F4 F6 ' YYYYY F1 F3 F4
If Not (Frd.BOF) Then Frd.MoveFirst While Not (Frd.EOF) strConcat = "" For intF = 1 To Frd.Fields.Count - 1 If Not (IsNull(Frd.Fields(intF).Value)) Then strConcat = strConcat & Frd.Fields(intF).Value & ", " End If Next intF
If strConcat <> "" Then 'Supprimer dernière virgule et espace strConcat = Left(strConcat, Len(strConcat) - 2) End If
'Ici, placer le code utilisant strConCat ' ... Frd.MoveNext Wend End If