Envoi d'email

aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016 - 22 août 2005 à 18:27
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016 - 6 sept. 2005 à 09:46
salut a tous
j'ai un prob; je m'explique
Je fais un programme dans lequel je genere un groupe d'etat crystal report.
Dans ce groupe on suppose kil y a 5 personne qui possede chacune un adresse de messagerie.
Je voudrais pouvoir envoir chaque etat a chaque personne correspondante.
Je n'y arrive pas
Aidez moi SVP

19 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 août 2005 à 18:37
Salut
Comme d'habitude, il faut décomposer :
- Sais-tu envoyer un mail simple ?
--> Des tas de solutions sur vbfrance (peut-être pas en VBA !)
- Sais-tu joindre ton état à ton mail ? Texte à coller ou fichier à joindre ?
- Rechercher les infos dans ta DB pour récupérer tes adresses mails
...
Faut commencer par ... le commencement, et pose des questions précises, parce "je n'y arrive pas", c'est une constatation d'échec, pas une question.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
22 août 2005 à 19:06
je peux deja faire tout cela. C'est envoyer les différents etats aux personnes correspondante que ne n'arrive pas a faire. il envoie automatiquement tout le lot a toutes les personnes
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 août 2005 à 19:16
re
Ok, c'est déjà une bonne chose.
Comme ma boule magique est en panne, pourrais-tu au moins nous donner quelques lignes de code avec lequel tu fais ces envois + descriptif de tes variables/table ... qu'on sache où sont stockées les infos : Là, on ne peut pas te répondre !

Comment pouvais-tu espérer une réponse avec des questions aussi vagues (ça me dépasse !)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
22 août 2005 à 19:30
Private Sub Command1_Click()


'Connectionion a la base de données access


Dim db As Connection


Set db = New Connection


db.CursorLocation = adUseClient


db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\RELEVE\RELEVE.mdb;"


'-------------


Dim AdoRs As New Recordset


Dim AdoRs0 As New Recordset


Set CrxReport = crxApplication.OpenReport(App.Path & "\good.Rpt")


CrxReport.DiscardSavedData


'-------------


'Envoi par mail




'Return a reference to the MAPI layer


Dim ol As New Outlook.Application


Dim ns As Outlook.NameSpace


Dim fdMail As Outlook.MAPIFolder


Set ns = ol.GetNamespace("MAPI")


''create a new MailItem object


Dim newMail As Outlook.MailItem


''gets defaultfolder for my Outlook Outbox


Set fdMail = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox)


''assign values to the newMail MailItem


Set newMail = fdMail.Items.Add(Outlook.OlItemType.olMailItem)


newMail.Subject = "Votre relelé de compte"


newMail.Body = "Le fichier se trouve en pièce jointe."




'-----------


'Récuperer les adresses Email


Dim Adr As New Recordset


Set Adr = New Recordset


Adr.Open "SELECT SMARTBK_CUST.CUST_CODE, SMARTBK_CUST.CUST_NAME, SMARTBK_CUST.Email " _


& " FROM SMARTBK_CUST INNER JOIN GROUPE ON SMARTBK_CUST.CodGroup = GROUPE.CodGroup ", db, adOpenStatic, adLockOptimistic


'----------


While Not Adr.EOF


newMail.To = Adr("Email")


'---------------




'On Error Resume Next


'newMail.SaveSentMessageFolder = fdMail


'-----------


Set AdoRs = New Recordset


AdoRs.Open "SELECT SMARTBK_CUST.CUST_CODE, SMARTBK_CUST.CUST_NAME, SMARTBK_CUST.CUST_ADDR1, SMARTBK_CUST.CUST_ADDR2, SMARTBK_CUST.CUST_ADDR3, SMARTBK_MHIST.MHIS_CUR, SMARTBK_MHIST.MHIS_DATE, SMARTBK_MHIST.MHIS_V_DATE, SMARTBK_MHIST.MHIS_DRCR, SMARTBK_MHIST.MHIS_FX_AMT, SMARTBK_MHIST.MHIS_CLOSBALFX, SMARTBK_MHIST.MHIS_NARR " _


& " FROM SMARTBK_CUST INNER JOIN SMARTBK_MHIST ON SMARTBK_CUST.CUST_CODE = SMARTBK_MHIST.MHIS_CUSTNO", db, adOpenStatic, adLockOptimistic


'& " SqlWhere "


CrxReport.Database.Tables(1).SetDataSource AdoRs, 1






'----------


newMail.Attachments.Add ("c:\releve\good.rpt")


'newMail.DeleteAfterSubmit = True


''adds it to the outbox
















Adr.MoveNext


newMail.Send


Wend










CRViewer91.ReportSource = CrxReport


'CRViewer91.PrintReport


'LstViewer.WindowState = vbMaximized


CRViewer91.Zoom 100' Zoom the preview window to 100%


CRViewer91.EnableRefreshButton = True


CRViewer91.EnableGroupTree = False


CRViewer91.EnableCloseButton = True


CRViewer91.ViewReport


Screen.MousePointer = vbDefault


End Sub
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 août 2005 à 23:37
Vite fait avant d'aller dodoter
Tu fais
newMail.Attachments.Add ("c:\releve\good.rpt")
Mais qui (quoi) génère ce fichier que tu joins ?
La requète juste devant ?
Désolé, je ne vois pas le lien ...
Il manque le lien entre le AdoRs.Open et le fichier "c:\releve\good.rpt"
Explique

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
23 août 2005 à 08:57
Bonjour
Ok c'est là mon prob
L'etat que je veux envoyer (c:\releve\good.rpt), je voudrais kil depende du recordset que je fais juste avant ainsi l'etat pourra se servir du recordset pour etre envoyer a la personne correspondante.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 août 2005 à 23:25
Je traduis donc ces quatre pages de questionnement par la vraie question :
"Comment envoyer dans un fichier le contenu d'un RecordSet ?"

