Voici le module concerné.
je ne comprends également pas ("Envoyer Mail aux fourisseurs",..): à quoi sert ce code?
Public Sub BoutonEnvoiMail()
If ActiveCell.Value = "" Then MsgBox "Merci de sélectionner une ligne dans le tableau": Exit Sub
ChoixDestin$ = Trim(LCase(Cells(ActiveCell.Row, "W"))) 'trim() pour suppr espace et lcase() pour test tout en minuscule
If ChoixDestin$ = "commande fournisseur" Then
If MsgBox("Envoyer Mail aux fournisseurs", vbQuestion + vbYesNo, "Envoi Mail") = vbYes Then Envoyer_Mail_CdeFournisseur Else Exit Sub
ElseIf ChoixDestin$ = "commande sous-traitant" Then
If MsgBox("Envoyer Mail aux sous-traitants", vbQuestion + vbYesNo, "Envoi Mail") = vbYes Then Envoyer_Mail_CdeST Else Exit Sub
Else
If ChoixDestin$ = "" Then
M$ = "Il n'y a aucune valeur dans le type de courrier !?"
Else: M$ = "La valeur dans le type de courrier n'est pas valide !?"
End If
MsgBox M$, vbExclamation, "erreur": Exit Sub
End If
End Sub
' Fournisseur
Sub Envoyer_Mail_CdeFournisseur()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = "C:\Chemin\NomFichier.ext"
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
With oBjMail
If ActiveCell.Value = "" Then MsgBox "Merci de sélectionner une ligne dans le tableau": Exit Sub
.To = Cells(ActiveCell.Row, 19).Value 'indique l adresse du destinataire = contenu de la colonne n°18 de la ligne active
.Subject = Cells(ActiveCell.Row, 3).Value & ", " & Cells(ActiveCell.Row, 22).Value & " : commande" ' l'objet du mail
'.Body = Range("C2").Value & vbCrLf ' Le corps de texte. Si on veut renvoyer à une cellule précise, on peut utiliser la fonction suivante après "Body =": Range("C2").Value & vbCrLf. Le code vbCrLf (ou le code "& Chr(13)") renvoie à la ligne (une sorte de "enter")
.Body = "Commande numéro " & Cells(ActiveCell.Row, 1).Value & " datée du " & Cells(ActiveCell.Row, 2).Value & " concernant le chantier : " & Cells(ActiveCell.Row, 4).Value _
& vbCrLf _
& Sheets("Cde@").[A16] & vbCrLf _
& Cells(ActiveCell.Row, 25).Value & " " & Cells(ActiveCell.Row, 26).Value & vbCrLf _
'.Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
.Display
'.Send 'Ici on peut supprimer pour l'envoyer sans vérification: il suffit de supprimer le " ' " devant la fonction ".send" et le mail partira sans vérification
End With
'ObjOutlook.Quit => cette fontion sert si on veut quitter automatiquement outlook après l'envoi du mail (il suffit ici de supprimer le caractère ' placé avant la fonction
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub
' Sous-traitant
Sub Envoyer_Mail_CdeST()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = "C:\Chemin\NomFichier.ext"
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
'ou encore
'et pour attacher un fichier en spécifiant le chemin dans une cellule:
'CheminFichier1$ = Sheets("Cde@").Range("A16")
'.Attachments.Add CheminFichier1$
'idem mais avec plusieurs cellules:
'CheminFichier1$ = Sheets("Feuil1").Range("A16")
'CheminFichier2$ = Sheets("Feuil1").Range("A17")
'CheminFichier3$ = Sheets("Feuil1").Range("A18")
'CheminFichier4$ = Sheets("Feuil1").Range("A19")
'If CheminFichier1$ > "" Then .Attachments.Add CheminFichier1$
'If CheminFichier2$ > "" Then .Attachments.Add CheminFichier2$
'If CheminFichier3$ > "" Then .Attachments.Add CheminFichier3$
'If CheminFichier4$ > "" Then .Attachments.Add CheminFichier4$
'et si on veut prévenir qu'il y a une mauvaise adresse ou qu'un fichier n'est pas valide:
'si on a plusieurs fichiers:
'For i = 1 To 5
'R$ = Choose(i, "A16", "A17", "A18", "A19", "A20")
'F$ = Sheets("Cde@").Range(R$)
'If F$ > "" Then
' If Dir(F$) <> "" Then .Attachments.Add F$ Else MsgBox "Ce chemin\fichier est incorrect ou inexistant !?" & vbLf & F$, vbCritical, ""
'End If
'Next
'____________________________________________________
With oBjMail
If ActiveCell.Value = "" Then MsgBox "Merci de sélectionner une ligne dans le tableau": Exit Sub
.To = Cells(ActiveCell.Row, 19).Value 'indique l adresse du destinataire = contenu de la colonne n°18 de la ligne active
.Subject = Cells(ActiveCell.Row, 3).Value & ", " & Cells(ActiveCell.Row, 22).Value & " : commande" ' l'objet du mail
'.Body = Range("C2").Value & vbCrLf ' Le corps de texte. Si on veut renvoyer à une cellule précise, on peut utiliser la fonction suivante après "Body =": Range("C2").Value & vbCrLf. Le code vbCrLf (ou le code "& Chr(13)") renvoie à la ligne (une sorte de "enter")
.Body = "Commande numéro " & Cells(ActiveCell.Row, 1).Value & " datée du " & Cells(ActiveCell.Row, 2).Value & " concernant le chantier : " & Cells(ActiveCell.Row, 4).Value _
& vbCrLf _
& Sheets("Cde@").[A7] & vbCrLf _
& Sheets("Cde@").[A8] & vbCrLf _
& Sheets("Cde@").[A9] & vbCrLf _
& Sheets("Cde@").[A10] & vbCrLf _
& Sheets("Cde@").[A11] & vbCrLf _
& Sheets("Cde@").[A12] & vbCrLf _
& Cells(ActiveCell.Row, 25).Value & " " & Cells(ActiveCell.Row, 26).Value & vbCrLf _
For i = 1 To 5
R$ = Choose(i, "A16", "A17", "A18", "A19", "A20")
F$ = Sheets("Cde@").Range(R$)
If F$ > "" Then
If Dir(F$) <> "" Then .Attachments.Add F$ Else MsgBox "Ce chemin\fichier est incorrect ou inexistant !? Merci de vérifier le chemin spécifié dans les cellules A16 à A20 de la feuille Cde" & vbLf & F$, vbCritical, ""
End If
Next
.Display
'.Send 'Ici on peut supprimer pour l'envoyer sans vérification: il suffit de supprimer le " ' " devant la fonction ".send" et le mail partira sans vérification
End With
'ObjOutlook.Quit => cette fontion sert si on veut quitter automatiquement outlook après l'envoi du mail (il suffit ici de supprimer le caractère ' placé avant la fonction
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub