XL 2010 Envoi d'un mail notifiant une modification à plusieurs destinataires

fafa29

XLDnaute Nouveau
Bonjour,

Je commence tout juste à utiliser VBA, mais je suis limité. Je cherche a envoyé un mail à une liste de diffusion, sans PJ, indiquant la modification du classeur qui vient d'etre entré.
Le code que j'ai utilisé est :

Sub envoiNonConformite()

MsgBox Fichier

Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.Createitem(0)

MonMessage.to = "moi@gmail.com"

MonMessage.Sudject = "TEST - Nouvelle NON CONFORMITE LOGISTIQUE"

contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Nous avons constater une Non-Conformité en réception, veuillez consulté le fichier SUIVI NON CONFORMITE LOGISTIQUE." & Chr(10) & Chr(13)
contenu = contenu & "Le fournisseur concerné est .................... " & Chr(10) & Chr(13)
contenu = contenu & "Cordialement" & Chr(10) & Chr(13)
contenu = contenu & "Service Logistique" & Chr(10) & Chr(13)
MonMessage.body = contenu

MonMessage.Send

Set MaMessagerie = Nothing

MsgBox "Votre mail a bien été envoyé"

End Sub

Problème :
- Je n'arrive pas mettre plusieur destinataire du mail (environ 10 adresses différentes)
- Le mail est envoyé grace à un bouton dans mon classeur, je souhaiterais que dans le contenu du mail que s'affiche la dernière ligne renseigné de la colonne F.

Merci d'avance pour votre aide
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Pour la première question: il suffit de créer une chaîne de caractères (string) contenant toutes les adresses mail séparées par des point-virgules.
Vous pouvez aussi mettre les adresses en copie par MonMessage.CC = "adr1@truc.fr;adr2@machin.ru;adr3@bidule.chose"
ou en BCC de la même façon.

Pour le nom du fournisseur : dans votre exemple, il n'y en a aucun, les références des formules sont cassées, de plus, ne laissez pas de lignes vides dans un tableau structuré (insertion/tableau).
Sans ligne vide dans votre tableau, la dernière valeur de la colonne "Nom fournisseur" pourrait être récupérée ainsi:
VB:
Dim NomFournisseur as string

With ThisWorkbook.Sheets("NON CONFORMITE").Range("NC[Nom Fournisseur")
        NomFournisseur = .Cells(.Rows.Count, 1)
End With

Vous pourrez alors inclure cette valeur dans votre message par concaténation comme vous l'avez fait pour le reste du contenu.

P.S. ne laissez pas trainer d'adresse email personnelles dans les fichiers exemples que vous joignez sur le site. Rééditez votre premier poste, supprimer le fichier joint et remettez-en un autre avec une adresse bidon dans la macro. A moins que vous ne souhaitiez être envahie de pourriels.

Bonne soirée
 

fafa29

XLDnaute Nouveau
Bonjour,

Merci pour ton aide. J'ai modifié mon dernier post.
Mais mon code ne marche pas :
Sub EnvoiNotification()

Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.CreateItem(0)
Dim NomFournisseur As String

With ThisWorkbook.Sheets("NON CONFORMITE").Range("NC[Nom Fournisseur")
NomFournisseur = .Cells(.Rows.Count, 1)
End With


MonMessage.To = "qsd@jdhfko.com;hjdhiahd@dhfm.com"
MonMessage.CC = "abc@cba.com"

MonMessage = "Problème Reception - NomFournisseur - N° NumeroNC "

contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Nous avons constaté la non-conformité, veuillez consulter le fichier SUIVI NON CONFORMITE LOGISTIQUE" & Chr(10) & Chr(13)
contenu = contenu & "<file:\\P:\Achats\BRENAUT Fanélie\QUALITE FOURNISSEUR>" & Chr(10) & Chr(13)
contenu = contenu & "Cordialement" & Chr(10) & Chr(13)
contenu = contenu & "Service Logistque"
MonMessage.Body = contenu

