OVH Cloud OVH Cloud

Nombre de pages d'un état

11 réponses
Avatar
Laurent
Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent

10 réponses

1 2
Avatar
3stone
Salut,

"Laurent"
| J'ai un état à transmettre par messagerie au format SNP.
|
| Le problème c'est que cet état est parfois très volumineux (beaucoup de
| pages) et que dans ce cas je ne veux pas envoyer cet état.


Pourquoi le nombre de page empêche t-il l'envoie ?



| D'ou ma question : Est-il possible de connaître le nombre de page d'un état
| par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
| dernière page ..pour connaîetre ce nombre de page..


Comment serait-il possible de connaître le nombre de pages sans ouvrir,
on devrait plutôt dire, sans "exécuter" un état ? Par divination ?
Déjà qu'il doit faire un "reformatage" pour indiquer le nombre de pages
totales sur la première page.

Mais, selon ta version d'Access, tu peux ouvrir l'état en mode caché...
Et l'utilisateur ne s'appercevra de rien, si avant, tu lui envoi un petit message
qui le fera patienter.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
crinblanc
Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent


Avatar
Laurent
Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent




Avatar
crinblanc
Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent






Avatar
Laurent
Merci !

Oui c'est une solution ! je pourrais aussi contourner le problème en
limitant sur la taille du fichier à transmettre par mail (max 200ko par ex)
plutôt que sur le nombre de pages de l'état.

Autre inconvénient de ne pas pouvoir sélectionner le nombre de pages à
envoyer c'est que l'utilisateur n'aura même pas les premières pages de l'état
ce qui n'est pas terrible... .cela aurait été bien qu'il ai au moins les
premières pages de l'état puisqu'il s'agit d'un état de Contrôle .. cela lui
aurait permis de commencer à bosser..

bref je cherche toujours une solution qui me convienne..

Merci pour toute aide ..

Laurent


Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent








Avatar
crinblanc
Si c'est un problème de taille et non de nombre de pages, je te conseille
d'utiliser "PdfCreator" qui te permet facilement de transformer un état en
.PDF.
Dans ce cas la taille du fichier est fortement réduite.
Tu trouveras ce FreeWare en téléchargement avec Google.
Autre solution: tu peux limiter le nombre d'enregistrement renvoyé par le
SQL de ton état en utilisant "SELECT TOP 100 .... par exemple pour avoir les
100 premiers.


"Laurent" wrote:

Merci !

Oui c'est une solution ! je pourrais aussi contourner le problème en
limitant sur la taille du fichier à transmettre par mail (max 200ko par ex)
plutôt que sur le nombre de pages de l'état.

Autre inconvénient de ne pas pouvoir sélectionner le nombre de pages à
envoyer c'est que l'utilisateur n'aura même pas les premières pages de l'état
ce qui n'est pas terrible... .cela aurait été bien qu'il ai au moins les
premières pages de l'état puisqu'il s'agit d'un état de Contrôle .. cela lui
aurait permis de commencer à bosser..

bref je cherche toujours une solution qui me convienne..

Merci pour toute aide ..

Laurent


Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent










Avatar
Laurent
Oui j'ai aussi pensé et commencé à mettre en oeuvre cette solution avec
PDFcréator ! ce qui est très intéressant, c'est qu'effectivement je peux
sélectionner le nombre de pages et que tout le monde sait lire du PDF mais le
problème c'est que je ne sais pas comment forcer l'enregistrement automatique
du fichier au format PDF et empêcher le lancement de PDF après enregistrement
: il faut absolument que le tout (création de l'état, conversion à PDF,
envoi par messagerie ) se passe sans intervention humaine..

J'ai posé une question hier sur le forum dans ce sens mais n'ai pas eu de
réponse ..

Merci encore pour les suggestions..

Laurent

Si c'est un problème de taille et non de nombre de pages, je te conseille
d'utiliser "PdfCreator" qui te permet facilement de transformer un état en
.PDF.
Dans ce cas la taille du fichier est fortement réduite.
Tu trouveras ce FreeWare en téléchargement avec Google.
Autre solution: tu peux limiter le nombre d'enregistrement renvoyé par le
SQL de ton état en utilisant "SELECT TOP 100 .... par exemple pour avoir les
100 premiers.


"Laurent" wrote:

Merci !

Oui c'est une solution ! je pourrais aussi contourner le problème en
limitant sur la taille du fichier à transmettre par mail (max 200ko par ex)
plutôt que sur le nombre de pages de l'état.

Autre inconvénient de ne pas pouvoir sélectionner le nombre de pages à
envoyer c'est que l'utilisateur n'aura même pas les premières pages de l'état
ce qui n'est pas terrible... .cela aurait été bien qu'il ai au moins les
premières pages de l'état puisqu'il s'agit d'un état de Contrôle .. cela lui
aurait permis de commencer à bosser..

