macro envoi mail automatique gestion de stock

Mister alex

XLDnaute Nouveau
Bonjour à tous,


Je suis débutant en Macro et j'aurais donc besoin d'un peu d'aide concernant un envoi de mail automatique grâce à une macro excel La problématique est la suivante :

Je gère un stock de produits consommables grâce à un tableau de gestion de stock (un onglet entrée en stock, un onglet sortie de stock, et un onglet stock existant). La macro devra être exécutée dans l'onglet « stock existant ».

Dans cet onglet, dans la plage de cellules D6: D219 on trouvera les soldes de chaque référence et dans la plage de cellules E6:E219, on trouvera le stock de sécurité de chaque référence. Dès que le solde d'une référence atteint son seuil de sécurité, une macro avertirait dans un premier temps que le seuil de sécurité a été atteint puis enverrait un mail avec le fichier en PJ à la personne qui passe les commandes.

Ai-je été assez clair ? Dois-je vous mettre à dispo mon fichier ?
Je ne sais pas si cela est faisable, merci par avance.

Alex.
 

Hulk

XLDnaute Barbatruc
Re : macro envoi mail automatique gestion de stock

Salut Mister Alex et bienvenue,

En effet je pense que c'est mieux que tu déposes ton fichier avec les détails de ce que tu veux dedans et sans données confidentielles bien entendu..

Tu auras plus facilement de l'aide.
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Personne n'a de réponse??
Je repose ma problématique autrement:
Une alerte mail se déclencherait lorsque le solde du stock (reste en stock) atteindrait son point de commande.
Peut etre est-il possible d'être préalablement averti grace à un MsgBox que le point de commande à était atteint et poserais la question "voulez-vous commander" (par exemple). Cliquer sur "Oui" déclencherai l'alerte mail. Voila j'espère que vous pourriez m'aider car je suis un peu perdu.
Merci,
Alex.
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

Salut, c'est très faisable, simplement ou trouves-tu le "point de commande"?

la macro comparerait le reste en stock et le point de commande, si le reste en stock est égale ou inférieur au point de commande, tu as la msgbox qui s'affiche et le mail part quand on clique sur Oui... C'est bien ce que tu veux?
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Dans l'onglet "stock existant". Dans mon tout premier message et sur mon fichier joint, j'ai confondu stock de sécurité et point de commande. Mais c'est bien si le reste en stock est inférieur ou égale au point de commande que la macro se déclenche.
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

Bonjour,

J'ai fais ça, c'est a associer à ta feuille 2 dans ton fichier.
Je te laisse adapter les parties en vert et me dire ce que tu en penses.
Je te l'ai annoté pour faciliter les choses.

Code:
' On lance la macro si une des cases de la colonne F feuille 2 change de valeur
Private Sub Worksheet_Change(ByVal Target As Range)
' pour toutes les lignes de la colonne F
For i = 6 To 218
'Si F et une ligne entre 6 et 218 prend la valeur envoi mail, on lance la procédure d'envoi du mail  
 If Range("F" & i).Value = "envoi mail" Then
       GoTo EnvoiMail
   End If
'Si F ne prend pas la valeur "envoi mail", on regarde à la ligne suivante  
 Next i
'procedure d'envoi du mail
EnvoiMail:
'message d'avertissement
MsgBox "[COLOR="#00FF00"]voulez-vous commander ?[/COLOR]", vbYesNo, "[COLOR="#00FF00"]Stock critique[/COLOR]"
'Si on clique sur Oui
If MsgBoxResult = Yes Then
'On cherhce ou est enregistrer le classeur actif
P = ThisWorkbook.Path
'On enregistre un pdf de ce classeur à la même place que le classeur actif
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "\[COLOR="#00FF00"]Commande[/COLOR].pdf"

'On configure l'envoi du mail
Dim oCDO
 
Set oCDO = CreateObject("CDO.Message")
With oCDO
  With .Configuration.Fields ' Configuration du compte mail SMTP
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = "2"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "[COLOR="#00FF00"]Adresse smtp du serveur[/COLOR]"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "[COLOR="#00FF00"]numéro de port du serveur[/COLOR]"
 
     '----- Dans le cas ou le serveur de mail demande une authentification
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[COLOR="#00FF00"]adresse sur le serveur utilisée pour l'envoi[/COLOR]"
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "[COLOR="#00FF00"]mot de passe pour cette adresse [/COLOR]"
     '----------------
     .Update