Tu te rends compte qu'on a mis 3 jours pour arriver à la question ?
Alors derrière, viennent d'autres questions :
Quelle gueule a ton fichier RPT ?
Est-ce un format texte banal de la liste des données ?
Est-ce un format particulier compatible avec tel ou tel logiciel ? (Si tu réponds oui à cette question, donne moi tout de suite le nom du logiciel, pour qu'on reperde pas 3 autres jours)

Te rends-tu compte qu'on est obliger de t'extraire les vers du nez pour TE rendre service ?
Alors bouge toi les fesses, arrête de fumer n'importe quoi et pose des questions concrètes et sensées, que diable !
(dans une autre vie, je serai prof, c'est sûr, avec une baguette en bambou, gniarc, gniarc, gniarc ...)

Ne t'inquiète pas, je suis pas méchant !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
24 août 2005 à 13:48
le fichier rpt je le fais grace a CRYSTAL REPORT 9

et je l'utilise avec visual basic 6.0
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2005 à 14:36
Salut
Désolé, je ne connais pas CRYSTAL REPORT (CR)
A mon avis, ça ne dois pas être très compliqué :
Une fois que tu auras fournis à CR ton RecordSet, il suffit de lui demander de générer le fichier en question.
Il faudra penser à mettre un DoEvents après cette commande de génération pour que CR ait le temps de travailler.

(et bonjour au Bénin , je viens de voir ça sur ta fiche)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2005 à 14:41
... Fais aussi des recherches sur le site (dans les Codes comme dans le Forum) pour savoir comment manipuler Crystal Report.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
24 août 2005 à 15:36
ok merci

vous etes ds kel pays vous?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2005 à 16:10
Re
Regarde parmi ces sources, il doit bien y en avoir une qui te fera comprendre comment ça marche : http://www.vbfrance.com/recherche.aspx?r=Crystal+report&tr=source

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2005 à 19:09
Salut, c'est re-moi
Si tu ne trouves pâs pour ton Crystal Report, je t'ai préparé un code pour fabriquer un fichier texte compatible avec Excel ou OpenOffice :

Dim ff As Integer, r As Long, Temp As String
Dim nomFichier As String, Séparateur As String

nomFichier = App.Path & "\Données.csv" ' A toi de choisir un nom adapté
Séparateur = ";" ' Peut aussi être virgule ou vbTab

' Suppression du fichier si existe déjà
If Dir(nomFichier, vbNormal) <> "" Then Kill nomFichier

' Ouverture du fichier pour écrire les données
ff = FreeFile
Open nomFichier For Output As #ff

With AdoRS
'----- Ecriture de l'entête = Nom des colonnes
Temp = .Fields(0).Name ' 1er champ
For r = 1 To .Fields.Count - 1
Temp = Temp & ";" & .Fields(r).Name
Next r
' Ecrit la ligne
Print #ff, Temp
'----- Ecriture des données
.MoveFirst
Do While Not .EOF
Temp = CStr(.Fields(0).Value) ' 1er champ
For r = 1 To .Fields.Count - 1
Temp = Temp & ";" & CStr(.Fields(r).Value)
Next r
' Ecrit la ligne
Print #ff, Temp
' Ligne suivante
.MoveNext
DoEvents
Loop
End With
' Referme le fichier
Close #ff

Voilà, insère ça (sauf les Dim --> au début) entre ces deux lignes :
CrxReport.Database.Tables(1).SetDataSource AdoRs, 1
'----------
newMail.Attachments.Add ("c:\releve\good.rpt")

et cette dernière ligne, tu la corrige comme ceci :
newMail.Attachments.Add (nomFichier)

Vous êtes pas gatés sur Codes-Sources, hein ?
Vous en trouverez des sites où on te fais du cousu main !

Tiens moi au courant de la suite

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2005 à 20:15
J'y ai repensé : Pour mieux gérer les valeurs numériques, il faudra peut-être modifier cette ligne
Temp = CStr(.Fields(0).Value) ' 1er champ
pour
Temp = Chr(34) & CStr(.Fields(0).Value) & Chr(34) ' 1er champ

et celle-ci
Temp = Temp & ";" & CStr(.Fields(r).Value)
pour
Temp = Temp & ";""" & CStr(.Fields(r).Value) & Chr(34)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
24 août 2005 à 20:17
Merci je vais tester ca
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 août 2005 à 14:20
Salut
Encore une correction :
J'avais prévu une variable dans laquelle stocker le séparateur de liste, judicieusement appelée "Séparateur" et je ne l'ai pas utilisée.
Donc, dans les deux lignes qui commencent par :
Temp = Temp & ";" &
mets ceci à la place :
Temp = Temp & Séparateur &

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
25 août 2005 à 14:35
ok merci bien
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
31 août 2005 à 14:14
slt
j'ai un autre prob
Je voudrais faire une importation de table dans access a partir d'une base oracle avec du code VB. C'est possible?
0
aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016
6 sept. 2005 à 09:46
bonjour

avez vous une idée de comment je pourrai communiquer avec un modem connecté à mon ordinateur?

Je voudrais pouvoir passer des coups de fils avec un programme Visual Basic.

Merci de m'aider
0
Rejoignez-nous