{Access} une ligne de table dans champs

Résolu/Fermé
Co52 Messages postés 78 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 8 octobre 2016 - 1 déc. 2009 à 16:26
Co52 Messages postés 78 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 8 octobre 2016 - 2 déc. 2009 à 09:08
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
A voir également:

6 réponses

blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
1 déc. 2009 à 16:40
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
Co52 Messages postés 78 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 8 octobre 2016 3
1 déc. 2009 à 17:04
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
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
1 déc. 2009 à 19:19
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
Co52 Messages postés 78 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 8 octobre 2016 3
2 déc. 2009 à 08:16
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
2 déc. 2009 à 08:33
Tu peux tenter ça :

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

Ca enlève le caractère le plus à droite...
0
Co52 Messages postés 78 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 8 octobre 2016 3
2 déc. 2009 à 09:08
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