[ACCESS] Concatener entièrement une colonne

Résolu/Fermé
LaConcatenation - 30 sept. 2022 à 16:04
 LaConcatenation - 4 oct. 2022 à 14:48

Bonjour,

Je ne sais pas si ça doit passer par du SQL ou du VBA (je prends tout), mais je bloque sur quelque chose de probablement simple.. Quand je fais mes recherches, je tombe sur plus compliqué.

Je cherche 'simplement' à concaténer l’entièreté d'une colonne d'une table vers une seule et même cellule séparé par des pipe "|", sur l'intégralité d'une colonne d'une requête.

Exemple (la colonne 2 est juste la pour spécifier que j'ai plusieurs colonne dans ma table) :

Je veux que mes valeurs de la colonne1 de Ma_Table soit intégralement concaténées et séparées par des pipes, dans toutes les cellules de la colonne2 de Ma_Requête

Table : Ma_Table

Colonne1           Colonne2

A                        1
B                        2
C                        3
D                        4


Résultat souhaité :

Requête : Ma_Requête

Colonne1                        Colonne2

Donnée 1 colonne 1       A|B|C|D
Donnée 2 colonne 1       A|B|C|D
Donnée 3 colonne 1       A|B|C|D
Donnée 4 colonne 1       A|B|C|D

En espérant avoir été assez clair dans ma demande !

Merci d'avance.
Windows / Firefox 102.0

A voir également:

2 réponses

yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 Ambassadeur 1 556
30 sept. 2022 à 20:32

bonjour,

sur quoi tombes-tu?  as-tu testé?

0
LaConcatenation
3 oct. 2022 à 10:39

Bonjour,

Si la question est 'est ce que j'ai essayé par moi même' malheureusement oui, j'essaye toujours avant de demander, sinon pas de progression :D
 

J'ai essayé plusieurs choses en provenances de divers sujets de forum, mais je n'ai pas réussi à trouver un sujet qui correspondait à mon besoin, donc j'ai du faire des tests et bidouiller à chaque fois, mais sans aucun résultat qui s'approche de prêt ou de loin à ce que je cherche..

Merci pour l'attention portée à mon pb :)

0
yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556 > LaConcatenation
3 oct. 2022 à 10:53

Tu imagines probablement à tort que c'est très simple.

Montre-nous ce que tu as essayé, et ce que tu as obtenu, nous pourrons sans doute t'aider.

A tout hasard, tu peux t'inspirer de ceci: https://stackoverflow.com/questions/54328595/access-vba-concatenate-single-column-query-into-a-single-line-result

1
LaConcatenation > yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
Modifié le 4 oct. 2022 à 12:02

Ma réponse semble s'être volatilisée..

Merci, ton lien m'a lancé sur une piste !

En fait en voyant les différentes propositions sur ton lien je me suis souvenu d'un bout de code que j'avais utilisé pour autre chose. Je l'ai adapté et après un peu de temps et de nombreux échecs, j'ai réussi à faire marcher la bête.

ublic Function Concatenation() As String


Dim res As DAO.Recordset
Dim sql As String
'Selectionne la colonne Ma_colonne de la table Ma_Table
sql = "SELECT Ma_colonne FROM Ma_Table"
Set res = CurrentDb.OpenRecordset(sql)

'Concatene les différents enregistrement
While Not res.EOF
   Concatenation = Concatenation & res.Fields(0).Value & "|"
   res.MoveNext
Wend

'Enleve le dernier |
Concatenation = Left(Concatenation, Len(Concatenation) - 1)


'libere la mémoire
Set res = Nothing



End Function

Et derrière j'ai appelé la fonction dans ma requête.

0
yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556 > LaConcatenation
4 oct. 2022 à 13:06

Un détail: si la table est vide, la ligne 17 va se planter, je pense.

2
LaConcatenation > yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024
Modifié le 4 oct. 2022 à 14:48

Effectivement, je viens de vider ma table pour tester et c'était bloquant. Merci pour la relecture ! :)

0

Bonjour,

Pour concaténer avec des lettres ou des symboles particuliers, la réponse est simple. Il faut introduire des '& " '  et ' " &' entre chaque éléments à concaténer. Par exemple :  Col1 & " | " & Col2 & " | " &  Col3 & " |" &  etc

Pour concaténer des données qui n'appartiennent pas au même enregistrement, ce n'est tout simplement pas possible. C'est là une particularité des SGBD

Bonne journée

0
LaConcatenation
4 oct. 2022 à 11:49

Bonjour, merci pour votre réponse. En revanche en passant par du VBA j'ai pu répondre à mon besoin, cf ma réponse à yg_be au dessus.

Bonne journée

0