Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/07/2006, 14h22   #1
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Par défaut Envoi de mail

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 (laurent@yahoo.fr) 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.

Pouvez vous m'aider

Je vous remercie beaucoup

A+
Fichiers attachés
Type de fichier : zip Envoi mail depuis Excel.zip (21,0 Ko, 20 affichages)
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 16h56   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Mets le code qui te sert, pour éviter de tout revoir
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 18h56   #3
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut

je met sert de ce code là

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
' 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 "laurent@yahoo.fr", LObjet, LeMessage
        End If
    End If
End Sub
puis celui ci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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:dest@domaine.bof?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
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é à 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

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 19h03   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ton idée de tableau n'est pas la meilleure. Cela voudrait dire que ta liste d'adresses serait immuable et tu serais contraint de la modifier dans le code. Si c'est pour une raison de confidentialité, tu peux masquer la feuille qui contient les adresses et la protéger.
Maintenant, pour les données "Action|date|acteurs", comment comptes-tu les saisir ? Directement dans la feuille de calcul ? Par l'intermédiaire d'une grille de saisie ?
La grille pouvant être celle d'Excel ou fabriquée en VBA, quel est ton choix le cas échéant ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 19h21   #5
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut

En fait les actions serait remplis dans la feuille de calcul. En fait j'ouvre ma feuille le matin si des actions sont en retard le mail est envoyé et après je rentre d'autres actions.

Merci beaucoup de ton aide

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 12h44   #6
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Bonjour à tous

Personne ne peut me donner un pett coup de pouce ?

Merci beaucoup

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 13h17   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
ben prévoi ... une feuille excel .. qui te permettre de faire la correspondance prénom, adresse mail..., ensuite une recherche par par VLookUp par exemple te permet de retrouver la correspondance..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 15h53   #8
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut

Ok merci pour ton aide mais vu que j'y connais rien en VB pourrais tu m'aider un peu plus car là je bloque total...

Merci beaucoup de ton aide

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 15h58   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
bon en gros tu est ou ... ton code fonctionne-t'il (mis à part qu'il envoi tous à
"laurent@yahoo.fr") ... ? dans qu'elle colonne est le nom du destinataire.. as tu préparer une feuille de correspondance prénom/addresse mail..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 16h49   #10
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut


En fait j'ai preparé une feuille de correspondance prénom adresse mail.
Cette feuille s'appelle mail j'ai en A1le prénom et en B1 l'adresse mail qui correspond...
Mon code fonctionne car j'ai fais un essai hier et j'ai bien recu les mails sur mon e-mail.
En fait le nom du destinataire dans la feuille FeuilleTest commence dans la colonne D5

Merci de votre aide

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 17h12   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
il va falloir voir comment tu gére les différents utilisateurs..déjà quel est l'ordre d'idée du nombre de destinataires possibles...?

tu peu par exemple parcourir la liste des destinataires possibles.. et ensuite pour chacun d'eux vérifier par ton code si l'envoi d'une liste de tâches est nécessaire.. ce qui fait un appel à ta fonction actuellement dans le worbook_open.. par utilisateur.., commence alors par crée cette procédure...
Code :
1
2
sub TestEtEnvoiTacheA ( stPrenom as string , stAdress string )
' But vérifie la liste de tâches de stPrenom et si il y as tâches envoi message à stAdress...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 17h35   #12
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Re-salut

En fait l'envoi va se faire pour environ 10 personnes...
Par contre je comprend pas tout dans la procédure à créer, je suis vraiment débutant et c'est pas évident pour moi tte ces lignes de codes...

A+

Merci de m'aider en tout cas
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 20h58   #13
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut

j'ai aussi cette methode pour l'envoi de mail mais jene comprend pas car elle ne fonctionne pas....

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Workbook_Open()
 
Dim dest$, sujet$, texte$
 
With Sheets('Feuil1')
 
For Each Cellule In .Range('C1:C' & Range('C65535').End(xlUp).Row)
    If IsDate(Cellule) Then
        If Cellule < Date Then
            dest = .Cells(Cellule.Row, 1)
            sujet = 'Message envoyé par La Compagnie'
            texte = .Cells(Cellule.Row, 4)
            Shell 'C:\\Program Files\\Outlook Express\\msimn.exe ' & _
            '/mailurl:mailto:' & dest & _
            '?subject=' & sujet & _
            '&Body=' & texte
            .Cells(Cellule.Row, 3) = Date 'Date du jour dans cellule
        End If
    End If
Next Cellule
 
End With
 
End Sub
A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 21h07   #14
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
je croyais que pour l'envoi de mail tu avais déjà ta méthode... il y en as d'autre dans la FAQ.... cela dépends aussi de la façon don tu est connecté à internet ( directement à travers un proxy..) du client de mail que t'utilise.. ben des infos qui nous manque...

mais bon .. as tu essayer de modifier ta procedure Worbook_open afin d'en faire une procédure paramétrable...?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 08h49   #15
Nouveau Membre du Club
 
Avatar de lolo_bob2
 
Inscription : janvier 2005
Messages : 195
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : janvier 2005
Messages : 195
Points : 28
Points : 28
Salut

Comme tu peux le voir j'essaye de trouver pas mal d'infos vu que je n'y connais rien...
Pour la procedure Worbook_open je ne l'ai pas modifiée car je ne sais pas trop comment m'y prendre vu que je n'y connais rien
Pour les mails oui j'ai effectivement ma méthode qui fonctionne...maintenant c'est juste qu'il faut que j'associe les noms et les adresses et que je puisse envoyer un mail si il y a du retard

Merci de ton aide

A+
lolo_bob2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h36.


 
 
 
 
Partenaires

Hébergement Web