Macro excel envoie de mail multiple en copie caché
ludot76
Messages postés6Date d'inscriptionmardi 8 décembre 2009StatutMembreDernière intervention 9 décembre 2009
-
9 déc. 2009 à 16:16
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention 3 octobre 2013
-
10 déc. 2009 à 09:01
Bonjour,
Dans le cadre de mon activité pro, je dois preparer pour les clients un programme sur une feuille excel ou le client choisis ses fournisseurs potentiels ce qui selectionne l'adresse mail de chaque contact. le client passe automatiquemen sur la feuille de demande de devis.
Aprés avoir chercher différente info sur les forums j'ai trouvé la macro ci dessous. qui permet plusieur format de fichier excel et de boite de messagerie.
Mon 1er problème est qu'en envoyant à 1 seul adresse mail cela fonctionne, mais dès que je met
plusieurs adresse seul la première est prise en compte avec la formule "Array".
J'ai essayer en identifiant une cellule cible ou les adresses étaient concatener avec des "," entre les adresses.
Le 2eme est d'envoyer ses adresses en copie caché pour que chaque fournisseur reste anonyme.
Sub Envoi_mail()
'Working in 97-2007
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the sheet to a new workbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook
'Determine the Excel version and file extension/format
With Destwb
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr ".xls": FileFormatNum -4143
Else
'You use Excel 2007, we exit the sub when your answer is
'NO in the security dialog that you only see when you copy
'an sheet from a xlsm file with macro's disabled.
If Sourcewb.Name = .Name Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "Your answer is NO in the security dialog"
Exit Sub
Else
Select Case Sourcewb.FileFormat
Case 51: FileExtStr ".xlsx": FileFormatNum 51
Case 52:
If .HasVBProject Then
FileExtStr ".xlsm": FileFormatNum 52
Else
FileExtStr ".xlsx": FileFormatNum 51
End If
Case 56: FileExtStr ".xls": FileFormatNum 56
Case Else: FileExtStr ".xlsb": FileFormatNum 50
End Select
End If
End If
End With
' 'Change all cells in the worksheet to values if you want
' With Destwb.Sheets(1).UsedRange
' .Cells.Copy
' .Cells.PasteSpecial xlPasteValues
' .Cells(1).Select
' End With
' Application.CutCopyMode = False
'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp") & ""
TempFileName = "Feuille de " & Sourcewb.Name & " " _
& Format(Now, "dd-mmm-yy")
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
.SendMail Recipients:=Array((Range("='Demande de devis'!B37").Value), (""), (Range("='Demande de devis'!B38").Value)), _
Subject:="demande de devis adhérent d'Acti'Mat3", _
ReturnReceipt:=False
On Error GoTo 0
.Close SaveChanges:=False
End With
Application.DisplayStatusBar = True
Application.StatusBar = "Traitement en cours..."
MsgBox "Toute l'équipe d'Acti'Loc vous remercie"
Application.DisplayStatusBar = False
'Delete the file you have send
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Je vous remercie d'avance pour vos conseils
Salutations
Ludo
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention 3 octobre 20131 10 déc. 2009 à 09:01
Bonjour
Le peu que j'en sache la commande sendmail est restreinte aux trois paramètres utilisés.
Il est préférable de rajouter dans les références la librairie outlook pour bénéficier de toutes les possibilités (notamment les CC).
Pour info : les différents destinataires doivent être séparés par un point-virgule et non une virgule.
C'est tout ce que je peut écrire car mes envois sont faits à partir d'access et non excel.