Salut à toutes et à tous,
Je pense que cette question a déjà été posé ... mais je n'y arrive pas !
J'ai écris ce code VBA ( code qui me permet d'envoyer des mails selon des confirmations) en suivant :
"" Sub m()
Application.ScreenUpdating = False
Dim MonSujet1 As String
Dim MonDestinataire1 As String
Dim MonContenu1 As String
Dim i As Integer
Dim oMail As MailItem
Dim oOutlook As Object
On Error Resume Next
Set oOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If oOutlook Is Nothing Then
Shell "Outlook.exe", vbHide
End If
For i = 4 To 15
MonSujet1 = Sheets("EIE").Cells(i, 6)
MonDestinataire1 = Sheets("EIE").Cells(11, 9)
MonContenu1 = "Rappel 1 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
MonContenu2 = "Rappel 2 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
MonContenu3 = "Rappel 3 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
If Sheets("Feuil1").Cells(i, 29).Value = 1 Then
Sheets("Feuil1").Cells(i, 30).Value = 0
Sheets("Feuil1").Cells(i, 31).Value = 0
Sheets("Feuil1").Cells(i, 32).Value = 0
End If
If Sheets("Feuil1").Cells(i, 22) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu1)
ElseIf Sheets("Feuil1").Cells(i, 23) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu2)
ElseIf Sheets("Feuil1").Cells(i, 24) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu3)
End If
Application.Wait Time + TimeSerial(0, 0, 1)
If Sheets("Feuil1").Cells(i, 22).Value = 1 Then
Sheets("Feuil1").Cells(i, 30).Value = 1
End If
If Sheets("Feuil1").Cells(i, 23).Value = 1 Then
Sheets("Feuil1").Cells(i, 31).Value = 1
End If
If Sheets("Feuil1").Cells(i, 24).Value = 1 Then
Sheets("Feuil1").Cells(i, 32).Value = 1
End If
Next i
Worksheets("EIE").Range("C4:C15").Copy Worksheets("Feuil1").Range("AA4")
Worksheets("EIE").Range("A4:A15").Copy Worksheets("Feuil1").Range("Z4")
MsgBox "Test terminé..."
Application.ScreenUpdating = True
End Sub ""
Il fonctionne mais reste lent, environ 40 secondes voir plus d'1 minute.
Ne connaissant pas la programmation je me doute qu'il doit y avoir de solutions pour écrire le code différemment et mieux ...
Quelqu'un peut t'il m'apporter une aide svp Merci d'avance
Je pense que cette question a déjà été posé ... mais je n'y arrive pas !
J'ai écris ce code VBA ( code qui me permet d'envoyer des mails selon des confirmations) en suivant :
"" Sub m()
Application.ScreenUpdating = False
Dim MonSujet1 As String
Dim MonDestinataire1 As String
Dim MonContenu1 As String
Dim i As Integer
Dim oMail As MailItem
Dim oOutlook As Object
On Error Resume Next
Set oOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If oOutlook Is Nothing Then
Shell "Outlook.exe", vbHide
End If
For i = 4 To 15
MonSujet1 = Sheets("EIE").Cells(i, 6)
MonDestinataire1 = Sheets("EIE").Cells(11, 9)
MonContenu1 = "Rappel 1 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
MonContenu2 = "Rappel 2 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
MonContenu3 = "Rappel 3 Importance : " & Sheets("EIE").Cells(i, 2) & Chr(10) & "A réaliser : " & Sheets("EIE").Cells(i, 1)
If Sheets("Feuil1").Cells(i, 29).Value = 1 Then
Sheets("Feuil1").Cells(i, 30).Value = 0
Sheets("Feuil1").Cells(i, 31).Value = 0
Sheets("Feuil1").Cells(i, 32).Value = 0
End If
If Sheets("Feuil1").Cells(i, 22) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu1)
ElseIf Sheets("Feuil1").Cells(i, 23) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu2)
ElseIf Sheets("Feuil1").Cells(i, 24) = 1 Then
Call EnvoyerEmail(MonSujet1, MonDestinataire1, MonContenu3)
End If
Application.Wait Time + TimeSerial(0, 0, 1)
If Sheets("Feuil1").Cells(i, 22).Value = 1 Then
Sheets("Feuil1").Cells(i, 30).Value = 1
End If
If Sheets("Feuil1").Cells(i, 23).Value = 1 Then
Sheets("Feuil1").Cells(i, 31).Value = 1
End If
If Sheets("Feuil1").Cells(i, 24).Value = 1 Then
Sheets("Feuil1").Cells(i, 32).Value = 1
End If
Next i
Worksheets("EIE").Range("C4:C15").Copy Worksheets("Feuil1").Range("AA4")
Worksheets("EIE").Range("A4:A15").Copy Worksheets("Feuil1").Range("Z4")
MsgBox "Test terminé..."
Application.ScreenUpdating = True
End Sub ""
Il fonctionne mais reste lent, environ 40 secondes voir plus d'1 minute.
Ne connaissant pas la programmation je me doute qu'il doit y avoir de solutions pour écrire le code différemment et mieux ...
Quelqu'un peut t'il m'apporter une aide svp