End With
'On place notre message, la pièce jointe et l'adresse du destinataire  
.From = "[COLOR="#00FF00"]adresse sur le serveur[/COLOR]"
 .To = "[COLOR="#00FF00"]alexandre.martin@fr.issworld.com[/COLOR]"
  .TextBody = "[COLOR="#00FF00"]Texte du mail[/COLOR]"
  .AddAttachment P & "\[COLOR="#00FF00"]Commande[/COLOR].pdf"
  .Send
End With
'On détruit le fichier créé pour l'envoi (pas la peine d'encombrer)
Kill (P & "\[COLOR="#00FF00"]Commande[/COLOR].pdf")
'Message pour dire que tout a été fait
MsgBox "[COLOR="#00FF00"]Une alerte mail a été envoyé au responsable des commandes[/COLOR]"
'On sort de la macro pour ne pas avoir 100 mails d'un coup si 100 articles viennent à manquer
GoTo endsub
End If
'Si la msgbox prend la valeur Non, on arrête la macro
If MsgBoxResult= No Then
GoTo endsub
endsub:
End Sub

A+
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Vénitien,
Je rencontre quelques problèmes.
Lorsque j'éxécute la macro, après avoir cliqué sur "Oui" à la question de la MsgBox, la ligne de commande permettant d'enregitrer le fichier XL en PDF (ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "Commande.pdf")est surligné en jaune et une boite de dialogue s'affiche avec "fin" et "débogage".
Il y a aussi un problème au niveau de la MsgBox. Elle s'affiche systématiquement lorsque une donnée du reste en stock (colonne D) change, même quand la valeur est supérieure au point de commande.
J'ai peut etre fait une erreur quelque part mais je n'arrive pas à voir où.
Je peux peut etre te laisser le début du code pour situer le problème:

' On lance la macro si une des cases de la colonne F feuille 2 change de valeur
Private Sub Worksheet_Change(ByVal Target As Range)
' pour toutes les lignes de la colonne F
For i = 6 To 218
'Si F et une ligne entre 6 et 218 prend la valeur envoi mail, on lance la procédure d'envoi du mail
If Range("F" & i).Value = "envoi mail" Then
GoTo EnvoiMail
End If
'Si F ne prend pas la valeur "envoi mail", on regarde à la ligne suivante
Next i
'procedure d'envoi du mail
EnvoiMail:
'message d'avertissement
MsgBox "voulez-vous commander ?", vbYesNo, "Stock critique"
'Si on clique sur Oui
If MsgBoxResult = Yes Then
'On cherhce ou est enregistrer le classeur actif
P = ThisWorkbook.Path
'On enregistre un pdf de ce classeur à la même place que le classeur actif
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "\Commande.pdf"

Merci encore pour ton aide,
A+
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

salut, rajoute

Else
GoTo endsub

entre

If Range("F" & i).Value = "envoi mail" Then
GoTo EnvoiMail

et le premier

End If

Pour l'enregistrement, ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "\Commande.pdf" marche très bien chez moi mais a mon avis y'a un défaut de version excel... je suis sur 2007.

Peux tu enregistrer en pdf en temps normal?
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Aiie, l'alerte par MsgBox ne s'affiche plus du tout... Pourtant je pense avoir bien fait comme tu me l'as dit.
Et oui effectivement je travaille sur 2003 et donc je ne peux pas enregistrer un fichier XL en PDF sur 2003. Je n'y avais pas pensé mais c'est surement pour ça que ça ne marche pas.
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

bah oui ça vient de là... étant débutant en macro, je ne sais pas comment faire mais ce problème sera résolu lorsqu'un xldnaute plus expérimenté passera par ici. Le but d'exporter en pdf et de pouvoir envoyer le fichier sans avoir à le fermer. mais qqn aura une solution j'en suis persuadé.

pour ta msgbox qui ne s'affiche plus je vais regarder, mais je ne suis sur mon ordi que par intermitence cet aprem... c'est urgent?
 
Haut Bas