Macro avec mail automatique

Macro avec mail automatique - VB/VBA/VBS - Programmation

Marsh Posté le 09-04-2014 à 11:31:23    

Bonjour à tous,
 
J'aimerais pouvoir faire une macro sous Excel qui enverrai un email automatiquement dès qu'une cellule atteint une certaine valeur.
 
Je m'explique : j'ai un fichier Excel qui gère les stocks de fourniture . J'aimerais que dès que la cellule avec le stock restant devient infèrieur à 2 par exemple, Excel envoi un mail automatiquement.
Je suis débutante en matière de macro et je ne m'en sort pas.
 
Merci d'avance pour d'éventuelles pistes.

Reply

Marsh Posté le 09-04-2014 à 11:31:23   

Reply

Marsh Posté le 09-04-2014 à 12:56:04    

J'avais fait une macro Excel qui envoyait un mail via LotusNotes en passant par le composant OLE.
Si tu es sûr de l'environnement d'exécution et que tu sais quelle messagerie est dispo (Outlook, Thunderbird...) sur le poste où sera exécutée la macro, tu peux tenter ça.
 
Autre solution que j'avais fait aussi. Tu héberges un script php (ou Python, asp, Perl...) sur un serveur web accessible depuis les postes clients où sera exécutée la macro et tu fais une requête sur l'url du script (de type GET donc) et c'est le script qui se chargera d'envoyer le mail ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-04-2014 à 12:58:47    

Pour LotusNote :

Code :
  1. 'Plus d'envoi de mail car plus de Lotus Notes : maintenant, le fichier est monitoré par CJA
  2.            'On envoie une notification pour dire que le fichier de référence a été modifié
  3.            'ouvre une session mail Lotus Notes et configure le mail à envoyer
  4.            'Set oSession = CreateObject("Notes.NotesSession" )
  5.            'Set oDB = oSession.GetDatabase("", "" )
  6.            'Call oDB.OpenMail
  7.            'Set oDoc = oDB.CreateDocument
  8.            'Call oDoc.ReplaceItemValue("SendTo", "test@toto.fr" ) 'regler ici le nom du destinataire
  9.            'Call oDoc.ReplaceItemValue("Subject", "Fichier modifié!" )
  10.            'Le corps du mail
  11.            'Set oRichTextItem = oDoc.CreateRichTextItem("Body" )
  12.            'sMsg = "Le fichier a été modifié. Il faut le publier." & vbCrLf & vbCrLf
  13.            'Call oRichTextItem.AppendText(sMsg)
  14.            'envoi
  15.            'oDoc.SaveMessageOnSend = True
  16.            'Call oDoc.Send(False)
  17.            'Set oSession = Nothing


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-04-2014 à 13:02:45    

Via un script php :

Code :
  1. Set oHttp = CreateObject("MSXML2.XMLHTTP" )
  2. sUser = Environ("Username" )
  3. sURL = "http://serveur/MailMacroExcel/Sendmail.php?username=" & sUser
  4.    
  5. oHttp.Open "GET", sURL, False
  6. oHttp.Send
  7. sHTML = oHttp.responseText
  8.    
  9. Set oHttp = Nothing


 
Et dans le fichier php, tu fais un truc du genre :

Code :
  1. $Username = '';
  2.  if ((isset($_GET['username'])) && (!empty($_GET['username'])))
  3.  {
  4.      // Name of the user who has modified the file
  5.      $Username = strip_tags(trim($_GET['username']));
  6.  }
  7.  
  8.  // Header of the e-mail
  9.  $To = 'test@toto.fr';
  10.  
  11.  $Subject = "MAJ du fichier!";
  12.  $Splitter = "-----=".md5(uniqid(rand()));
  13.  
  14.  $Header = "MIME-Version: 1.0\r\n";
  15.  $Header .= "Content-Type: multipart/mixed; boundary=\"$Splitter\"\r\n";
  16.  $Header .= "From: serveur@toto.fr\r\n";
  17.  $Header .= "\r\n";
  18.  
  19.  // Message texte
  20.  $msg .= "--$Splitter\r\n";
  21.  $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
  22.  $msg .= "Content-Transfer-Encoding:8bit\r\n";
  23.  $msg .= "\r\n";
  24.  
  25.  $BodyMsg = "<html>\r\n<body>\r\n";
  26.  $BodyMsg .= "Le fichier a été modifié.<br />\r\n";
  27.  $BodyMsg .= "<br />\r\nIl faut le publier.<br />\r\n<br />\r\n";
  28.  $BodyMsg .= "Le fichier a été modifié par : <em>$Username</em>.\r\n";
  29.  $BodyMsg .= "</body>\r\n</html>\r\n";
  30.  
  31.  $msg .= "$BodyMsg\r\n";
  32.  
  33.  // End header
  34.  $msg .= "--$Splitter--\r\n";
  35.  
  36.  mail($To, $Subject, $msg, $Header);


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed