Envoi E mail lors de la mise à jour d'un fichier partager

Bonjour à tous,

Etant novice dans le monde du VBA je m'adresse à vous pour un coup de main.

J'ai un fichier partager qui est réguliérement mis à jour par plusieur personne. Afin d'évider d'ouvrir le fichier 10 fois par jour pour le vérifier , j'aimerais qu'une fois modifié un E-mail soit envoyé au personne qui n'ont pas modifié le fichier.

exemple :

"A" mets à jour le fichier un E-mail est envoyer à "B", "C" ... mais pas à A

"B" mets à jour le fichier un E-Mail est envoyé à "A","C".. mais pas à B et ainsi de suite.

A l'heure actuelle j'ai cette macro qui fonctionne bien mais qui ne colle pas vraiment avec mon vrai besion

--------------------------------------------------------------------------------------------

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim ol As Object, monmail As Object

DisplayAlerts = False

Set ol = CreateObject("outlook.application")

Set monmail = ol.CreateItem(olMailItem)

monmail.To = "mon adresse@.com" 'ici tu renseignes ton adresse mail

monmail.Subject = "Modifs" 'ici correspond a l'objet du mail

monmail.Body = "Modifications apportees dans le fichier attendu recette" 'ici correspond au contenu du mail

monmail.Send

Set ol = Nothing

End Sub

-----------------------------------------------------------------------------------------------

Si quelqu'un peut m'aider (ce que je ne doute absolument pas )

Je vous en remercie par avance

Cordialement

Lasource

Bonsoir Lasource06

Comme dans tout développement, il faut penser à tout ce qui entoure ton envoi de mail

  • comment reconnaître l'utilisateur
  • comment savoir s'il à saisi ou pas des données
Etc..

A+

Bonjour,

C'est quoi le but exact ?

Parce que si tout simplement ils enregistrent le fichier ouvert, il se mettra à jour et ils verront toutes les modifications enregistrées.

C'est une bonne habitude à prendre avant de faire des modifs.

eric

Bonjour,

" eriiic"

Concrétement le but est :

"A" fait des modifis dans le fichier et le referme ,"B" et" C" qui n'ont pas le fichier d'ouvert doivent recevoir une information par mail que ce dit fichier viens d'être modifié pour qu'ils puissent prendre en compte la modif. apporté.

BrunoM45

je connais l'environnement qui entour le mail mais je ne sais pas comment "l'écrit en macro c'est la dessus que j'ai besion d'aide, car pour te répondre

  • reconnu par son nom
  • plage de donnée du tableau modifié

Cordialement

Lasource

Bonjour à Tous..

Quelqu'un pourrait-il m'aider sur le sujet ?

Merci beaucoup

Lasource

Bonjour,

une possibilité pour les mails avec une feuille de paramétrage où l'utilisateur coche les destinataires (à tester).

Tu pourrais tester avant si des modifs ont vraiment eu lieu :

If Not ThisWorkbook.Saved Then

Et pour le suivi des modifs une petite recherche devrait te fournir plusieurs réponses.

Ca passera par :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

qui est déclenché à chaque saisie. Plus qu'à mémoriser feuilles et plages que tu veux surveiller

eric

58classeur1.xlsm (17.68 Ko)

Bonjour Eriic,

Je vais essayer tes infos mais étant novice dans le VBA pas sur que cela ce fasse rapidement

Merci

Lasource

Bonjour,

tu as vu le fichier que je t'ai joint ? J'ai complété avec la partie choix des destinataires dans le module1.

Sinon, comme ton fichier est partagé, ils peuvent 'Afficher les modifications'.

En cochant 'Lister les modifications dans une autre feuille' tu as l'historique complet (sur 30j avec les réglages par défaut) : qui, quoi, quand, etc

eric

Bonjour Eriic

Oui j'ai bien vu ton fichier et j'ai fais des essais avec. Le truc en faite c'est que j'aurais aimé ne pas avoir d'action à faire pour la selection des mails.

J'ai vu des info sur l'utilisation de "username" et des chose comme ca mais j'ai du mal à les mettre en application. Le VBA c'est pas ce que je maitrise le mieux pour l'instant du coup c'est un peu compliqué.

