envoi de mail

Le
lolo
Bonjour tous

Voila je viens de trouver un petit fichier excel permettant d'envoyer
un mail lorsqu'un tache est depass par rapport la date du jour
Par contre j'ai un problme je voudrais modifier ce fichier mais je
n'y connait rien du tout en vba.
En fait a l'ouverture du fichier il scanne des taches raliser et
les envois par mail si la date du jour est dpasse. ( si j'ai bien
comprise le fonctionnement)
En fait ce que je voudrais c'est que en face de chaque taches il y est
le nom de la personne qui doit raliser cette tache et suivant son nom
lui envoyer un mail
Par exemple en tache 1 "ranger le bureau" la personne qui ralise
l'action est laurent .Si la date est depass il envoie un message
l'adresse (laurent@yahoo.fr) du genre le message type de la feuille.
Pour l'action 2 un message est envoy jacques si la date est
dpasse. et ainsi de suite pour les actions suivantes.

je met sert de ce code l

[CODE]' A l'ouverture du classeur
' cette procdure balaye les taches entres dans la feuille
'FeuilleTest',
' slectionne celles dont l'chance est proche (limite en C2)
' compose et envoie un mail contenant la liste de celles-ci
Private Sub Workbook_Open()

Dim NbTaches As Integer, LeMessage As String, LObjet As String
Dim Rponse As Integer
' slection de la feuille de test
Sheets("FeuilleTest").Select
' positionnement au dbut de la liste des taches (la cellule A5
est nomm)
Range("DbutZone").Select
NbTaches = 0 ' initialisation du compteur de taches
LeMessage = "" ' initialisation du message qui reoit les
taches urgentes
' Tant que la slection n'est pas vide
Do While Not IsEmpty(Selection)
' calcul pour la cellule de droite de l'cart entre la date
limite
' et la date du jour et comparaison avec la limite en C2
(cellule nomme Dlai)
' si l'chance est proche
If (Selection.Offset(0, 1) - Date) < Range("Dlai") Then
NbTaches = NbTaches + 1 ' on ajoute au compteur de
taches
' on ajoute au message la description de la tache
' le "%0A" indique un retour ligne en hexadcimal
' car le vbVrLf n'est pas interprt l'extrieur de
VB
LeMessage = LeMessage & NbTaches & " : " & Selection.Value
& "%0A"
End If
Selection.Offset(1, 0).Select ' Slection de la cellule
suivante
Loop
' si on a dtect des taches proches de l'xchance,
' on demande confirmation de l'envoi du mail
If NbTaches > 0 Then
'MsgBox avec boutons Oui et Non. La fonction renvoie la
rponse
' de l'utilisateur
Rponse = MsgBox("Confirmer l'envoi d'un message pour " &
NbTaches & " taches", vbYesNo + vbQuestion, "CONFIRMATION SVP")
If Rponse = vbYes Then
LObjet = "Liste des " & NbTaches & " tches urgentes
effectuer"
' appel de la procdure d'envoi du mail
' ici le 4me argument (la pice jointe)
' n'est pas renseign
EnvoiEmail "laurent@yahoo.fr", LObjet, LeMessage
End If
End If
End Sub[/CODE]

puis celui ci

[CODE]Sub EnvoiEmail(Adresse As String, Objet As String, Corps As
String, Optional PJ As String)
' Remarque : l'argument PJ (pice jointe) est optionnel. S'il est
fourni,
' c'est le chemin complet du fichier joindre qui doit tre fourni
' pour joindre plusieurs pices,
' il faudrait que PJ soit un tableau et qu'il soit trait + bas par
une boucle
Dim HyperLien As String ' Reoit les lments de l'hyperlien
' composs partir des arguments fournis
la procdure
Dim i As Integer ' un compteur
Dim Client As Integer
' la syntaxe de base du mailto est la suivante :
' mailto:dest@domaine.bof?Subject=Le sujet du message&Body=Le corps du
message
' je ne prends pas en compte les copies, copies caches ou autres
confirmation de lecture
' il faudrait utiliser d'autre arguments de mailto

HyperLien = "mailto:" & Adresse & "?" ' Le ? introduit les
arguments
HyperLien = HyperLien & "Subject=" & Objet & " ( " & Time() & ")"
HyperLien = HyperLien & "&Body=" & Corps ' le & spare les
arguments
'MsgBox Application.Name

' Activation du lien
'
' Pour Excel (les autres doivent tre en commentaire)
ActiveWorkbook.FollowHyperlink HyperLien
' Pour Word (les autres doivent tre en commentaire)
' ThisDocument.FollowHyperlink HyperLien
' Pour Access (les autres doivent tre en commentaire)
' Application.FollowHyperlink HyperLien

