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
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
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:
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:
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!
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
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