Envoyer un mail suite à un seuil de stock
Bonjour à tous,
j'ai consulté beaucoup de post sur le sujet mais j'ai du mal à le mettre en pratique.
Voici ma demande : A partir du fichier en PJ, lorsque un des stocks de la partie concernant le papier est en dessous de 10 un mail m'envoie automatiquement (faudouy@gmail.com, moi) pour me signaler qu’une commande papier est à prévoir.
Et pour la partie enveloppe il faudrait que le mail s’envoie lorsque les stocks sont inférieurs à 5.
Pour le moment j’ai seulement ajouté la référence VBA : MicrosoftOutlookX,0 Obect Library.
Merci d'avance pour votre collaboration.
Bonjour Faudouy
Voici ton fichier avec le code qui va bien pour la 1ère feuille
@+
Re,
Le message, est un message de sécurité sur les données personnelles
Dans les Options d'Excel -> Centre de gestion -> Options de confidentialité -> décochez : Supprimer les informations personnelles des propriétés du fichier lors de l'enregistrement.
Désolé, je ne sais pas pourquoi, je suis parti sur un message global à l'ouverture du fichier, je trouvais ça plus pratique
Je vais modifier le fichier en conséquence, le voici.
Il restera à mettre en forme le message
Edit : désolé pour le mail que vous avez dû recevoir
@+
Re,
merci.
en testant, si je suis supérieur au stock de base, un message est qd même envoyé
J'ai testé en modifiant le stock initial en A4 et mis en C16, 1, du coup je suis toujours au dessus de 10 (stock mini) et outlook m'envoie qd meme un mail... Il faut qu'il envoie l'alerte uniquement si c'est inférieur au sens strict à 9.
Re,
Désolé, je vais trop vite... Sinon j'ai bien compris la demande
C'est que je ne teste pas si le message est vide ou non, voici le code correcte
Sub VerifStock(Sht As Worksheet, Col As Long)
Dim Msg As String
' Vérifier quel stock
Select Case True
' Vérifier le stock de papier
Case Col < Sht.Range("P5").Column
' Si le stock est inférieur à 10
If Sht.Cells(5, Col) < 10 Then
' Sil Message ne contient rien
If Msg = "" Then
Msg = "Attention, en papier il va manquer :<br>"
End If
' Si colonne C ou I
If Col = 3 Or Col = 9 Then
Msg = Msg & Sht.Cells(1, Col) & " - Stock : " & Sht.Cells(5, Col) & "<br>"
Else
If Col <= Sht.Range("I1").Column Then
Msg = Msg & Sht.Range("D1") & "/" & Sht.Cells(2, Col) & " - Stock : " & Sht.Cells(5, Col) & "<br>"
Else
Msg = Msg & Sht.Range("J1") & "/" & Sht.Cells(2, Col) & " - Stock : " & Sht.Cells(5, Col) & "<br>"
End If
End If
End If
' Vérifier le stock d'enveloppe
Case Col > Sht.Range("O5").Column
' Si le stocke est inéferieur à 5
If Sht.Cells(5, Col) < 5 Then
' Si le message ne contient pas déjà d'enveloppe
If InStr(1, Msg, "Env.") = 0 Then
Msg = Msg & "Attention, en enveloppe il va manquer :<br>"
End If
Msg = Msg & Sht.Cells(1, Col) & " - Stock : " & Sht.Cells(5, Col) & "<br>"
End If
End Select
'
' Envoyer un mail si Msg non vide
If Msg <> "" Then
Dim ObjOut As Object, ObjMail As Object, sTxtBody As String
' En cas d'erreur
On Error Resume Next
' Création d'une instance Outlook pour envoyer un mail
Set ObjOut = CreateObject("Outlook.Application")
Set ObjMail = ObjOut.CreateItem(0)
With ObjMail
.Display
sTxtBody = .HTMLBody
'.To = "faudouy@gmail.com"
.Subject = "ATTENTION ! Stock faible"
.HTMLBody = "F. AUDOY bonjour,<BR><BR>" _
& Msg & "<BR>" & sTxtBody
'.Send
End With
' Effacer les variables objets
Set ObjOut = Nothing: Set ObjMail = Nothing
'
On Error GoTo 0
End If
End Sub
Ceci dit une petite analyse de ta part aurait pu suffire
@+
Merci bcp Bruno, désolé mais je ne suis pas très doué en développement...
merci également pour ton code commenté.
Bonne soirée,