Mail automatique avec intégration des données changées.

Mykimix

XLDnaute Nouveau
Bonjour,

Je tiens à jour un fichier en partage avec plusieurs interlocuteur de ma societé.

Pour eviter de faire un mail avec tous les bons interlocuteurs à chaque mise a jour, j ai donc fait des clickbouton
en fonction des différents services impactés par les mises à jour ce qui genère un mail auto depuis ma boite mail.

Le problème est que le fichier est le plus en plus gros et il est de plus en plus difficile de voir les mouvements.

Est-il possible d'intégrer dans le coprs du mail , les lignes qui ont changées ?

Si oui, comment ? Avez vous un exemple que je puisse transferer sur mon fichier ?

J'utilise Outlook 2010

Cordialement Mykimix.
 

bérylion

XLDnaute Occasionnel
Re : Mail automatique avec intégration des données changées.

Bonjour,

Je fais une relance sur la sujet. Quelqu'un peut-il m'aider svp ?

Cordialement Mykimix

salut

bin yapa foule hein...

peut-être que le problème est pas forcément bien exposé.

bon, une vague idée :

on valide que les dernières modifs ont été notifiées par un marqueur "interne"
on enregistre toutes les adresses des cellules modifiées dans un fichier externe (le meme rep car partage)
on récupère les nouvelles modifs lors de l'envoi du mimil pour les intégrer au corps de msg (je te laisse faire)
on ''marque'' l'envoi des modifs et on recommence...

ça pourrait donner ça (dans le module ThisWorkbook de ton classeur):

VB:
Dim Y As Boolean

Private Sub Workbook_Open()
Y = False: ValidateName
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Open ThisWorkbook.Path & "\modifs.txt" For Append Shared As 1
    If Not Y Then Print #1, ThisWorkbook.Names("LastSentTime").Value: Y = True
    Print #1, "Cellule " & Target.Address & " sur feuille " & Sh.Name & " modifiée par " & Environ("username")
Close #1
End Sub

Private Function ValidateName()
For i% = 1 To ThisWorkbook.Names.Count
    If ThisWorkbook.Names(i).Name = "LastSentTime" Then Exit Function
Next
ThisWorkbook.Names.Add "LastSentTime", CDbl(Now), False
End Function

Function OlMailtitemBody$()
Open ThisWorkbook.Path & "\modifs.txt" For Input As 1
    Do While Not EOF(1)
        Input #1, TextLine
        If LastTextLine Then OlMailtitemBody = OlMailtitemBody & TextLine & vbCrLf
        If TextLine = ThisWorkbook.Names("LastSentTime").Value Then LastTextLine = True
    Loop
Close 1
ThisWorkbook.Names("LastSentTime").Value = CDbl(Now): Y = False
End Function

Pour récupérer les modifs effectuées lors de l'envoi du mail, tu appelles la fonction OlMailtitemBody qui renvoi en string la liste des cells modifiées depuis le dernier envoi.

Enjoy...!

;)

[EDIT] euh, ça va fonctionner également si tu fais des modifs sans enregister ; je creuserai pour corriger ça au besoin.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
350
Réponses
6
Affichages
377
Réponses
17
Affichages
1 K
Réponses
10
Affichages
386

Statistiques des forums

Discussions
312 747
Messages
2 091 602
Membres
105 007
dernier inscrit
adla