XL 2016 Enoyer un email automatique par rapport a un stock

Flo26

XLDnaute Nouveau
Bonjour,

Mon fichier de gestion de stock fonctionne bien grasse à vous.
il manque cependant d'une fonction indispensable, un rappel par mail des stocks bas.

Je voudrais que lorsque la colonne M affiche le mot "FAUX" un email soit envoyé qu'une fois afin de prévenir du stock bas (dans le mail quantité de la colonne I avec le code barre de la colonne A) .
J'ai une ligne de code VBA pour cela, malheureusement rien ne se passe.
J'ai encore une fois besoin de votre aide pour me sortir de se problème.

dans VBA, jai activé "microsft office 16.0 object library.

Un grand merci d'avance.
 

Fichiers joints

Flo26

XLDnaute Nouveau
Sub mail_auto_fin_procédure()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim L As Long

With Worksheets("feuil1") 'adaptez le nom de feuille
derlig = .Range("M" & Rows.Count).End(xlUp).Row
For L = 1 To derlig
strbody = ""
If .Range("M" & L) = "FAUX" And .Range("D" & L) = Date Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = .Range("A" & L) & " et " & .Range("I" & L) & " sont disponibles"
'On Error Resume Next
With OutMail
.To = "*****@****.com"
.CC = ""
.BCC = ""
.Subject = "A vérifier"
.Body = strbody
.Display 'visu @MAIL
'.Send ' pour l'envoi du @MAIL
End With
.Range("M" & L) = "FAUX" & " Ok" 'modification pour eviter x envoi
On Error GoTo 0
End If
Set OutMail = Nothing
Set OutApp = Nothing
Next L
End With
End Sub
 

danielco

XLDnaute Impliqué
Dans le module "ThisWorkbook", mets :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Mail_auto_fin_procédure
End Sub
Daniel
 

Flo26

XLDnaute Nouveau
Merci Daniel de tas réponse mais je n'est toujour pas email envoyer ?

Est ce que j'ai bien fais se que tu voulais ?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim derlig As Variant

Dim L As Long

With Worksheets("feuil1") 'adaptez le nom de feuille
derlig = .Range("M" & Rows.Count).End(xlUp).Row
For L = 1 To derlig
strbody = ""
If .Range("M" & L) = "FAUX" And .Range("D" & L) = Date Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = .Range("A" & L) & " et " & .Range("I" & L) & " sont disponibles"
'On Error Resume Next
With OutMail
.To = "*****@****.com"
.CC = ""
.BCC = ""
.Subject = "A vérifier"
.Body = strbody
.Display 'visu @MAIL
'.Send ' pour l'envoi du @MAIL
End With
.Range("M" & L) = "FAUX" & " Ok" 'modification pour eviter x envoi
On Error GoTo 0
End If
Set OutMail = Nothing
Set OutApp = Nothing
Next L
End With
End Sub

 

danielco

XLDnaute Impliqué
Oui. Mais pour déclencher un mail, il faut que la colonne D soit égale à la date d'aujourd'hui. Or il n'y a pas de date en colonne D ?

Daniel
 

Flo26

XLDnaute Nouveau
Effectivement, bien-vue Daniel. j'ai donc supprimer cette fonction.
Mais toujours pas de mail envoyé.
Je précise je suis novice en VBA et j'ai récupéré cette macro en essayant de l'adapté à mon fichier de stock.
Une chose que je ne comprend pas c'est la partie Dim L as long. quelle est la fonction du L ?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim L As Long
Dim derlig As Variant


With Worksheets("feuil1") 'adaptez le nom de feuille
derlig = .Range("M" & Rows.Count).End(xlUp).Row
For L = 1 To derlig
strbody = ""
If .Range("M" & L) = "FAUX" Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = .Range("A" & L) & " et " & .Range("I" & L) & " sont disponibles"
'On Error Resume Next
With OutMail
.To = "*****@****.com"
.CC = ""
.BCC = ""
.Subject = "A vérifier"
.Body = strbody
.Display 'visu @MAIL
'.Send ' pour l'envoi du @MAIL
End With
.Range("M" & L) = "FAUX" & " Ok" 'modification pour eviter x envoi
On Error GoTo 0
End If
Set OutMail = Nothing
Set OutApp = Nothing
Next L
End With
End Sub
 

danielco