bref je cherche toujours une solution qui me convienne..

Merci pour toute aide ..

Laurent


Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent












Avatar
crinblanc
C'est possible avec PdfCreator.
Voilà comment je l'utilise pour envoyer des commandes à mes fournisseurs
sans intervention de l'utilisateur ni client mail particulier:
Il faut ajouter dans les références : Microsoft CDO for Exchange 2000 Library

Private Sub send_mail_Click()
If Me.RecordsetClone.RecordCount = 0 Then GoTo fin_mail
Call CopyFile(Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator_Achat.ini", _
Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator.ini", True)
DoEvents
DoCmd.OpenReport "Commande_ferme_mail", acNormal, , "achat = " &
Forms!commandes_fermes!achat
Call sSleep(5000)
Call Envoi_Cde_Mail(Me!cfourn_email, "Commande n° " &
Forms!commandes_fermes!achat, "Salutations")
Call CopyFile(Mid$(Environ$(2), 9) &
"PDFCreatorPDFCreator_Standard.ini", _
Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator.ini", True)
fin_mail:
If envoi_ok = True Then
DoCmd.Close acForm, Me.Name
End If
End Sub

Private Declare Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal
dwMilliseconds As Long)

Public Sub sSleep(lngMilliSec As Long)
If lngMilliSec > 0 Then
Call sapiSleep(lngMilliSec)
End If
End Sub

Function Envoi_Cde_Mail(Fournisseur As String, intitule As String,
texte_mail As String)
On Error Resume Next
srv_smtp = "smtp.wanadoo.fr"
emetteur_mail = ReadTextFile("C:Program
FilesChrysalideEmetteur.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("C:Program FilesChrysalide")
Set fc = f.Files
For Each f1 In fc
If f1.Name = "Cde_Achat.pdf" Then
On Error GoTo 0
Call MailEnvoi(srv_smtp, emetteur_mail, Fournisseur, intitule,
"", emetteur_mail, _
texte_mail, "C:Program FilesChrysalideCde_Achat.pdf")
DoEvents
On Error Resume Next
Kill "C:Program FilesChrysalideCde_Achat.pdf"
End If
Next
End Function

Public Sub MailEnvoi(serveur_smtp As String, Emetteur As String,
Destinataire As String, Sujet As String, _
Optional Correspondant_CC As String, Optional Correspondant_BCC As String,
Optional CorpsDuTexte As String, _
Optional attach As Variant)
On Error GoTo traite_erreur
Set objEmail = CreateObject("CDO.Message")
With objEmail

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = serveur_smtp

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
.FROM = Emetteur
.To = Destinataire
.CC = Correspondant_CC
.BCC = Correspondant_BCC
.Subject = Sujet
.TextBody = CorpsDuTexte
If attach <> "" Then .AddAttachment attach
.Send
End With
Set objEmail = Nothing
envoi_ok = True
Exit Sub
traite_erreur:
Set objEmail = Nothing
MsgBox "Problème de connexion" & vbCrLf & "message non envoyé"


J'ai au prélable copier le fichier PDFCreator.ini en PDFCreator_Standard.ini
ensuite j'ai modifié les paramètres par défaut de PdfCreator et récupéré le
nouveau fichier PDFCreator.ini que j'ai renommé PDFCreator_Achat.ini
Ensuite sur mon Report j'ai mis comme imprimante par défaut PdfCreator
Voilà, le code ci-dessus t'explique la suite.
Bon courage.

Je suis encore à l'écoute si tu as des problèmes.



"Laurent" wrote:

Oui j'ai aussi pensé et commencé à mettre en oeuvre cette solution avec
PDFcréator ! ce qui est très intéressant, c'est qu'effectivement je peux
sélectionner le nombre de pages et que tout le monde sait lire du PDF mais le
problème c'est que je ne sais pas comment forcer l'enregistrement automatique
du fichier au format PDF et empêcher le lancement de PDF après enregistrement
: il faut absolument que le tout (création de l'état, conversion à PDF,
envoi par messagerie ) se passe sans intervention humaine..

J'ai posé une question hier sur le forum dans ce sens mais n'ai pas eu de
réponse ..

Merci encore pour les suggestions..

Laurent

Si c'est un problème de taille et non de nombre de pages, je te conseille
d'utiliser "PdfCreator" qui te permet facilement de transformer un état en
.PDF.
Dans ce cas la taille du fichier est fortement réduite.
Tu trouveras ce FreeWare en téléchargement avec Google.
Autre solution: tu peux limiter le nombre d'enregistrement renvoyé par le
SQL de ton état en utilisant "SELECT TOP 100 .... par exemple pour avoir les
100 premiers.


"Laurent" wrote:

Merci !

Oui c'est une solution ! je pourrais aussi contourner le problème en
limitant sur la taille du fichier à transmettre par mail (max 200ko par ex)
plutôt que sur le nombre de pages de l'état.

Autre inconvénient de ne pas pouvoir sélectionner le nombre de pages à
envoyer c'est que l'utilisateur n'aura même pas les premières pages de l'état
ce qui n'est pas terrible... .cela aurait été bien qu'il ai au moins les
premières pages de l'état puisqu'il s'agit d'un état de Contrôle .. cela lui
aurait permis de commencer à bosser..

bref je cherche toujours une solution qui me convienne..

Merci pour toute aide ..

Laurent


Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent














Avatar
Laurent
Merci encore ..

En fait j'avais téléchargé PDF995 qui est équivalent mais moins riche semble
t-il en fonctionnalités..

Il me reste un souci quand même c'est de savoir ou est situé le fichier
PDFcreator.ini que je dois modifier à chaque envoi puisque chaque mail
contient un fichier d'un nom différent (1 par Utilisateur en fait!).

J'ai cherché partout et surtout dans le repértoire crée PDFcréator crée au
moment de l'Install et je ne vois rien .. pourtant il doit bien y avoir
stocké quelque part les infos du paramétrage de PDFcréator.. sinon je procède
par fichier identique que je recopie ensuite sous un autre nom..

Merci encore pour les infos.. j'avance à grand pas..

Laurent



C'est possible avec PdfCreator.
Voilà comment je l'utilise pour envoyer des commandes à mes fournisseurs
sans intervention de l'utilisateur ni client mail particulier:
Il faut ajouter dans les références : Microsoft CDO for Exchange 2000 Library

Private Sub send_mail_Click()
If Me.RecordsetClone.RecordCount = 0 Then GoTo fin_mail
Call CopyFile(Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator_Achat.ini", _
Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator.ini", True)
DoEvents
DoCmd.OpenReport "Commande_ferme_mail", acNormal, , "achat = " &
Forms!commandes_fermes!achat
Call sSleep(5000)
Call Envoi_Cde_Mail(Me!cfourn_email, "Commande n° " &
Forms!commandes_fermes!achat, "Salutations")
Call CopyFile(Mid$(Environ$(2), 9) &
"PDFCreatorPDFCreator_Standard.ini", _
Mid$(Environ$(2), 9) & "PDFCreatorPDFCreator.ini", True)
fin_mail:
If envoi_ok = True Then
DoCmd.Close acForm, Me.Name
End If
End Sub

Private Declare Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal
dwMilliseconds As Long)

Public Sub sSleep(lngMilliSec As Long)
If lngMilliSec > 0 Then
Call sapiSleep(lngMilliSec)
End If
End Sub

Function Envoi_Cde_Mail(Fournisseur As String, intitule As String,
texte_mail As String)
On Error Resume Next
srv_smtp = "smtp.wanadoo.fr"
emetteur_mail = ReadTextFile("C:Program
FilesChrysalideEmetteur.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("C:Program FilesChrysalide")
Set fc = f.Files
For Each f1 In fc
If f1.Name = "Cde_Achat.pdf" Then
On Error GoTo 0
Call MailEnvoi(srv_smtp, emetteur_mail, Fournisseur, intitule,
"", emetteur_mail, _
texte_mail, "C:Program FilesChrysalideCde_Achat.pdf")
DoEvents
On Error Resume Next
Kill "C:Program FilesChrysalideCde_Achat.pdf"
End If
Next
End Function

Public Sub MailEnvoi(serveur_smtp As String, Emetteur As String,
Destinataire As String, Sujet As String, _
Optional Correspondant_CC As String, Optional Correspondant_BCC As String,
Optional CorpsDuTexte As String, _
Optional attach As Variant)
On Error GoTo traite_erreur
Set objEmail = CreateObject("CDO.Message")
With objEmail

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = serveur_smtp

.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
.FROM = Emetteur
.To = Destinataire
.CC = Correspondant_CC
.BCC = Correspondant_BCC
.Subject = Sujet
.TextBody = CorpsDuTexte
If attach <> "" Then .AddAttachment attach
.Send
End With
Set objEmail = Nothing
envoi_ok = True
Exit Sub
traite_erreur:
Set objEmail = Nothing
MsgBox "Problème de connexion" & vbCrLf & "message non envoyé"


J'ai au prélable copier le fichier PDFCreator.ini en PDFCreator_Standard.ini
ensuite j'ai modifié les paramètres par défaut de PdfCreator et récupéré le
nouveau fichier PDFCreator.ini que j'ai renommé PDFCreator_Achat.ini
Ensuite sur mon Report j'ai mis comme imprimante par défaut PdfCreator
Voilà, le code ci-dessus t'explique la suite.
Bon courage.

Je suis encore à l'écoute si tu as des problèmes.



"Laurent" wrote:

Oui j'ai aussi pensé et commencé à mettre en oeuvre cette solution avec
PDFcréator ! ce qui est très intéressant, c'est qu'effectivement je peux
sélectionner le nombre de pages et que tout le monde sait lire du PDF mais le
problème c'est que je ne sais pas comment forcer l'enregistrement automatique
du fichier au format PDF et empêcher le lancement de PDF après enregistrement
: il faut absolument que le tout (création de l'état, conversion à PDF,
envoi par messagerie ) se passe sans intervention humaine..

J'ai posé une question hier sur le forum dans ce sens mais n'ai pas eu de
réponse ..

Merci encore pour les suggestions..

Laurent

Si c'est un problème de taille et non de nombre de pages, je te conseille
d'utiliser "PdfCreator" qui te permet facilement de transformer un état en
.PDF.
Dans ce cas la taille du fichier est fortement réduite.
Tu trouveras ce FreeWare en téléchargement avec Google.
Autre solution: tu peux limiter le nombre d'enregistrement renvoyé par le
SQL de ton état en utilisant "SELECT TOP 100 .... par exemple pour avoir les
100 premiers.


"Laurent" wrote:

Merci !

Oui c'est une solution ! je pourrais aussi contourner le problème en
limitant sur la taille du fichier à transmettre par mail (max 200ko par ex)
plutôt que sur le nombre de pages de l'état.

Autre inconvénient de ne pas pouvoir sélectionner le nombre de pages à
envoyer c'est que l'utilisateur n'aura même pas les premières pages de l'état
ce qui n'est pas terrible... .cela aurait été bien qu'il ai au moins les
premières pages de l'état puisqu'il s'agit d'un état de Contrôle .. cela lui
aurait permis de commencer à bosser..

bref je cherche toujours une solution qui me convienne..

Merci pour toute aide ..

Laurent


Je ne pense pas que tu pourras faire ça, mais par contre, le nombre de pages
de ton état est certainement lié au nombre d'enregistrement de la source de
cet état.
Donc tu peux compter le nombre d'enregistrement et en déduire le nombre de
pages.
Recordset.RecordCount


"Laurent" wrote:

Merci mais le but du jeu pour moi est de détecter sans aller à la fin du
document si possible qu'il il y a plus de 10 pages par ex. ce qui m'intéresse
ce n'est pas le nombre de pages totale mais de savoir si l'état contient plus
de pages qu'une limite que je me suis fixé.

La propriété "Pages" lit tout le document pour me restituer l'info et c'est
très pénalisant au niveau temps de traitement : Ce qu'il faudrait pouvoir
faire c'est lire les pages de mon Etat jusqu'à une limite que je me serais
fixé. (10 pages par ex) ou carrément accéder à la 11ième page pour vérifier
si elle existe : si la 11ième page existe je considère que mon envoi est trop
volumineux et je n'envoie pas le mail..

Si quelqu'un à une idée pour lire les pages d'un état jusqu'à une certaine
limite cela m'intéresse .. le Méthode GOTOPAGE semble ne pas être adapté au
Etats..

Merci d'avance

Laurent




Pages te donne le nombre de pages dans un état
Page te donne le n° de page courant


"Laurent" wrote:

Bonjour

J'ai un état à transmettre par messagerie au format SNP.

Le problème c'est que cet état est parfois très volumineux (beaucoup de
pages) et que dans ce cas je ne veux pas envoyer cet état.

D'ou ma question : Est-il possible de connaître le nombre de page d'un état
par programmation et biensur sans ouvrir cet état et sans aller jusqu'à la
dernière page ..pour connaîetre ce nombre de page..

Merci.

Laurent
















Avatar
crinblanc
Les paramètres sont stockés dans PdfCreator.ini qui se trouve dans un dossier
caché.
C:Documents and Settings"nom de l'utilisateur du PC"Application
DataPDFCreator.
C'est pour cela que j'utilise Environ$ qui te donne ce dossier quelque soit
le PC et le nom de l'utilisateur.
Courage tu es presque au bout!!

"Laurent" wrote:

Merci encore ..

En fait j'avais téléchargé PDF995 qui est équivalent mais moins riche semble
t-il en fonctionnalités..

Il me reste un souci quand même c'est de savoir ou est situé le fichier
PDFcreator.ini que je dois modifier à chaque envoi puisque chaque mail
contient un fichier d'un nom différent (1 par Utilisateur en fait!).

J'ai cherché partout et surtout dans le repértoire crée PDFcréator crée au
moment de l'Install et je ne vois rien .. pourtant il doit bien y avoir
stocké quelque part les infos du paramétrage de PDFcréator.. sinon je procède
par fichier identique que je recopie ensuite sous un autre nom..

Merci encore pour les infos.. j'avance à grand pas..

Laurent



1 2