[ACCESS] Concatener entièrement une colonne

Résolu
LaConcatenation -  
 LaConcatenation -

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

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

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

    0
    1. LaConcatenation
       

      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
      1. LaConcatenation > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        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
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > LaConcatenation
         

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

        2
      3. LaConcatenation > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

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

        0
  2. Tessel75
     

    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
    1. LaConcatenation
       

      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