MonMessage.Send

Set MaMessagerie = Nothing

MsgBox "Votre mail a bien été envoyé"

End Sub


Je voulais aussi que le nom du fournisseur qui apparait dans le mail soit la ligne n'ayant pas la mention "Envoyée" dans la colonne U.
 

Pièces jointes

  • TEST - SUIVI DES NON-CONFORMITES LIVRAISON 2019-2020.xlsm
    26.3 KB · Affichages: 12

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Mais mon code ne marche pas

Qu'est-ce que cela veut dire ? Qu'est-ce qui ne marche pas ?
Pour le fournisseur en faisant ce que je vous avais donné plus haut, cela fonctionnerait, répondant à votre demande initiale : " je souhaiterais que dans le contenu du mail que s'affiche la dernière ligne renseigné de la colonne F.

Dans votre colonne de tableau aucun nom de fournisseur n'apparaît puisque les références sont rompues (=SIERREUR(RECHERCHEV([@[N° de commande]];#REF!;5;0);""). Comment tester sur "" ?

Je viens de vérifier l'adresse de la cellule retournée par .Cells(.Rows.Count, 1) c'est la bonne cellule (F18)

Votre nouvelle demande : "Je voulais aussi que le nom du fournisseur qui apparait dans le mail soit la ligne n'ayant pas la mention "Envoyée" dans la colonne U "

Et si plusieurs ou aucune ligne n'a la mention "Envoyée" ? Que fait-on ?

Je ne vois aucune tentative de votre part pour répondre à cette demande dans le code que vous nous donnez.
Essayez quelque chose au lieu d'attendre que nous vous pondions des solutions toutes cuites.
Revenez ensuite éventuellement.

Bonne journée
 
Dernière édition:

fafa29

XLDnaute Nouveau
Bonjour,
Je commence tout juste à codé sur VBA, c'est pour cela que je demande des solutions.
Mais bon je me suis débrouillée et trouvée la solution :
Sub EnvoiNotification()

Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.CreateItem(0)
Dim i As Integer
Dim Fournisseur As String
Dim NCNumero As Variant
Dim Notification As String
i = 12

MonMessage.To = "uio@ops.fr; ghd@mlk.net"
MonMessage.CC = "aze@rty.com"

MonMessage = "NON CONFORMITE RECEPTION"

contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Nous avons constaté la ou les non-conformité(s) en reception :" & Chr(10) & Chr(13)
Do
NCNumero = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 1).Value
Fournisseur = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 6).Value
Notification = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 21).Value
If IsNumeric(NCNumero) And Len(NCNumero) <> 0 And Notification <> "Envoyée" Then
contenu = contenu & "NON-CONFORMITE N° " & Str(NCNumero) & "- Fournisseur : " & Fournisseur & Chr(10) & Chr(13)
End If
i = i + 1
NCNumero = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 1).Value
Loop While Len(NCNumero) <> 0

contenu = contenu & "Veuillez consulter le fichier SUIVI NON CONFORMITE LOGISTIQUE"
contenu = contenu & "<file:\\P:\Achats\BRENAUT Fanélie\QUALITE FOURNISSEUR>" & Chr(10) & Chr(13)
contenu = contenu & "Cordialement" & Chr(10) & Chr(13)
contenu = contenu & "Service Logistque"
MonMessage.Body = contenu

MonMessage.Send

i = 12
Do
NCNumero = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 1).Value
Fournisseur = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 6).Value
Notification = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 21).Value
If IsNumeric(NCNumero) And Len(NCNumero) <> 0 And Statut <> "Envoyée" Then
ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 21).Value = "Envoyée"
End If
i = i + 1
NCNumero = ThisWorkbook.Worksheets("NON CONFORMITE").Cells(i, 1).Value
Loop While Len(NCNumero) <> 0

Set MaMessagerie = Nothing

MsgBox "Votre mail a bien été envoyé"

End Sub
 

Discussions similaires

Réponses
2
Affichages
227

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16