Attendre 5 ' Appel d'une procdure
qui temporise
' c'est dire que la
procdure courante
' (ici EnvoiMail) est
suspendue pendant 5s
' cela permet d'Attendrere
que le client
' de messagerie soit lanc
et prt
' avant d'envoyer les
touches
' sinon ce serait le
programme appelant
' (ici Excel) qui recevrait
les touches

Client = 1 ' 1=Outlook Express
' 2=Mozilla Thunderbird
' 3=Office Outlook

Select Case Client ' appel du chargement des tableaux des touches
selon le
' client de messagerie indiqu
Case 1
OutLookExpress
Case 2
MozillaThunderbird
Case 3
Office2003OutLook
Case Else
MsgBox "Aucun client de messagerie connu n'est indiqu"
Exit Sub
End Select

' Le traitement de la pice jointe ne s'excute que si la procdure
reu qqchose
' dans l'argument PJ (Optional<=>Facultatif)

If PJ <> "" Then
For i = 1 To TouchesPJ(0) ' dans TouchesPJ(0) on a stock le
nombre de touches
' envoyer au programme pour joindre
une pice
SendKeys TouchesPJ(i), True ' Envoie les touches d'ajout
d'1 pice jointe
Attendre 1 ' temporise ( rgler
ventuellement)
Next i
SendKeys PJ, True ' A ce stade le programme Attendre un nom
de fichier
' on lui envoie
Attendre 1 ' on temporise
SendKeys "{ENTER}", True ' et on valide ce nom de fichier
Attendre 1
End If
For i = 1 To TouchesEnvoi(0)
SendKeys TouchesEnvoi(i), True ' on envoie le message
Next i
End Sub[/CODE]

En fait ce que je voudrais c'est une feuille qui serait construite de
la manire suivante
Action|date|acteurs

Si la la date est superieur celle du jour, l'action terminer est
envoy l'acteur
Par contre je voudrais ne pas rentrer les adresses mail mais juste les
prnoms mais qui serait eux relis une adresse mail je pense qu'il
faudrait faire une sorte de tableaumais je sais pas trop comment m'y
prendre vu que j'y connais rien.

Merci de votre aide

Ci joint un lien ou vous pouvez voir le fichier :
http://cjoint.com/?hxs6xlagCC

A+
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
lolo
Le #3800981
Bonjour à tous

Personne pour me donner un petit coup de pouce ?

Merci

A+
Michel
Le #3800021
Salut,

Il faut juste que tu utilises une variable pour Adresse avant d'utiliser le
mailto:

@+

Michel.


"lolo"
Bonjour à tous

Voila je viens de trouver un petit fichier excel permettant d'envoyer
un mail lorsqu'un tache est depassé par rapport à la date du jour
Par contre j'ai un problème je voudrais modifier ce fichier mais je
n'y connait rien du tout en vba.
En fait a l'ouverture du fichier il scanne des taches à réaliser et
les envois par mail si la date du jour est dépassée. ( si j'ai bien
comprise le fonctionnement)
En fait ce que je voudrais c'est que en face de chaque taches il y est
le nom de la personne qui doit réaliser cette tache et suivant son nom
lui envoyer un mail
Par exemple en tache 1 "ranger le bureau" la personne qui réalise
l'action est laurent .Si la date est depassé il envoie un message à
l'adresse () du genre le message type de la feuille.
Pour l'action 2 un message est envoyé à jacques si la date est
dépassée. et ainsi de suite pour les actions suivantes.

je met sert de ce code là

[CODE]' A l'ouverture du classeur
' cette procédure balaye les taches entrées dans la feuille
'FeuilleTest',
' sélectionne celles dont l'échéance est proche (limite en C2)
' compose et envoie un mail contenant la liste de celles-ci
Private Sub Workbook_Open()

Dim NbTaches As Integer, LeMessage As String, LObjet As String
Dim Réponse As Integer
' sélection de la feuille de test
Sheets("FeuilleTest").Select
' positionnement au début de la liste des taches (la cellule A5
est nommé)
Range("DébutZone").Select
NbTaches = 0 ' initialisation du compteur de taches
LeMessage = "" ' initialisation du message qui reçoit les
taches urgentes
' Tant que la sélection n'est pas vide
Do While Not IsEmpty(Selection)
' calcul pour la cellule de droite de l'écart entre la date
limite
' et la date du jour et comparaison avec la limite en C2
(cellule nommée Délai)
' si l'échéance est proche
If (Selection.Offset(0, 1) - Date) < Range("Délai") Then
NbTaches = NbTaches + 1 ' on ajoute au compteur de
taches
' on ajoute au message la description de la tache
' le "%0A" indique un retour ligne en hexadécimal
' car le vbVrLf n'est pas interprété à l'extérieur de
VB
LeMessage = LeMessage & NbTaches & " : " & Selection.Value
& "%0A"
End If
Selection.Offset(1, 0).Select ' Sélection de la cellule
suivante
Loop
' si on a détecté des taches proches de l'éxchéance,
' on demande confirmation de l'envoi du mail
If NbTaches > 0 Then
'MsgBox avec boutons Oui et Non. La fonction renvoie la
réponse
' de l'utilisateur
Réponse = MsgBox("Confirmer l'envoi d'un message pour " &
NbTaches & " taches", vbYesNo + vbQuestion, "CONFIRMATION SVP")
If Réponse = vbYes Then
LObjet = "Liste des " & NbTaches & " tâches urgentes à
effectuer"
' appel de la procédure d'envoi du mail
' ici le 4ème argument (la pièce jointe)
' n'est pas renseigné
EnvoiEmail "", LObjet, LeMessage
End If
End If
End Sub[/CODE]

