Ajouter un tempo a une macro

nicopof

XLDnaute Nouveau
Bonjour,

J'ai actuellement une macro qui fonctionne bien mais j'aimerai l'améliorer, j'aimerai rajouter une tempo de 30 seconde avant l'envoie de l'email
Alors, pour ma macro, des qu'elle détecte le chiffre 31 32 34 18 ou 99 dans certaine colonne en m'envoie un mail auto
pour sa aucun souci sa fonctionne très bien, j'aimerai que des qu'elle detecte qu'elle attende 30 seconde avant de l'envoyer car d'autre info sont rentrer dans d'autre colonne et j'aimerai que ces info soit dans mon email body donc j'ai pensé a mettre en pause la macro le temps que les info soit rentrer dans la collone d'apres.

voici ma macro


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim tablCode
tablCode = Array(31, 34, 36, 18, 99)

If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Or Target.Column = 6 Then
For i = 0 To 4
If Target.Value = tablCode(i) Then
'Macro email
'--------------------------------------------------------
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = " DL " & tablCode(i)
Email_Send_From = "xxxxxxx@xxx.xxx"
Email_Send_To = "xxxxxxx@xxx.xxx""
Email_Cc = "xxxxxxx@xxx.xxx"
Email_Bcc = "xxxxxxx@xxx.xxx"
Email_Body = "auto mail" & vbCr & _
"" & vbCr & _
"Un code " & tablCode(i) & " a été atritubé autjoudh'ui" & vbCr & _
vbCr & _
"Date : " & Cells(Target.Row, 1) & vbCr & _
"Nom agent: " & Cells(Target.Row, 2) & vbCr & _
"Vol Départ: " & Cells(Target.Row, 13) & vbCr & _
"STD: " & Format(Cells(Target.Row, 18), "hh:mm") & vbCr & _
"ATD: " & Format(Cells(Target.Row, 19), "hh:mm") & vbCr & _
"@tt"

On Error GoTo debugs
Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.cc = Email_Cc
.BCC = Email_Bcc
.Body = Email_Body
.Send
End With
debugs:
If Err.Description <> "" Then MsgBox Err.Description
'----------------------------------------------------------------
End If

Next
End If
End Sub


Si une personne aurait une idée!!

Merci
 

nicopof

XLDnaute Nouveau
Re : Ajouter un tempo a une macro

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim tablCode
tablCode = Array(31, 34, 36, 18, 99)

If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Or Target.Column = 6 Then
For i = 0 To 4
If Target.Value = tablCode(i) Then
application.wait (now + timevalue("00:00:30"))




dans cette partie la?
 

nicopof

XLDnaute Nouveau
Re : Ajouter un tempo a une macro

je dois mal l'ecrire

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim tablCode
tablCode = Array(31, 34, 36, 18, 99)

If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Or Target.Column = 6 Then
For i = 0 To 4
If Target.Value = tablCode(i) Then
If Application.Wait(Now + TimeValue("00:00:30")) Then

...

ERREUR DE COMPILATION comme message
 

nicopof

XLDnaute Nouveau
: Ajouter un tempo a une macro

Alors la tempo fonctionne mais pas comme je le voudrais, dès que je mets 31 dans la colonne souhaité, je ne peux plus écrire dans les autres cellules à côté; sa attend 30s sa envoie le mail et après je peux écrire. J'ai joints le fichier pour que tu puisses voir.

Ce que je veux c'est que le mail part quand il y a un des codes marqué et dès que la case explication est remplir d'un commentaire
 

Pièces jointes

  • envoie mail.jpg
    envoie mail.jpg
    73.6 KB · Affichages: 24

tototiti2008

XLDnaute Barbatruc
Re : Ajouter un tempo a une macro

Bonjour à tous,

pour sa aucun souci sa fonctionne très bien, j'aimerai que des qu'elle detecte qu'elle attende 30 seconde avant de l'envoyer car d'autre info sont rentrer dans d'autre colonne et j'aimerai que ces info soit dans mon email body donc j'ai pensé a mettre en pause la macro le temps que les info soit rentrer dans la collone d'apres

Le principe de départ est discutable
si elle tape ton nombre et va prendre un café, tes 30 secondes n'apporteront rien
Ne serait-il pas plus simple de vérifier la dernière info saisie, et si le numéro de la ligne est un nombre magique elle envoie le mail ?

sinon, pour attendre un temps en laissant la main à l'utilisateur, tu peux chercher du côté de OnTime, par exemple
 
Dernière édition:

nicopof

XLDnaute Nouveau
Re : Ajouter un tempo a une macro

J'avais de faire partir le mail en créant une colonne fictive. Actuellement le mail part quand j'écrit moi même le chiffre souhaite dans la colonne souhaité. Mais comment faire pour que le part automatiquement quand je n'écrie pas moi même , mais quand un résultat apparaît quand la case souhaité?
 

nicopof

XLDnaute Nouveau
Re : Ajouter un tempo a une macro

Finalement je vais sur la tempo,
dans feuille j'ai mit sa comme cela

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim tablCode
tablCode = Array(31, 34, 36, 18, 99)

If Target.Column = 24 Or Target.Column = 28 Or Target.Column = 32 Or Target.Column = 36 Then
For i = 0 To 4
If Target.Value = tablCode(i) Then
Application.OnTime Now() + TimeValue("00:00:20"), "Module1.RetrieveValues" then Email ()
End Sub

et dans une module le reste comme cela

Sub Mail()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = " DL " & tablCode(i)
Email_Send_From = "prukop.nico@gmail.com"
Email_Send_To = "prukop.nico@gmail.com"
Email_Cc = "prukop.nico@gmail.com"
Email_Bcc = "prukop.nico@gmail.com"
Email_Body = "auto mail" & vbCr & _
"" & vbCr & _
"Un code " & tablCode(i) & " a été attribué aujourd'hui" & vbCr & _
"Date : " & Cells(Target.Row, 1) & vbCr & _
"Nom agent: " & Cells(Target.Row, 2) & vbCr & _
"Vol Départ: " & Cells(Target.Row, 13) & vbCr & _
"STD: " & Format(Cells(Target.Row, 18), "hh:mm") & vbCr & _
"ATD: " & Format(Cells(Target.Row, 19), "hh:mm") & vbCr & _
"Durée: " & Format(Cells(Target.Row, 20), "hh:mm") & vbCr & _
"DR1: " & Format(Cells(Target.Row, 21), "hh:mm") & vbCr & _
"time: " & Format(Cells(Target.Row, 22), "hh:mm") & vbCr & _
"Explication: " & Format(Cells(Target.Row, 23), "hh:mm") & vbCr & _
"dr2: " & Format(Cells(Target.Row, 24), "hh:mm") & vbCr & _
"time: " & Format(Cells(Target.Row, 25), "hh:mm") & vbCr & _
"@tt"

On Error GoTo debugs
Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.cc = Email_Cc
.BCC = Email_Bcc
.Body = Email_Body
.Send
End With
debugs:
If Err.Description <> "" Then MsgBox Err.Description
'----------------------------------------------------------------
End If

Next
End If
End Sub


je ne vois pas comment tout dissocié
une idée?
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 974
dernier inscrit
chmikha