OVH Cloud OVH Cloud

Envoi dEtat par mail

17 réponses
Avatar
Luis
Bonjour,
J'ai trouv=E9 dans le site d'Arnaud le code pour envoyer un=20
=E9tat par Outlook et dans:

With Application.FileSearch
.LookIn =3D CurDir
.SearchSubFolders =3D False
.FileName =3D NomEtat & "*.htm"
.Execute

--J'ai ajout=E9 dans la formule pour qu'il choisisse l'=E9tat=20
d'apr=E8s le num=E9ro du formulaire:
--NomEtat =3D ([NomEtat].[NEtat] =3D [Formulaires]!
[NomFormulaire].[NFormulaire]__Cl=E9 Primaire__)
--Mais access me dit qu'il ne trouve pas le champ.

NbFichiers =3D .FoundFiles.Count
LeFichier =3D CurDir & "\" & NomEtat & ".htm"
DoCmd.OutputTo acOutputReport, NomEtat, acFormatHTML,=20
LeFichier, False

.Execute
NbFichiers =3D .FoundFiles.Count - NbFichiers
=20
End With

10 réponses

1 2
Avatar
3stone
Salut Luis,

"Luis"
J'ai trouvé dans le site d'Arnaud le code pour envoyer un
état par Outlook et dans:

With Application.FileSearch
.LookIn = CurDir
.SearchSubFolders = False
.FileName = NomEtat & "*.htm"
.Execute

--J'ai ajouté dans la formule pour qu'il choisisse l'état
d'après le numéro du formulaire:
--NomEtat = ([NomEtat].[NEtat] = [Formulaires]!
[NomFormulaire].[NFormulaire]__Clé Primaire__)
--Mais access me dit qu'il ne trouve pas le champ.


Choisir l'état selon le numéro du formulaire !
Comment doit-on comprendre cela ?

Tu as une liste qui contient les noms des états ?

Si oui, faire qque chose comme :

NomEtat = Forms!NomDuFormulaire!NomDeLaListe


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Bonjour Pierre,
Je me suis mal exprimé.
Je suis dans un formulaire et ce que je veux depuis ce
formulaire (au clic sur un bouton) envoyer l'état qui
correspond au no du formulaire.
Si je dois l'imprimer je fais comme ça:
DoCmd.OpenReport RésuméClient, acNormal, , [NCLIENT]=
[FORMS]![CLIENTS].[NCLIENT]"
Et là j'ai l'état 'RésuméClient' du client correspondant
au client du formulaire ouvert qui s'imprime.

En utilisant le code d'Arnaud j'aimerai nommer l'état
(comme lorsque l'on veut lancer l'impression) pour qu'il
n'y ai que l'état 'RésuméClient' du no du client du
formulaire ouvert qui soit envoyé par mail
Le code d'Arnaud est le suivant, mais je ne sais pas
comment nommer l'état :
With Application.FileSearch
.LookIn = CurDir
.SearchSubFolders = False
.FileName = NomEtat & "*.htm"
.Execute

NbFichiers = .FoundFiles.Count
LeFichier = CurDir & "" & NomEtat & ".htm"
DoCmd.OutputTo acOutputReport, NomEtat, acFormatHTML,
LeFichier, False

.Execute
NbFichiers = .FoundFiles.Count - NbFichiers

End With

F = FreeFile
For i = 1 To NbFichiers
If i > 1 Then: LeFichier = CurDir & "" & NomEtat
& "Page" & i & ".htm"
SysCmd acSysCmdInitMeter, "Intégration de " &
LeFichier, NbFichiers
SysCmd acSysCmdUpdateMeter, i
Open LeFichier For Input As #F
Do While Not EOF(F)
Line Input #F, txtLine
CorpsHTML = CorpsHTML & txtLine
Loop
Close #F
Kill LeFichier
Next i
SysCmd acSysCmdClearStatus

Set Ol_Item = Ol_App.CreateItem(olMailItem)

With Ol_Item
.To = Destinataire
.Subject = Sujet
.HTMLBody = CorpsHTML
If PieceJointe <> "" Then: .Attachments.Add PieceJointe
.Save
If EditMessage = True Then
.Display
Else
.send
End If
End With

Set Ol_Item = Nothing
Set Ol_App = Nothing

-----Message d'origine-----
Salut Luis,

"Luis"
J'ai trouvé dans le site d'Arnaud le code pour envoyer un
état par Outlook et dans:

With Application.FileSearch
.LookIn = CurDir
.SearchSubFolders = False
.FileName = NomEtat & "*.htm"
.Execute

--J'ai ajouté dans la formule pour qu'il choisisse l'état
d'après le numéro du formulaire:
--NomEtat = ([NomEtat].[NEtat] = [Formulaires]!
[NomFormulaire].[NFormulaire]__Clé Primaire__)
--Mais access me dit qu'il ne trouve pas le champ.


