Envoi notification modification tableau Excel

Bonjour,

J'ai besoin d'aide car je n'arrive pas à trouver la réponse à ma question.

J'ai un tableau Excel qui est une main courante. Cette main courante se trouve sur un serveur commun et peut être renseignée par 5 personnes différentes.

J'aimerai pouvoir être informée à chaque fois qu'une de ces personnes renseigne ce tableau. J'aurai aimé dans l'idéal pouvoir être informée via un e-mail que le tableau a été modifié. Je n'ai pas besoin de savoir qui l'a modifié mais j'ai besoin de savoir dès lors qu'une nouvelle information a été saisie.

Je vous remercie par avance.

Bonjour JuliaLUC,

Vous utilisez Outlook comme messagerie ?

A+

Bonjour, c'est vrai que je ne l'ai pas précisé mais oui ! Outlook.

Re,

Dans ce cas, je t'avais préparé le fichier

Un module avec déclaration d'une variable publique et du code dans ThisWorkbook

A+

Je n'ai pas encore pu le regarder mais merci d'avance, je suis sure que c'est ce que je cherche !

J'ai ouvert ton fichier mais je ne comprends pas bien, il n'y a rien, juste une phrase qui dit "Ce classeur est un exemple pour l'envoi de mail en cas de modification". Qu'est-ce que je dois faire avec ça ? Il faut que j'utilise ce fichier Excel que tu m'as envoyé ?

Le fichier dont je parle existe déjà et il recense 5 années d'archives. Je ne peux pas faire de copier/coller de toutes ces archives. Quelle est la démarche que je dois suivre vis-à-vis de ce fichier existant pour qu'un mail me soit envoyé à chaque modif ?

Merci d'avance.

Bonjour Julia

Tu demandes l'envoi d'un mail en cas de modification 😉
Donc fait une modification dans le fichier, n'importe laquelle, tu le fermes et ensuite tu regardes dans tes mails envoyés

Sinon avec on fichier original, tu fais ALT+F11 pour voir le code VBA

Dans un module, tu mets

' Variable public : Flag qui ce mettra à VRAI si modification effectuée
Public FlgModif As Boolean

Et dans ThisWorkbook

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ' Avant de ferme le classeur, on vérifie si modification effectuée
  If FlgModif Then
    Dim OutApp As Object, EMail As Object
      ' Création d'une instance Outlook pour envoyer un mail
  Set OutApp = CreateObject("Outlook.Application")
  Set EMail = OutApp.CreateItem(0)
  With EMail
    .To = "adressedestinataire@domaine.com"
    .Subject = "Modification main courante"
    .Body = "Modification effectuée par " & Environ("suername")
    .Send
  End With
  Set EMail = Nothing: Set OutApp = Nothing
  End If
End Sub

Private Sub Workbook_Open()
  ' On vient d'ouvrir le classeur, le FLAG modification est donc FAUX
  FlgModif = False
End Sub

' Si modification effectuée dans une des feuilles, on passe le FLAG à VRAI
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  FlgModif = True
End Sub

tu modifies, bien entendu "adressedestinataire@domaine.com" par ton adresse mail

Voilà, c'est tout

A+

Bonjour Bruno et merci pour ton retour.

Donc c'est bien ce que j'ai compris, il faut que je copie ton code VBA pour aller le coller dans mon fichier excel ?

Où est-ce que je renseigne mon adresse mail ?

Re,

J'ai modifié mon post précédent avec plus d'explications

Dans le code, tu as une adresse mail, qu'il faut changer

A+

Voici ce qui s'affiche dans mon fichier lorsque je clique sur ALT + F11.

Dans quelle feuille est-ce que je dois copier ton code VBA ?

image

Cela ne fonctionne pas, ça me mets "erreur de compilation valeur non définie" et ensuite ça surligne en jaune la phrase ci-dessous :

image image

Re,

Arf oui quand même

Clic droit sur ton classeur -> Insertion -> Module

image

Tu copies dedans la ligne du module

Ensuite double clic sur "ThisWorkbook" et tu y mets dedans le code donnée en 2ième ou j'ai bine indiqué qu'il fallait le mettre dans "ThisWorkbook"

A+

Ok je te remercie ça fonctionne. Ca peut vous paraitre simple mais quand on est pas du milieu les termes VBA module etc c'est du charabia pour nous.

J'ai juste un message qui s'affiche en permanence et qui dit "attention, certaines parties de votre document peuvent renfermer des informations personnelles qui ne peuvent pas être supprimées par l'inspecteur de document". Ce message s'affiche à chaque fois que je ferme le fichier.

De plus et dernière question, est-ce que je peux mettre deux adresses mail destinataires ? Si oui comment ? Je les distance juste d'un point virgule ?

Re,

Ca peut vous paraitre simple mais quand on est pas du milieu les termes VBA module etc c'est du charabia pour nous.

Effectivement désolé, mais lors de ce genre de demande,
il faut forcément s'attendre à du VBA et des informations sont disponibles ICI et un peut partout

Le message qui s'affiche à l'enregistrement peut être normal, si l'on a activé le mode confidentialité du fichier
Menu Fichier -> Options -> Centre de gestion de la confidentialité

image

Pour le mail, on peut mettre plusieurs destinataires en les séparant par un point-virgule
On peut également mettre quelqu'un en copie avec "Cc"

 With EMail
    .To = "maildestinataire1@domaine.com; maildestinataire2@domaine.com"
    .Cc = "mailcopie@domaine.com"
    .Subject = "Modification main courante"
    .Body = "Modification effectuée par " & Environ("suername")
    .Send
  End With

J'espère être assez clair

A+

Super, merci pour tes réponses et ta réactivité. J'ai pu tout mettre comme je le voulais.

Bonne semaine !

Bruno, je reviens vers toi car je sais que tu vas me trouver la solution.

J'ai un autre tableau dans lequel je recense le nombre d'accrochages de bus par conducteur. Autrement dit j'ai une colonne avec la liste des conducteurs, à côté une colonne avec le nom du conducteur qui a remonté l'accrochage et une troisième colonne avec le nom du conducteur responsable.

Car tous nos chauffeurs doivent faire l'état de la carrosserie du bus tous les jours avant leur prise de service. Et donc le conducteur responsable de l'accrochage n'est pas forcément celui qui remonte l'info. Exemple "A" prend son service aujourd'hui avec le bus 302, il fait le tour de son bus et voit qu'il y a un accrochage qui n'a pas été remonté. Il va le signaler à ses supérieurs, qui vont imputer l'accrochage au conducteur "B" de la vieille car c'était le dernier a avoir conduit le bus.

Je cherche donc une formule qui puisse dire "je veux connaitre le nombre de fois que B remonte en tant que conducteur responsable (3ème colonne) ET conducteur ayant remonté l'information (2ème colonne)" et une autre formule qui puisse dire "je veux connaitre le nombre de fois que B remonte en tant que conducteur responsable (3ème colonne) ET n'ayant pas remonté l'information (2ème colonne)".

La finalité de cette démarche est de sanctionner les conducteurs qui accrochent les véhicules et qui ne se dénoncent pas.

Je te remercie !

Julia,

Comme il s'agit d'un autre sujet, il aurait fallut créer une nouvelle discussion, mais ça ira pour cette fois

Si j'ai tout compris, voici un exemple, je n'ai besoin que de 2 colonnes

Si cela ne convient pas, merci de créer une nouvelle discussion avec ton post ci-dessus STP

A+

C'est exactement ce que je voulais :) Merci !

Re,

On parle bien des posts qui t'on permis de résoudre tes 2 problèmes

Un petit vote +1 en bas à droite peut aussi être très sympas

A+

Bonjour Bruno, j'ai encore un souci !!

J'ai essayé de faire la même manip pour l'envoi de mail sur un autre fichier excel mais cela ne fonctionne pas.

J'ai copié/collé tes codes VBA dans un module et dans le work et quand mes collègues renseignent le fichier je ne reçois rien.

Rechercher des sujets similaires à "envoi notification modification tableau"