Bonjour à tous,
Je suis sur excel 2013.
J'ai crée une macro pour envoyer des mails automatiques lorsqu'une condition de date est remplie (la date du jour) couplé à un script vba et le planificateur de tâche pour que l'envoi soit automatique.
L'envoi automatique se fait bien mais la macro n’envoie qu'un seul mail même s'il y a la condition plusieurs fois (désolé j'ai du mal à expliquer)
Lorsque je lance la macro via l’éditeur visual basic d'excel TOUS les mails sont bien envoyés.
Voici ma macro : J'ai super détaillée car je ne suis pas très douée ^^
	
	
	
	
	
		
Merci pour votre aide 😀
	
		
			
		
		
	
				
			Je suis sur excel 2013.
J'ai crée une macro pour envoyer des mails automatiques lorsqu'une condition de date est remplie (la date du jour) couplé à un script vba et le planificateur de tâche pour que l'envoi soit automatique.
L'envoi automatique se fait bien mais la macro n’envoie qu'un seul mail même s'il y a la condition plusieurs fois (désolé j'ai du mal à expliquer)
Lorsque je lance la macro via l’éditeur visual basic d'excel TOUS les mails sont bien envoyés.
Voici ma macro : J'ai super détaillée car je ne suis pas très douée ^^
		VB:
	
	
	Sub Envoi_mail()
 'définition des variables et du client de messagerie utilisé
    Dim NOM As String
    Dim DM As String
    Dim ENVOI2 As Date
    Dim Email As String
    Dim message As String
    Dim i As Long
    Dim OLApplication As Outlook.Application, OLMail As Outlook.mailItem
 
    Set OLApplication = CreateObject("Outlook.Application")
    With Feuil1.ListObjects(1)
 
 
       For i = 1 To .ListRows.Count
            NOM = .ListColumns("Nom").DataBodyRange(i)
            ENVOI2 = 0 ' pour dire que la colonne n'a pas forcément qu'une date mais ça ne marche pas :'(
            If IsDate(.ListColumns("ENVOI2").DataBodyRange(i)) Then ENVOI2 = .ListColumns("ENVOI2").DataBodyRange(i)
            Email = .ListColumns("Email").DataBodyRange(i)
            DM = .ListColumns("DM").DataBodyRange(i)
           
            If ENVOI2 = Date Then 'condition
           
                    'Envoi du mail
                    Set OLMail = OLApplication.createItem(olMailItem)
                    With OLMail
                   
                        .To = Email ' Destinataire
                        .CC = >Destinataire en Copie '(je n'en ai pas besoin)
                       '.BCC = CopieCarboneInvisible 'Destinataire en Copie Caché '(je n'en ai pas besoin)
                        .Importance = olImportanceNormal 'Niveau importance du mail
                        .Subject = "Fin de période d'essai " ' Sujet du mail
                        .Categories = "Daily"
                        .Display 'insertion signature
                   
                        message = "Salut " & DM & "<br>" & "<br>" & "Le délai de prévenance de fin de période d'essai de " & NOM & " arrive à échéance."
                       .HTMLBody = message & .HTMLBody
                    '   .Attachments.Add CheminDestination ' Pièce jointe '(je n'en ai pas besoin)
                    '   .OriginatorDeliveryReportRequested = True ' Accusé de dépôt '(je n'en ai pas besoin)
                    '   .ReadReceiptRequested = True 'Accusé de lecture '(je n'en ai pas besoin)
                       .Send 'Envoi du mail sans visualisation
                 
                    End With
               
                    Set OLMail = Nothing
               
            End If
   
        Next i
   
    End With
    Set OLApplication = Nothing
End Sub
'Prévoir un envoi automatiquement 1 fois le matin à l'ouverture du classeur (il s'ouvre automatiquement à l'ouverture de windows)
'avec le planificateur de tâches : créer un .vbs avec les instructions : ok ça fonctionne
'le code utilisé :
    'Option Explicit
    'On Error Resume Next
    'TacheExcel
    'Sub TacheExcel()
    'Dim ApplicationExcel
    'Dim ClasseurExcel
    'Set ApplicationExcel = CreateObject("Excel.Application")
    'Set ClasseurExcel = ApplicationExcel.Workbooks.Open("C:\Users\04250-G2\Documents\Suivi_PE_TEST_moi.xlsm") 'ouvre excel
    'ApplicationExcel.Visible = True 'les actions seront visibles. Pour tout lancer en arrière-plan, remplacer True par False
    'ApplicationExcel.Run "'C:\Users\04250-G2\Documents\Suivi_PE_TEST_moi.xlsm'!Feuil1.Envoi_mail" 'va lancer la macro
    'ApplicationExcel.Quit 'pour quitter excel
    'Set ClasseurExcel = Nothing
    'Set ApplicationExcel = Nothing
    'End SubMerci pour votre aide 😀
Pièces jointes
			
				Dernière édition: 
			
		
	
								
								
									
	
		
			
		
		
	
	
	
		
			
		
		
	
								
							
							 
	 
 
		 
 
		 
			 
			 
 
		 
 
		 
 
		