Macro excel envoie de mail multiple en copie caché

ludot76 Messages postés 6 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 9 décembre 2009 - 9 déc. 2009 à 16:16
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Derniè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

1 réponse

c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
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.

Bonne journée
0
Rejoignez-nous