Macro excel : problème boucle ou envoi mail

chystre59 -  
 chystre59 -
Bonjour,

Je cherche à envoyer un mail lorsqu'une tache a un retard par rapport au délai initial. Il y a en tout 246 taches. Le retard s'il existe est inscrit automatiquement dans ma feuille excel (colonne K).
Je travaille donc sous Excel et Visual Basic mais j'ai un problème avec cette macro, elle ne s'execute pas.

Voici mon programme.

Sub EnvoiMail()

Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String
Dim Etat As String
Dim Etat2 As String
Dim Last As Integer
Dim i As Integer

Sheets("Planning").Select
Last = Range("K1").End(xlDown).Row

For i = 4 To Last
Etat = Range("K" & i).Value
Etat2 = Retard

If Etat = Etat2 Then

MailAd = "xx@xx.fr"
Subj = "retard dans une tâche"
Msg = "Bonjour," & vbCrLf & "je viens de voir qu'il y avait du retard dans l'éxecution d'une tache." & vbCrLf & "Pourriez-vous régulariser cela ?" & vbCrLf & "Cordialement"
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto

End If

Next i

End Sub


Quelqu'un aurait-il une solution ?

Merci
A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour,
Elle ne s'exécute pas ? ou bien le test pour envoyer le mail est toujours faut ?

en colonne K, qu'est ce qui est inscrit automatiquement ? (le mot : Retard, la valeur du retard ?)

Dans Etat2 = Retard :
1) Retard est initialiser à quel endroit ?
2) ou est ce l'affectation de la chaine de caractères retard à la variable Etat2 ?

Si c'est le 2) tu peux écrire :

If Range("K" & i).Value= "Retard" Then
0
chystre59
 
c'est bien le cas 2 mais en utilisant If Range("K" & i).Value= "Retard" Then ça ne fonctionne pas
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

Si tu disais sur quelle ligne et le message d'erreur, ne crois tu pas que ça pourrait faciliter une aide que tu demandes ?

retard, c'est une variable ?
tu écris
Etat2 = Retard
0
chystre59
 
Ben justement, je ne sais pas sur quelle ligne se trouve l'erreur. il semblerait qu'il s'execute mais qu'il ne lance pas outlook.
Retard, c'est ce qui s'affiche si la tache est en retard. Seul retard s'affiche et non pas la durée du retard.
0
Utilisateur anonyme
 
Alors tu peux utiliser la dernière ligne du post 1, à condition que l'écriture dans la colonne K soit bien 'Retard' (respect des majuscules et minuscules). Attention également qu'à la fin du mot 'Retard', il n'y ait pas d'espace. ('Retard' et 'Retard ' sont différents)
0
chystre59
 
Eh bien en fait, l'erreur se trouavit dans ces deux lignes de programmes.

Sheets("Planning").Select
Last = Range("K1").End(xlDown).Row

Je ne sais pas où exactement mais j'ai supprimé ces deux lignes et sans avoir touché à autre chose, tout fonctionne très bien.
0
Utilisateur anonyme
 
Bravo.
Je m'étais focalisé sur le test, et pas vérifié le reste ...

Mais ne me dis pas que ça marche en gardant Etat2 = Retard. C'est pas possible!
0
chystre59
 
Absolument pas !!
C'est juste que je l'ai modifié mais j'ai oublié de le dire... Petite omission.
Merci quand même
0