Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

envoi de mail

2 réponses
Avatar
lolo
Bonjour =E0 tous

Voila je viens de trouver un petit fichier excel permettant d'envoyer
un mail lorsqu'un tache est depass=E9 par rapport =E0 la date du jour
Par contre j'ai un probl=E8me 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 =E0 r=E9aliser et
les envois par mail si la date du jour est d=E9pass=E9e. ( 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=E9aliser cette tache et suivant son nom
lui envoyer un mail
Par exemple en tache 1 "ranger le bureau" la personne qui r=E9alise
l'action est laurent .Si la date est depass=E9 il envoie un message =E0
l'adresse (laurent@yahoo.fr) du genre le message type de la feuille.
Pour l'action 2 un message est envoy=E9 =E0 jacques si la date est
d=E9pass=E9e. et ainsi de suite pour les actions suivantes.

je met sert de ce code l=E0

[CODE]' A l'ouverture du classeur
' cette proc=E9dure balaye les taches entr=E9es dans la feuille
'FeuilleTest',
' s=E9lectionne celles dont l'=E9ch=E9ance 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=E9ponse As Integer
' s=E9lection de la feuille de test
Sheets("FeuilleTest").Select
' positionnement au d=E9but de la liste des taches (la cellule A5
est nomm=E9)
Range("D=E9butZone").Select
NbTaches =3D 0 ' initialisation du compteur de taches
LeMessage =3D "" ' initialisation du message qui re=E7oit les
taches urgentes
' Tant que la s=E9lection n'est pas vide
Do While Not IsEmpty(Selection)
' calcul pour la cellule de droite de l'=E9cart entre la date
limite
' et la date du jour et comparaison avec la limite en C2
(cellule nomm=E9e D=E9lai)
' si l'=E9ch=E9ance est proche
If (Selection.Offset(0, 1) - Date) < Range("D=E9lai") Then
NbTaches =3D 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=E9cimal
' car le vbVrLf n'est pas interpr=E9t=E9 =E0 l'ext=E9rieur de
VB
LeMessage =3D LeMessage & NbTaches & " : " & Selection.Value
& "%0A"
End If
Selection.Offset(1, 0).Select ' S=E9lection de la cellule
suivante
Loop
' si on a d=E9tect=E9 des taches proches de l'=E9xch=E9ance,
' on demande confirmation de l'envoi du mail
If NbTaches > 0 Then
'MsgBox avec boutons Oui et Non. La fonction renvoie la
r=E9ponse
' de l'utilisateur
R=E9ponse =3D MsgBox("Confirmer l'envoi d'un message pour " &
NbTaches & " taches", vbYesNo + vbQuestion, "CONFIRMATION SVP")
If R=E9ponse =3D vbYes Then
LObjet =3D "Liste des " & NbTaches & " t=E2ches urgentes =E0
effectuer"
' appel de la proc=E9dure d'envoi du mail
' ici le 4=E8me argument (la pi=E8ce jointe)
' n'est pas renseign=E9
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 (pi=E8ce jointe) est optionnel. S'il est
fourni,
' c'est le chemin complet du fichier =E0 joindre qui doit =EAtre fourni
' pour joindre plusieurs pi=E8ces,
' il faudrait que PJ soit un tableau et qu'il soit trait=E9 + bas par
une boucle...
Dim HyperLien As String ' Re=E7oit les =E9l=E9ments de l'hyperlien
' compos=E9s =E0 partir des arguments fournis =E0
la proc=E9dure
Dim i As Integer ' un compteur
Dim Client As Integer
' la syntaxe de base du mailto est la suivante :
' mailto:dest@domaine.bof?Subject=3DLe sujet du message&Body=3DLe corps du
message
' je ne prends pas en compte les copies, copies cach=E9es ou autres
confirmation de lecture
' il faudrait utiliser d'autre arguments de mailto...

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

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

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

Client =3D 1 ' 1=3DOutlook Express
' 2=3DMozilla Thunderbird
' 3=3DOffice Outlook

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

' Le traitement de la pi=E8ce jointe ne s'ex=E9cute que si la proc=E9dure
=E0 re=E7u qqchose
' dans l'argument PJ (Optional<=3D>Facultatif)

If PJ <> "" Then
For i =3D 1 To TouchesPJ(0) ' dans TouchesPJ(0) on a stock=E9 le
nombre de touches
' =E0 envoyer au programme pour joindre
une pi=E8ce
SendKeys TouchesPJ(i), True ' Envoie les touches d'ajout
d'1 pi=E8ce jointe
Attendre 1 ' temporise (=E0 r=E8gler
=E9ventuellement)
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 =3D 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=E8re suivante
Action|date|acteurs

Si la la date est superieur =E0 celle du jour, l'action =E0 terminer est
envoy=E9 =E0 l'acteur...
Par contre je voudrais ne pas rentrer les adresses mail mais juste les
pr=E9noms mais qui serait eux reli=E9s =E0 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+

2 réponses

Avatar
lolo
Bonjour à tous

Personne pour me donner un petit coup de pouce ?

Merci

A+
Avatar
Michel
Salut,

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

@+

Michel.


"lolo" a écrit dans le message de news:

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+