Boucle sur envoi automatique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Solo_Wing75

XLDnaute Nouveau
😀
Bonjour à tous,

Je fais appel aux personnes plus expérimentés du forum en vous remerciant d'avance pour votre aide !

Voilà, j'ai pu construire la macro plus bas. Mon but était de construire une boucle qui envoie tout les onglets taggé à des destinataires différents + un onglet à part qui est le meme pour tout le monde (ici "RULES")

Le problème est que j'envoie toujours le meme onglet à chacun des destinataires au lieu que chacun recoivent le sien. Et c'est toujours l'onglet actif au moment d'envoyer la macro.

Vous sauriez quel termes je dois utiliser pour corriger ça ? Un grand merci d'avance une nouvelle fois !

VB:
Sub Mail_All_2()
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim sh As Worksheet
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim S As Shape

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

For Each sh In ThisWorkbook.Worksheets
If sh.Range("T2").Value Like "?*@?*.?*" Then

'Copie la feuille active comme nouvelle feuille
ThisWorkbook.Sheets(Array(ActiveSheet.Name, Sheets("RULES").Name)).Copy
Set Destwb = ActiveWorkbook
  
'Désactiver fenêtre de compatibilité
        Application.DisplayAlerts = False

TempFilePath = Environ$("temp") & "\"
TempFileName = ActiveSheet.Name


Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)


With Destwb
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=TempFilePath & TempFileName & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, ignoreprintareas:=False, openafterpublish:=False        ' sauvegarde du fichier au format pdf

    On Error Resume Next
    With OutMail
        .to = Range("T2").Value & ";" & Range("U2").Value & ";" & Range("V2").Value & ";" & Range("W2").Value
        .CC = ""
        .BCC = ""
        .Subject = "Headcount management report AUGUST 2020"
        .Attachments.Add TempFilePath & TempFileName & ".pdf"
        .Body = "Dear All," & vbCrLf & "Please find attached your monthly country headcount management report." & vbCrLf & "Kind regards"
        '.display 'ou alors utiliser
        .Send 'pour envoi
    End With
    On Error GoTo 0
    .Close savechanges:=False
End With

    'Effacer le fichier envoyé
Kill TempFilePath & TempFileName & ".pdf"

Set OutMail = Nothing
Set OutApp = Nothing


With Application
    .ScreenUpdating = True
    .EnableEvents = True
    End With

End If
Next sh

Set OutMail = Nothing
Set OutApp = Nothing


With Application
    .ScreenUpdating = True
    .EnableEvents = True
    End With

End Sub
 
Bonjour Solo_wing,
Vous faites :
VB:
TempFileName = ActiveSheet.Name
puis
.Attachments.Add TempFilePath & TempFileName & ".pdf"
donc c'est toujours ActiveSheet qui est envoyée.
Tentez plutôt de changer la feuille comme :
Code:
TempFileName = Sheets("Nom de la feuille concernée")
puis
.Attachments.Add TempFilePath & TempFileName & ".pdf"
ou peut être aussi avec Sh.name ( je n'ai pas tout décodé 😉 )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
386
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
4
Affichages
361
Réponses
2
Affichages
404
Retour