Choisir l'état selon le numéro du formulaire !
Comment doit-on comprendre cela ?

Tu as une liste qui contient les noms des états ?

Si oui, faire qque chose comme :

NomEtat = Forms!NomDuFormulaire!NomDeLaListe


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome



.



Avatar
3stone
Salut Luis,

"Luis"
Je suis dans un formulaire et ce que je veux depuis ce
formulaire (au clic sur un bouton) envoyer l'état qui
correspond au no du formulaire.
Si je dois l'imprimer je fais comme ça:
DoCmd.OpenReport RésuméClient, acNormal, , [NCLIENT] [FORMS]![CLIENTS].[NCLIENT]"
Et là j'ai l'état 'RésuméClient' du client correspondant
au client du formulaire ouvert qui s'imprime.
<snip>


Tu peux, dans la requête source de l'état, mettre comme critère
sous le champ [NClient]

[FORMS]![CLIENTS].[NCLIENT]


ainsi, l'état sera directement limité à ce numéro de client.


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Bonjour Pierre,
Mettre [FORMS]![CLIENTS].[NCLIENT] sous [NCLIENT] de la
requêtte ça marche bien.
Mais il y a un autre problème:
l'Etat au format htm est envoyé à mes documents et pas au
destinataire indiqué sous
With Ol_Item
.To = Destinataire
.Subject = Sujet
Mais je ne vois pas où est le problème.
Luis
-----Message d'origine-----
Salut Luis,

"Luis"
Je suis dans un formulaire et ce que je veux depuis ce
formulaire (au clic sur un bouton) envoyer l'état qui
correspond au no du formulaire.
Si je dois l'imprimer je fais comme ça:
DoCmd.OpenReport RésuméClient, acNormal, , [NCLIENT]=
[FORMS]![CLIENTS].[NCLIENT]"
Et là j'ai l'état 'RésuméClient' du client correspondant
au client du formulaire ouvert qui s'imprime.
<snip>


Tu peux, dans la requête source de l'état, mettre comme
critère

sous le champ [NClient]

[FORMS]![CLIENTS].[NCLIENT]


ainsi, l'état sera directement limité à ce numéro de
client.



--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome





.



Avatar
3stone
re,

"Luis"
Mettre [FORMS]![CLIENTS].[NCLIENT] sous [NCLIENT] de la
requêtte ça marche bien.
Mais il y a un autre problème:
l'Etat au format htm est envoyé à mes documents et pas au
destinataire indiqué sous
With Ol_Item
.To = Destinataire
.Subject = Sujet
Mais je ne vois pas où est le problème.



La fonction commence par :

Public Sub SendReportHTML(NomEtat As String, _
Destinataire As String, _
Sujet As String, _
EditMessage As Boolean, _
Optional PieceJointe As String)

Tu mets quoi, dans "Destinataire" ?

- faudrait peut être penser à transmettre le destinataire
d'une facon ou d'une autre...

Dans ton formulaire client, tu devrais avoir l'émail non ?



--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Luis,
Dans mon formulaire il n'y a pas d'email, alors
effectivement suite à ta remarque, je l'ai mis à la place
de .To = Destinataire
c'est à dire .To= ""
Mais là j'ai une erreur d'exécution
Objet requis
Et en surbrillance:
Set Ol_Item = Ol_App.CreateItem(olMailItem)
Je ne suis pas très fort avec ces codes.
Luis
-----Message d'origine-----
re,

"Luis"
Mettre [FORMS]![CLIENTS].[NCLIENT] sous [NCLIENT] de la
requêtte ça marche bien.
Mais il y a un autre problème:
l'Etat au format htm est envoyé à mes documents et pas au
destinataire indiqué sous
With Ol_Item
.To = Destinataire
.Subject = Sujet
Mais je ne vois pas où est le problème.



La fonction commence par :

Public Sub SendReportHTML(NomEtat As String, _
Destinataire As String, _
Sujet As String, _
EditMessage As Boolean, _
Optional PieceJointe As String)

Tu mets quoi, dans "Destinataire" ?

- faudrait peut être penser à transmettre le destinataire
d'une facon ou d'une autre...

Dans ton formulaire client, tu devrais avoir l'émail
non ?




--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome







.



Avatar
3stone
Salut,

"Luis"
Dans mon formulaire il n'y a pas d'email, alors
effectivement suite à ta remarque, je l'ai mis à la place
de .To = Destinataire
c'est à dire .To= ""
Mais là j'ai une erreur d'exécution
Objet requis
Et en surbrillance:
Set Ol_Item = Ol_App.CreateItem(olMailItem)
Je ne suis pas très fort avec ces codes.



