{Access} une ligne de table dans champs

Résolu
Co52 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -  
Co52 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une table comportant plusieurs champs dont un qui est une adresse mail. Je voudrais pouvoir regrouper toutes mes adresses mail dans un seul champ d'une autre table comme une liste de distribution

Exemple :

table de départ :
Table_1
Nom Mail
Toto toto@wanadoo.fr
Paul paul@sfr.fr
Pierre pierre@alice.fr

table finale :
Table_2
Mail
toto@wanadoo.fr; paul@sfr.fr; pierre@alice.fr

Cela afin de recopier ce champ en une seule fois et le recopier dans outlook ou n'importe quel autres programmes de ce genre

Merci de votre aide
Configuration: Windows Vista
Firefox 3.5.5

6 réponses

  1. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    un peu de VBA pour parcourir un recordset et créer une variable longue comme ça, avant de mettre à jour la table cible...
    0
  2. Co52 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
     
    Re salut blux,

    C'est bien ce que j'imaginais. J'ai essayer en créant une table qu'on incrémente mail par mail en comptant le nombre d'enregistrement et en lançant une macro autant de fois que le nombre d'enregistrement mais ça me je galère au possible.

    Malheureusement, comme je te l'ai expliqué dans mon post sur les liaison table dorsale/table frontale que tu m'as résolu de façon brillante, je ne mis connais pas suffisament en VBA d'où mon appel au secours.
    0
  3. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    un truc comme ça devrait aller :

    Dim Ad_Total As String
    Dim Rs As DAO.Recordset
    Dim StrSql As String
    Set Rs = CurrentDb.OpenRecordset("table1")
    Ad_Total = ""
    Rs.MoveFirst
    While Not Rs.EOF
        Ad_Total = Ad_Total & Rs!pouet & ";"
        Rs.MoveNext
    Wend
    StrSql = "UPDATE table2 SET mail = '" & Ad_Total & "';"
    DoCmd.RunSQL (StrSql)
    

    A savoir :

    - le champ d'où on récupère les données s'appelle pouet, il est dans 'table1'
    - le champ qu'on met à jour s'appelle mail (il doit être de type 'mémo', car un type texte est limité à 255 car), il est dans table2, et une ligne doit exister sinon il y a 0 mise à jour
    - je n'ai pas géré le dernier ; ajouté (on verra plus tard)
    - si un problème survient 'incompatibilité de type', il faut aller dans 'outils/références' de la fenêtre de code et cocher 'microsoft dao 3.x library'
    0
  4. Co52 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
     
    Nickel,

    c'est exactement ça que je veux. Pour le dernier ";" c'est pas bien grave. La personne qui va s'en servir pourra l'enlever manuellement s'il ne lui reste que ça a faire

    Je te remercie encore pour le coup de main et si j'ai de nouveau un problème je viendrai te poser ma question
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Tu peux tenter ça :

    Ad_Total = Left(Ad_Total,(Len(Ad_Total)-1))

    Ca enlève le caractère le plus à droite...
    0
  7. Co52 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
     
    ok ça marche

    Mon programme tourne, je peux le présenter cet après midi à l'association.

    Encore merci Blux pour le sacré coup de pouce que tu m'as apporté
    0