puis celui ci

[CODE]Sub EnvoiEmail(Adresse As String, Objet As String, Corps As
String, Optional PJ As String)
' Remarque : l'argument PJ (pièce jointe) est optionnel. S'il est
fourni,
' c'est le chemin complet du fichier à joindre qui doit être fourni
' pour joindre plusieurs pièces,
' il faudrait que PJ soit un tableau et qu'il soit traité + bas par
une boucle...
Dim HyperLien As String ' Reçoit les éléments de l'hyperlien
' composés à partir des arguments fournis à
la procédure
Dim i As Integer ' un compteur
Dim Client As Integer
' la syntaxe de base du mailto est la suivante :
' mailto:?Subject=Le sujet du message&Body=Le corps du
message
' je ne prends pas en compte les copies, copies cachées ou autres
confirmation de lecture
' il faudrait utiliser d'autre arguments de mailto...

HyperLien = "mailto:" & Adresse & "?" ' Le ? introduit les
arguments
HyperLien = HyperLien & "Subject=" & Objet & " (à " & Time() & ")"
HyperLien = HyperLien & "&Body=" & Corps ' le & sépare les
arguments
'MsgBox Application.Name

' Activation du lien
'
' Pour Excel (les autres doivent être en commentaire)
ActiveWorkbook.FollowHyperlink HyperLien
' Pour Word (les autres doivent être en commentaire)
' ThisDocument.FollowHyperlink HyperLien
' Pour Access (les autres doivent être en commentaire)
' Application.FollowHyperlink HyperLien

Attendre 5 ' Appel d'une procédure
qui temporise
' c'est à dire que la
procédure courante
' (ici EnvoiMail) est
suspendue pendant 5s
' cela permet d'Attendrere
que le client
' de messagerie soit lancé
et prêt
' avant d'envoyer les
touches
' sinon ce serait le
programme appelant
' (ici Excel) qui recevrait
les touches

Client = 1 ' 1=Outlook Express
' 2=Mozilla Thunderbird
' 3=Office Outlook

Select Case Client ' appel du chargement des tableaux des touches
selon le
' client de messagerie indiqué
Case 1
OutLookExpress
Case 2
MozillaThunderbird
Case 3
Office2003OutLook
Case Else
MsgBox "Aucun client de messagerie connu n'est indiqué"
Exit Sub
End Select

' Le traitement de la pièce jointe ne s'exécute que si la procédure
à reçu qqchose
' dans l'argument PJ (Optional<=>Facultatif)

If PJ <> "" Then
For i = 1 To TouchesPJ(0) ' dans TouchesPJ(0) on a stocké le
nombre de touches
' à envoyer au programme pour joindre
une pièce
SendKeys TouchesPJ(i), True ' Envoie les touches d'ajout
d'1 pièce jointe
Attendre 1 ' temporise (à règler
éventuellement)
Next i
SendKeys PJ, True ' A ce stade le programme Attendre un nom
de fichier
' on lui envoie
Attendre 1 ' on temporise
SendKeys "{ENTER}", True ' et on valide ce nom de fichier
Attendre 1
End If
For i = 1 To TouchesEnvoi(0)
SendKeys TouchesEnvoi(i), True ' on envoie le message
Next i
End Sub[/CODE]

En fait ce que je voudrais c'est une feuille qui serait construite de
la manière suivante
Action|date|acteurs

Si la la date est superieur à celle du jour, l'action à terminer est
envoyé à l'acteur...
Par contre je voudrais ne pas rentrer les adresses mail mais juste les
prénoms mais qui serait eux reliés à une adresse mail je pense qu'il
faudrait faire une sorte de tableau...mais je sais pas trop comment m'y
prendre vu que j'y connais rien....

Merci de votre aide

Ci joint un lien ou vous pouvez voir le fichier :
http://cjoint.com/?hxs6xlagCC

A+
Poster une réponse
Anonyme