Hello,
en pièce jointe , un classeur qui reprend les colonnes de One81 ( ajout d'une colonne Nom au début) et qui permet d'envoyer des courriels aux destinataires en utilisant le principe du classeur que j'avais mis en lien. On utilise des plages ou cellules nommées :
Il y a deux boutons un pour envoyer par thunderbird, un pour envoyer par outlook. On peut envoyer en manuel (c'est à dire qu'on visualise ce qui va être envoyé et on appuie soit même pour l'envoi) ou en automatique. Dans le classeur c'est réglé sur manuel. Pour le corps du message j'ai mis du html pour que cela soit plus joli mais on peut très bien mettre du texte brut. Dans le corps il y a deux variables une pour le destinataire et une pour l'expéditeur.
Le code de la fonction Outlook a été généré par I.A et je n'ai pas pu testé vu que je n'ai pas Outlook. Voici le code :
Public Function EnvoyerViaOutlook( _
ByVal destinataires As String, _
ByVal sujet As String, _
ByVal corps As String, _
Optional ByVal expediteur As String = "", _
Optional ByVal cc As String = "", _
Optional ByVal PiecesJointes As String = "", _
Optional ByVal SendNow As Boolean = False) As String
Dim olApp As Object
Dim olMail As Object
Dim fichiers As Variant
Dim fichier As Variant
On Error GoTo GestionErreur
' Connexion à Outlook
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo GestionErreur
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
' Création du message
Set olMail = olApp.CreateItem(0)
With olMail
.To = destinataires
.cc = cc
.Subject = sujet
.body = corps
' Expéditeur (si autorisé par Outlook)
If Trim(expediteur) <> "" Then
.SentOnBehalfOfName = expediteur
End If
' Pièces jointes séparées par des virgules
If Trim(PiecesJointes) <> "" Then
fichiers = Split(PiecesJointes, ",")
For Each fichier In fichiers
fichier = Trim(CStr(fichier))
If fichier <> "" Then
If Len(Dir(CStr(fichier))) = 0 Then
Err.Raise vbObjectError + 1000, , _
"Fichier introuvable : " & fichier
End If
.Attachments.Add CStr(fichier)
End If
Next fichier
End If
' Envoi ou affichage
If SendNow Then
.Send
EnvoyerViaOutlook = "Envoyé à : " & destinataires
Else
.Display
EnvoyerViaOutlook = "Message préparé pour : " & destinataires
End If
End With
Set olMail = Nothing
Set olApp = Nothing
Exit Function
GestionErreur:
EnvoyerViaOutlook = "Erreur Outlook : " & Err.Description
Set olMail = Nothing
Set olApp = Nothing
End Function
Donc à tester.
Voici un exemple de ce que l'on obtient en réception avec du code html dans le corps :
Le classeur est à peaufiner (par exemple je ne gère pas pour l'instant le status).
Ami calmant, J.P