Concatener deux lignes dans un meme ligne

mouss -  
Gord21 Messages postés 928 Statut Membre -
Bonjour,
je suis noviste ici, peut etre que le sujet à été aborder, j'ai bon cherche sur le net, mais sans safisfaction. voila j'ai deux table l un nomer dispensaire (id_disp, denomination, ville,region) et l'autre table nomee medecin(id_med,nom,prenom,tele,adresse,id_disp). je doit faire un formulaire qui envoie toutes les medecins rattacher à une dispensaire. dans un premier temps, j'ai fait une requette avec regroupement :

SELECT Dispensaire.denomination AS dispensaire, Medecin.[nom]+" "+[prenom] AS medecin
FROM Dispensaire RIGHT JOIN Medecin ON Dispensaire.id_dispensaire = Medecin.id_dispensaire
GROUP BY Dispensaire.denomination, Medecin.[nom]+" "+[prenom];

dispensaire | medecin
1001 Soins - Centre Médical La Bricarde |Abadie Jean-Pierre
1001 Soins - Centre Médical La Bricarde |Abbou Roger
Abeille Jérôme |Achard Catherine
ARAIMC |Alessandrini Eric
ARAIMC | Almaleh Michel

ce que je veux c'est de concatener qu'on il s'agit des meme enregistrement, c'est a dire avoire le tablaeau suivant:
dispensaire | medecin
1001 Soins - Centre Médical La Bricarde |Abadie Jean-Pierre, Abbou Roger
Abeille Jérôme |Achard Catherine
ARAIMC |Alessandrini Eric, Almaleh Michel
j'ai essayer un code vba, mais j'avoue que je suis tres debutant en vba. si quelqu'un pourra m'aider à aficher cette requete de la sorte merci.
Configuration: Windows Vista
Firefox 3.5.5

2 réponses

  1. keuloud
     
    Quel SGBD utilises tu?
    Selon celui que tu utilises tu peux peut être "coder" ta fonction directement en SQL, j'pense que quelques recherches sur ton SGBD et la possibilité de faire une procédure t'aideront.

    Pour le VB(A) il faut creuser un peu, sur le net c'est l'un des langages les plus documentés.
    0
    1. mouss
       
      merci keuloud pour votre reponse j'utilise ACCESS 2007, j'ai bon creuser un peut mais sans resultat, le probleme c'est que je doit aficher un formulaire a l aide d une requete : voila la requete que j'a nom2 R1:

      SELECT Dispensaire.denomination, [nom]+[prenom] AS MEDECIN
      FROM Dispensaire RIGHT JOIN Medecin ON Dispensaire.id_dispensaire=Medecin.id_dispensaire;

      maintenant je doit concatener tt ca :

      denomination |MEDECIN
      1001 Soins - Centre Médical La Bricarde |AbadieJean-Pierre
      1001 Soins - Centre Médical La Bricarde |AbbouRoger
      Abeille Jérôme |AchardCatherine
      ARAIMC |AlessandriniEric
      ARAIMC |AlmalehMichel

      j'ai creer un code vba que j'ai trouver sur le net :
      Option Compare Database
      Public Function RecupParticipant(denomination As Long) As String
      Dim res As DAO.Recordset
      Dim SQL As String
      'Selectionne les participant du projet
      SQL = "SELECT MEDECIN FROM R1 WHERE denomination=" & denomination
      Set res = CurrentDb.OpenRecordset(SQL)
      'Concatene les différents enregistrement
      While Not res.EOF
      RecupParticipant = RecupParticipant & res.Fields(0).Value & " "
      res.MoveNext
      Wend
      'Enleve le dernier espace
      RecupParticipant = Left(RecupParticipant, Len(RecupParticipant) - 1)
      'libere la mémoire
      Set res = Nothing
      End Function

      mais rien qui sort
      le code que j ai crée travail sur une requete
      0
  2. Gord21 Messages postés 928 Statut Membre 289
     
    Bonsoir,
    Puisque tu parles de VBA, je supposes que tu utilises Excel d'où ce code :

    Sub Concatener()
    '
    ' Déclaration des variables
    '--------------------------
    Dim rang_en_cours As Long
    '
    ' Initialisation de la variable rang_en_cours
    '--------------------------------------------
    rang_en_cours = 2
    '
    ' Tant qu'on n'a pas atteint la fin de la feuille
    '------------------------------------------------
    While rang_en_cours <= ActiveSheet.UsedRange.Rows.Count
    If Range("A" & rang_en_cours - 1).Value = Range("A" & rang_en_cours).Value Then
    ' Si les valeurs en A(n) et A(n-1) sont les mêmes on concatène
    '-------------------------------------------------------------
    Range("B" & rang_en_cours - 1).Value = Range("B" & rang_en_cours - 1).Value & ", " & Range("B" & rang_en_cours).Value
    Rows(rang_en_cours).Delete Shift:=xlUp
    Else
    ' Sinon, on passe à la ligne suivante
    rang_en_cours = rang_en_cours + 1
    End If
    Wend

    End Sub
    0
    1. mouss
       
      merci gord21 pour ta réponse mais le travail que je fait c est sur Access 2007, car je doit afficher un formulaire cordialement
      0
      1. Gord21 Messages postés 928 Statut Membre 289 > mouss
         
        Désolé, je n'utilise que très peu Access.
        Bonne continuation
        0