XLDnaute Impliqué
Comme FAUX résulte d'une condition, c'est une valeur booléenne. Il ne faut pas la mettre entre guillemets.

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim OutApp As Object
  Dim OutMail As Object
  Dim strbody As String
  Dim L As Long, DerLig As Long
  Set OutApp = CreateObject("Outlook.Application")
  With Worksheets("feuil1") 'adaptez le nom de feuille
    DerLig = .Range("M" & Rows.Count).End(xlUp).Row
    For L = 1 To DerLig
      'If L = 27 Then Stop
      strbody = ""
      If .Range("M" & L) = FAUX Then
      Set OutMail = OutApp.CreateItem(0)
      strbody = .Range("A" & L) & " et " & .Range("I" & L) & " sont disponibles"
      With OutMail
        .To = "*****@****.com"
        .CC = ""
        .BCC = ""
        .Subject = "A vérifier"
        .Body = strbody
        .Display 'visu @MAIL
        '.Send ' pour l'envoi du @MAIL
      End With
      .Range("M" & L) = "FAUX" & " Ok" 'modification pour eviter x envoi
      End If
    Next L
  End With
  Set OutApp = Nothing
End Sub
Daniel
 

Flo26

XLDnaute Nouveau
Enocre merci de ton aide Daniel,

Je ne comprend pas lorsque FAUX est dans la colonne M, outlook ne s'ouvre même pas ?
 

Flo26

XLDnaute Nouveau
non cela ne fonctionne pas encore, pas email envoyer quand état faux est dans la colonne M. Pouvez vous me confirmer que je suis déjà bien réglé au niveaux des outils références ?
Sans titre.jpg
 

Flo26

XLDnaute Nouveau
Bonjour,

Après un de petit contre temps, je me suis remis sur mon projet d'alerte par Email de mon stock.
Donc la bonne nouvelle c'est que j'arrive a déclencher le lancement de l'email.
Deux problème se pose :
- le premier est que l'email ce lance uniquement à la fermeture de fichier excel, alors que je voudrais qu'il ce lance juste au changement d’état de la colonne M (passage en FAUX).
- le second est qu'il m'envoie autant de mail que de ligne au dessus de celle qui comporte "FAUX"
(exemple : si a la ligne 28, "FAUX" apparaît dans la colonne M, alors 28 email vont être envoyés)
Hors je voudrais uniquement les infos de la ligne concerné.

Un grand merci d'avance de m'aider, je sens que le but n'est pas loin.
 

Fichiers joints

danielco

XLDnaute Impliqué
Teste :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim OutApp As Object
  Dim OutMail As Object
  Dim strbody As String
  Dim L As Long
  If Target.Column = 9 And Target.Value > 1 Then
    Set OutApp = CreateObject("Outlook.Application")
    With Worksheets("feuil1") 'adaptez le nom de feuille
      strbody = ""
      Set OutMail = OutApp.CreateItem(0)
      strbody = .Range("A" & Target.Row) & " et " & .Range("I" & Target.Row) & " sont disponibles"
      With OutMail
        .To = "*****@****.com"
        .CC = ""
        .BCC = ""
        .Subject = "A vérifier"
        .Body = strbody
        .Display 'visu @MAIL
        '.Send ' pour l'envoi du @MAIL
      End With
    End With
    Set OutApp = Nothing
  End If
End Sub
Il faut modifier la ligne pour y mettre l'adresse du destinataire :
Code:
 .To = "*****@****.com"
La macro se trouve dans le module de la feuille Feuil1.

Daniel
 

Fichiers joints

Flo26

XLDnaute Nouveau
Avec le code de Basse outook se lance et envoie des mails comme expliqué précédemment avec les deux problème se pose :
- le premier est que l'email ce lance uniquement à la fermeture de fichier excel, alors que je voudrais qu'il ce lance juste au changement d’état de la colonne M (passage en FAUX).
- le second est qu'il m'envoie autant de mail que de ligne au dessus de celle qui comporte "FAUX"
(exemple : si a la ligne 28, "FAUX" apparaît dans la colonne M, alors 28 email vont être envoyés)
Hors je voudrais uniquement les infos de la ligne concerné.

Avec le fichier modifier Flo26 stock magasin, outlook ne ce déclenche pas ??
J'ai l'impression que des que le code est dans feuil1 outlook ne répond pas.
 

danielco

XLDnaute Impliqué
L'envoi du message est déclenché par une entrée dans la colonne I supérieure à 1, par exemple si tu entres une nouvelle fois "3" en I4.

Daniel
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas