Envoyer un mail quand l'information inscrite dans la cellule évolue

Bonjour à tous,

J'aimerais utiliser une macro ou un code VBA me permettant d'envoyer un mail individuel lorsque l'information indiquée dans une cellule évolue sur à la mise à jour des données.

Je m'explique : J'ai un fichier en ligne avec 3 informations : N° de lot, statut de l'arbitrage ( Ouvert ou arbitré) et une adresse mail de la personne qui a saisie le numéro de lot. Les 3 informations sont sur la même ligne. Chaque ligne est différente et quand le fichier ce met à jour le statut peut passer de O (Ouvert) à A (Arbitré), j'aimerais que la personne qui a saisie le numéro reçoive un mail de façon automatique quand sa ligne passe à A, pensez vous que c'est possible ?

Je suis vraiment bloquée, merci par avance pour votre aide

Très bonne journée à tous

Bonjour marie.vdr et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum

Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)

Concernant votre demande, il y a une phrase qui m'interpelle "quand le fichier ce met à jour"
Donc ce n'est pas un utilisateur qui met le fichier à jour, c'est une requête !?

Merci de votre participation

Cordialement

Bonjour,

Je suis également interpellé par la méthode de mise à jour du fichier, comment les données sont elles mises à jour?

Sinon en principe oui c'est possible d'envoyer un mail automatiquement à quelqu'un via VBA (enfin je connais juste la solution avec Outlook, je n'ai pas d'expérience avec les autres systèmes de messagerie), mais il va falloir bien comprendre le contexte sinon la solution risque d'être inadéquate, se demander d'où vient le changement dans les données est une première étape.

Bonjour,

Merci pour votre réponse,

je viens d'aller me présenter,

Exactement, le fichier excel sera en ligne et alimenter par une base de données elle aussi en ligne sur un Sharepoint , je viendrais quotidiennement la mettre à jour et j'aimerais que quand le statut passe de "O" à "A", alors cela envoie un mail automatiquement à l'adresse mail associée

Exemple dans la capture d'écran j'aimerais que lorsque la statut passe à A un mail soit envoyer à "exemple.deux@outlook.com

image

Merci par avance

Je ne suis pas pro en matière de requêtes, mais une idée me vient en tête: stocker le résultat de la requête précédente en archive avant de mettre à jour les données. Ainsi il est possible de regarder par formule ou macro les statuts qui ont changé entre l'archive et le résultat de la requête.

Après on peut par exemple dresser par adresse mail un tableau des N° de reversement dont le statut est passé à A, et l'envoyer.

Je propose cette solution car je ne sais pas si c'est possible de capter le changement de statut au moment de la mise à jour de la requête, si c'est possible, alors il n'y a pas besoin de faire une archive.

Je ne sais pas si mon idée est claire ou intéressante mais je propose

L'idée est claire mais je me demande si cela est viable puisque il y a plus de 75000 lignes et que d'autres s'ajoutent chaque jour ...

Mon début de VBA ressemble à ça

image image

Mais cela envoie un mail toujours à la première adresse et sans objet

Re,

@marie.vdr, si le fichier est sur un SharePoint, il serait mieux d'utiliser Power Apps

A+

Je ne suis pas sûr non plus que ce soit viable avec 75 000 lignes, même si je ne suis pas sûr que ça ferait peur à une macro VBA...

Concernant le code je peux aider:

1. Astuce importante, il est possible d'ajouter la référence Outlook au projet VBA sur lequel tu travailles, je m'explique:

image

Ici tu peux accéder aux références de ton projet, si tu cliques sur "Références" tu vas voir cette fenêtre s'afficher:

image

C'est ce qui te permet d'avoir ce que l'on appelle des bibliothèques, elles contiennent plein de choses utiles, des fonctions, des variables, des objets... Il en existe une pour Outlook!

image

Si tu défiles dans la liste des références pour cocher "Microsoft Outlook 16.0 Object Library", tu appuies ensuite sur OK, et dans l'explorateur d'objet tu verras une nouvelle bibliothèque qui s'appelle "Outlook"

Tu peux ainsi travailler plus facilement avec les objects Outlook comme les MailItem et autres, ils seront même reconnus par l'éditeur et tu pourras accéder à leurs fonctions, propriétés etc plus facilement.

2. Je pense que tu as fait une erreur sur Range("2" & ligne), je connais deux solutions pour utiliser une plage de cellules, Range et Cells, Range attend quelque chose comme "A2", Cells attend une ligne et une colonne en nombre, comme Cells(2,1). Il faut donc soit écrire:

Range("B" & ligne), soit Cells(ligne,2)

Sinon l'idée est là, bien que pour le moment on ne regarde pas si on est passé de "O" à "A" mais uniquement si on a "A" en colonne "B".

J'espère que ce premier message t'aidera.

PS: Je ne connais pas Power Apps, c'est peut-être mieux

Re,

Malheureusement je n'ai pas la possibilité d'utiliser Power Apps, j'imagine qu'il doit exister des solutions bien plus simples que celle que j'essaye de trouver !

Re,

j'imagine qu'il doit exister des solutions bien plus simples que celle que j'essaye de trouver !

Dès qu'on parle de cloud et de VBA, rien n'est jamais simple

Si ton fichier est sur le SharePoint mais pas en local, tu peux faire une requête dans un fichier local pour récupérer les données

Dans ce fichier local, tu peux faire ton code pour envoyer des mails et archiver les lignes envoyées

Mais rien de simple

A+

Ausecour,

Pour les références je viens de le faire, merci !

Pour Range j'ai re modifier, mais l'objet n'apparaît toujours pas et cela envoie toujours le mail à la première adresse mail

image image

Re,

@Marie.vdr, conformément à la charte de ce forum, merci de partager le code format texte mis entre balises avec le bouton

image

Le mieux serait de mettre le fichier exemple avec le code sur le forum

A+

Ausecour,

Pour les références je viens de le faire, merci !

Pour Range j'ai re modifier, mais l'objet n'apparaît toujours pas et cela envoie toujours le mail à la première adresse mail

image image

De ce que je vois, c'est normal que ça envoie toujours le mail à la même personne, la propriété .To est "C2", il faut remplacer par:

.To = Range("C" & ligne)

si tu es toujours dans une boucle ligne. Attention d'ailleurs, tu as écris .To = Range = ("C2"), tu voulais sûrement écrire .To = Range("C2")

Si tu veux afficher le mail utilise .Display ici:

With oMailItem
    .Diplay
End With

Le fichier exemple serait en effet un plus.

PS: je viens de voir que tu as Destinataire as String dans la déclaration de la procédure, il faudrait mettre ça à la place de la cellule.

Donc

.To = Destinataire

Je viens de revoir ton post et je pense qu'il faudrait qu'on échange plus en détail sur ce que tu as déjà écris, car j'ai l'impression que ce n'est pas très clair pour toi, c'est normal comme tu débutes en VBA

Rechercher des sujets similaires à "envoyer mail quand information inscrite evolue"