Tu as laissé les déclarations et coché la référence Outlook ?


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Rebonjour,
Pour rappel:
J'ai erreur 'Objet requis'
et en surbrillance:
Set Ol_Item = Ol_App.CreateItem(olMailItem)
Malgré l'erreur l'Etat est envoyé à mes documents!
Pourquoi dans mes documents?

A tes questions, voici la réponse:
Oui la référence Microsoft Outlook 10.0 Objet Library est
cochée.
Dans le bouton envoi mail du formulaire, il y a:
SendEnvoiEtat

La totalité de mon code est:
Public Sub SendReportHTML(NomEtat As String, Destinataire
As String, Sujet As String, EditMessage As Boolean,
Optional PieceJointe As String)

Dim NbFichiers As Integer
Dim i As Integer
Dim LeFichier As String
Dim txtLine As String
Dim F As Integer
Dim CorpsHTML As String
Dim Ol_App As New Outlook.Application
Dim Ol_Item As Outlook.MailItem
End Sub
Public Sub SendEnvoiEtat()

DoCmd.SetWarnings False
DoCmd.Hourglass True
NomEtat = "COMMANDES2"

With Application.FileSearch
.LookIn = CurDir
.SearchSubFolders = False
.FileName = NomEtat & "*.htm"
.Execute

NbFichiers = .FoundFiles.Count
LeFichier = CurDir & "" & NomEtat & ".htm"
DoCmd.OutputTo acOutputReport, NomEtat, acFormatHTML,
LeFichier, False

.Execute
NbFichiers = .FoundFiles.Count - NbFichiers

End With

F = FreeFile
For i = 1 To NbFichiers
If i > 1 Then: LeFichier = CurDir & "" & NomEtat
& "Page" & i & ".htm"
SysCmd acSysCmdInitMeter, "Intégration de " &
LeFichier, NbFichiers
SysCmd acSysCmdUpdateMeter, i
Open LeFichier For Input As #F
Do While Not EOF(F)
Line Input #F, txtLine
CorpsHTML = CorpsHTML & txtLine
Loop
Close #F
Kill LeFichier
Next i
SysCmd acSysCmdClearStatus

Set Ol_Item = Ol_App.CreateItem(olMailItem)

With Ol_Item
.To = ""
.Subject = Sujet
.HTMLBody = CorpsHTML
If PieceJointe <> "" Then:
.Attachments.Add PieceJointe
.Save
If EditMessage = True Then
.Display
Else
.Send
End If
End With

Set Ol_Item = Nothing
Set Ol_App = Nothing

DoCmd.Hourglass False

End Sub

Luis
-----Message d'origine-----
Salut,

"Luis"
Dans mon formulaire il n'y a pas d'email, alors
effectivement suite à ta remarque, je l'ai mis à la place
de .To = Destinataire
c'est à dire .To= ""
Mais là j'ai une erreur d'exécution
Objet requis
Et en surbrillance:
Set Ol_Item = Ol_App.CreateItem(olMailItem)
Je ne suis pas très fort avec ces codes.



Tu as laissé les déclarations et coché la référence
Outlook ?



--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome



.



Avatar
3stone
Salut Luis,

"Luis"

[...]
La totalité de mon code est:
Public Sub SendReportHTML(NomEtat As String, Destinataire
As String, Sujet As String, EditMessage As Boolean,
Optional PieceJointe As String)


C'est dans l'appel de la fonction que tu dois transmettre le destinataire!

SendReportHTML("Etat_Facture","","Facture",True)




[...]
With Ol_Item
.To = ""


ici, tu laisse comme à l'origine !!!

.To = Destinataire



Luis, modifier une fonction que l'on ne comprend pas,
c'est comme tenter de faire le 6 au Loto ;-)


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Bonjour Pierre,
Effectivement je ne la comprend pas, mais j'ai besoin de
cette fonction, remarque que je ne joue pas au Loto.
J'ai mis
.To = Destinataire
Et
SendReportHTML"Etat_Facture","","Facture",
True)
Dans l'appel de la fonction, c'est à dire dans Clic du
bouton de commande pour envoyer l'email.
Ou je n'ai pas compris.
Et en plus j'ai une erreur 'attendu ='
Merci pour ta patience.
Luis
-----Message d'origine-----
Salut Luis,

"Luis"

[...]
La totalité de mon code est:
Public Sub SendReportHTML(NomEtat As String, Destinataire
As String, Sujet As String, EditMessage As Boolean,
Optional PieceJointe As String)


C'est dans l'appel de la fonction que tu dois
transmettre le destinataire!


SendReportHTML
("Etat_Facture","","Facture",True)





[...]
With Ol_Item
.To = ""


ici, tu laisse comme à l'origine !!!

.To = Destinataire



Luis, modifier une fonction que l'on ne comprend pas,
c'est comme tenter de faire le 6 au Loto ;-)


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome



.



1 2