Si tu as d'autre info je suis preneuse (j'essaie de me former au VBA )

Merci

Lasource

Bonjour Eriic, Lasource06

Tu peux envoyer le mail aux bonnes personnes en utilisant la fonction

Environ("username")

Et en enregistrant dans la feuille Params le nom de connexion de chaque personne

Voir fichier joint

A+

Salut BrunoM45

Alors voilà la macro fonctionne trés bien mais il y a 2 points qui ne colle pas vraiment

1) Elle fonctionne uniquement si je l'"exécute" et non pas à la modification du fichier sur "1er onglet " --> peut-on intégrer la plage de donne à vérifier pour la modification

2) La personne qui modif le fichier reçois aussi le mail --> peut-on identifier celui qui modifie le fichier et empecher l'envoi de l'E-mail a celui qui a modifié le fichier (qui par défaut du coup sais que le fichier est modifié )

Je joint un fichier dans lequel se trouve la macro

Merci

Lasource

25testvba-maj.xlsm (81.80 Ko)

Re,

Comme demandé sur le 1er post, le mail est envoyé a la fermeture du classeur si modification effectuée

Code dans ThisWorkbook

Si le nom est bien saisi en colonne A de la feuille param tu ne doit pas recevoir de mail

Dans la fenêtre d'exécution de VBA project, saisi : debug.print Environ("Username")

Et entrée pour voir le nom utlisateur a mettre dans la feuille

A+

Re,BrunoM45

Ok super merci pour toutes ces infos je vais faire mes essais et passerais le post en résolu si tous et OK

Merci

Lasource

Re, BrunoM45

Alors concernant l'envoie de mail c'est ok le modificateur ne recois plus les mails = OK nickel :d

Par contre je confirme que la macro ne exécute pas ni à l'enregistrement ni à la fermeture du fichier ???

- je modifi le fichier je l'enregistre et je le ferme --> pas de mail

- Je modif le fichier je l'enregistre j'execute la macro --> mail au destinataire

Une petite idée sur le pourquoi ??

Lasource

Re,

Lasource06 a écrit :

Par contre je confirme que la macro ne exécute pas ni à l'enregistrement ni à la fermeture du fichier ???

- je modifi le fichier je l'enregistre et je le ferme --> pas de mail

- Je modif le fichier je l'enregistre j'execute la macro --> mail au destinataire

Une petite idée sur le pourquoi ??

As-tu été voir dans les options de sécurité d'Excel -> Macros

screenshot399

A+

Re,

Par défaut je suis obligé d'avoir les macros activées car d'autre fichier que j'utilise sont réalisés avec des macro.

Pas de pb d'options Excel.

Lasource06

Bonjour,

Oui, si tu enregistres avant ThisWorkbook.Saved devient True.

Une proposition de modification pour éviter l'envoi de mail si juste ouverture/fermeture (non testé) :

Option Explicit

Dim b_modif As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If b_modif Then
    Call EnvoiMail
  End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    b_modif = True
End Sub

eric

Re,

J'ai testé sur le fichier que tu avais mis en ligne, j'ai fait une modification sur l'onglet [Test]

J'ai ensuite cliqué sur la croix de fermeture du fichier et j'obtiens bien un message d'erreur

Email.Send

Sachant que les adresses mail ne sont pas bonnes

Donc je ne comprends pas que chez toi ça ne fonctionne pas

Edit : oups bonjour eriiic très bonne idée avec le flag

Re,

Merci à tous les 2 pour vos réponse

Le fichier fonctionne correctement maintenant avec juste une petite modif dans ThisWorkbook :

"Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Not ThisWorkbook.Saved Then
    Call EnvoiMail
  End If
End Sub"

c'est top pour mon boulot encore Merci ...

Heu.... si je peu encore un peu abuser de vos connaissance

Est-il possible de faire en sorte qu'en fonction du modificateur pas toutes les personnes ne recoivent le mail ??

je m'explique

A modifi le fichier, mail envoyé a B et C = ok ca sa fonction nickel

B modif le fichier mail envoyé A et C = ok mais j'aimerais modifié cette partie = B modifi le fichier mail envoyé uniquement à A

Merci d'avance

Lasource

Rechercher des sujets similaires à "envoi mail lors mise jour fichier partager"