1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
REM /*
REM Fichier modifié le 21/09/2009
REM Ajout du Do events tous les 5 envois de mail
REM Utilisation de l interface permettant de choisir le texte à envoyer
REM et d envoyer un test */
Private Declare Function ENVOI Lib "dllmailbo.dll" Alias "SENDMAIL" (ByVal mess As String, ByVal FromAddr As String, ByVal ToAddr As String, ByVal LeSujet As String, ByVal ToAttach As String, ByVal ParamHost As String, ByVal ParamPort As Integer) As Long
Public MObjet, MFrom, MContenu, Anom, MJoindre, ERepDest, ERapport, EFournisseur, EChRne As String
Public ELstEtab() As String
Public MAnnuler As Boolean
REM /* Ajout Bordeaux 11/10/2005 */
Public MTest As Boolean
Public MAdresseTest As String
Public t() As String Remtableau où le fichier txt est copié
Public posmsg() As String Rem /* Tableau de position des messages */
Public marque() As String Rem /* tableau des identifiants des messages */
Public msg() As String Rem /* tableau contenant le message à afficher */
Public fmessages As String Rem /* emplacement physique du fichier contenant les messages */
Sub Envoi_par_Mail()
Dim ParamHote As String
Dim ParamPort As Integer
Dim MailFin As String
REM /* ************ PARAMETRES MESSAGERIE ***************** */
ParamHost = "***"
ParamPort = ***
MailFin = "***@***"
REM /* Ajout Bordeaux 19/07/2007 */
fmessages = "***"
REM /***************************************************** */
Dim ColRNE As Column
Dim FileName, Adresse, Formule As String
Dim Rapport As Report
Dim Toto As DocumentVariables
Dim repertoire As String
Dim NbFournisseur As Integer
Dim PiecesJointes As String
Dim modulo As Integer
Dim TabAlphabet(23) As String
On Error GoTo SortErreur
Dim j As Integer
Dim k As Integer
j = 0
For i = 0 To 26
If Chr(65 + i) <> "I" And Chr(65 + i) <> "O" And Chr(65 + i) <> "Q" Then
TabAlphabet(j) = Chr(65 + i)
j = j + 1
End If
Next i
ReDim ELstEtab(0)
ERapport = ""
EFournisseur = ""
EChRne = ""
MAnnuler = False
Load ParamsEnvoi
ParamsEnvoi.Show
REM /* ********* création du répertoire où seront stocké les fichiers pdf ********* */
repertoire = Dir(ERepDest, vbDirectory)
If repertoire = "" Then
MkDir (ERepDest)
End If
REM /* **************************************************************************** */
repertoire = ERepDest
Unload ParamsEnvoi
If UBound(ELstEtab) < 1 Then
MsgBox "Aucun RNE sélectionné !"
Exit Sub
End If
If MAnnuler Then
Exit Sub
End If
Load ParamsMsg
ParamsMsg.Show
Unload ParamsMsg
If MAnnuler Then
Exit Sub
End If
Set Rapport = Application.ActiveDocument.Reports.Item(ERapport)
Set ColRNE = Application.ActiveDocument.DataProviders.Item(EFournisseur).Columns.Item(EChRne)
NbFournisseur = Application.ActiveDocument.DataProviders.Count
Dim trouve As Boolean
For i = 1 To NbFournisseur
trouve = False
If EFournisseur <> Application.ActiveDocument.DataProviders.Item(i).Name Then
For j = 1 To Application.ActiveDocument.DataProviders.Item(i).Columns.Count
If Application.ActiveDocument.DataProviders.Item(i).Columns.Item(j).Name = EChRne Then
trouve = True
Exit For
End If
Next j
If trouve Then
Exit For
End If
End If
Next i
REM /* filtre la colonne avec les rne sélectionnés et crée un pdf par rne */
For i = 0 To UBound(ELstEtab) - 1
If NbFournisseur > 1 And trouve Then
Formule = "=<" + EChRne + "(" + EFournisseur + ")>=" + Chr(34) + ELstEtab(i) + Chr(34)
Rapport.AddComplexFilter EChRne + "(" + EFournisseur + ")", Formule
Else
Formule = "=<" + EChRne + ">=" + Chr(34) + ELstEtab(i) + Chr(34)
Rapport.AddComplexFilter EChRne, Formule
End If
Rapport.ForceCompute
FileName = repertoire + "\\" + ELstEtab(i)
Rapport.ExportAsPDF FileName
Dim MySize As Long
MySize = FileLen(FileName + ".pdf")
If MySize > 3000000 Then
MsgBox "Erreur : Taille du fichier trop importante (> à 3Mo)"
GoTo SortErreur
End If
REM /* verif du RNE : prendre la partie des chiffres du rne, faire le modulo par 23 */
REM /* ( 23 lettres dans l alphabet car on enlève les lettres O, I, Q ) */
REM /* ajouter 1 au modulo, le résultat obtenu correspond à l'indice de la lettre de l'alphabet - O I Q */
Rem /* ex : 0622949U, 0622949 mod 23 = 17, la 17ème lettre correspond à U donc le RNE est valide */
modulo = (val(Left(ELstEtab(i), 7)) Mod 23)
If Len(ELstEtab(i)) = 8 And TabAlphabet(modulo) = Right(ELstEtab(i), 1) Then
Adresse = "ce." + ELstEtab(i)
Else
MsgBox "Rne non valide"
GoTo SortErreur
End If
If MJoindre <> "" Then
PiecesJointes = MJoindre + ";" + FileName + ".pdf"
Else
PiecesJointes = FileName + ".pdf"
End If
If MTest Then
If (MAdresseTest <> Empty) Then
ENVOI MContenu, MFrom, MAdresseTest, MObjet + " (à " + Adresse + ")", PiecesJointes, ParamHost, ParamPort
Else
ENVOI MContenu, MFrom, "***@***", MObjet + " (à " + Adresse + ")", PiecesJointes, ParamHost, ParamPort
End If
Else
ENVOI MContenu, MFrom, Adresse + MailFin, MObjet + " (à " + Adresse + ")", PiecesJointes, ParamHost, ParamPort
End If
If (i Mod 5 = 0) Then
DoEvents
End If
Next i
MsgBox "Envoi Terminé"
Exit Sub
SortErreur:
MsgBox "Erreur ou annulation"
If Err.Number <> 0 Then
msg = "Lerreur n° " & Str(Err.Number) & _
" a été générée par " _
& Err.Source & Chr(13) & Err.Description
MsgBox msg, , "Erreur", Err.HelpFile, Err.HelpContext
End If
End Sub |
Partager