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.
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Réctification maintenant l'alerte Msg box apparait mais elle s'affiche toujours lorsque une valeur de la colonne reste en stock change et non pas seulement quand elle est inférieur ou égale au point de commande.
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Non ce n'est pas super urgent . Et oui pour ce qui est de convertir le fichier en PDF je posterai un nouveau sujet et je pense que j'aurai des réponses. Je pense pas que c'est ce qu'il y a de plus compliquer.
Encore merci,
A+
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

Salut, si tu as résolue le problème des pdf, j'ai modifier le code:

- la macro ne se lance plus tout le temps mais à chaque fois qu'une cellule F située au bout de la ligne qu'on modifie prend la valeur "Envoi mail"

- La msgBox répond comme il faut et non plus en envoyant le fichier quelque soit la réponse donnée..

voilà le code, je te laisse adapter (comme hier, nom de fichier, message du mail, et les adresses) et tu me dis si ça marche.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

k = Target.Row
If Range("F" & k).Value <> "envoi mail" Then
GoTo endsub
End If
If Range("F" & k).Value = "envoi mail" Then
       GoTo EnvoiMail
   End If

EnvoiMail:
MsgBox "voulez-vous commander ?", vbYesNo, "Stock critique"
If MsgBoxResult = vbYes Then
P = ThisWorkbook.Path

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "\Commande.pdf" 'From:=1, To:=2

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") = "Adresse smtp du serveur"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "numéro de port du serveur"
 
     '----- 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") = "adresse sur le serveur utilisée pour l'envoi"
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mot de passe pour cette adresse "
     '----------------
     .Update
End With
  .From = "adresse sur le serveur"
 .To = "alexandre.martin@fr.issworld.com"
  .TextBody = "Texte du mail"
  .AddAttachment P & "\Commande.pdf"
  .Send
End With
Kill (P & "\Commande.pdf")
MsgBox "Une alerte mail a été envoyé au responsable des commandes"
GoTo endsub
End If
If MsgBoxResult = vbNo Then
GoTo endsub
End If
endsub:
End Sub

A+
 

Mister alex

XLDnaute Nouveau
Re : macro envoi mail automatique gestion de stock

Bonjour Vénitien,
J'ai créé un post pour le problème d'enregistrement en PDF, j'attends les réponses.
Pour ta macro, la MsgBox s'affiche bien uniquement quand les cellules en colonne F prennent la valeur "envoi mail".
Mais le problème c'est que quand je change manellement les valeurs dans la colonne D tout va bien, mais quand elles changent automatiquement (grâce à une formule somme.si reprenant les valeurs dans la feuil3 "sortie de stock"), la MsgBox ne s'affiche pas.
Je n'ai surement pas dû être assez clair dans mes précédents posts.
J'espère que tu auras la solution?
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

Oui j'ai vu le problème, je tente des solutions pour le moment mais rien de probant.. j'indique ci-dessous ce que j'ai testé au cas ou quelqu'un de plus expérimenté passe par ici.

- J'ai tenté avec worksheet_calculate mais la macro s'exécute pour toute cellule modifiée donc ça ne va pas,

- Avec worksheet_selectionchange ou worksheet_change, la macro ne démarre pas si la valeur d'une cellule est modifiée via une formule et un calcul automatique...

je remet le code dont on parle pour que ça soit clair:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 4 Then
GoTo endsub
End If
k = Target.Row
If Range("F" & k).Value <> "envoi mail" Then
GoTo endsub
End If
If Range("F" & k).Value = "envoi mail" Then
       GoTo EnvoiMail
   End If

EnvoiMail:
MsgBox "voulez-vous commander ?", vbYesNo, "Stock critique"
If MsgBoxResult = vbYes Then
P = ThisWorkbook.Path

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=P & "\Commande.pdf" 'From:=1, To:=2

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") = "Adresse smtp du serveur"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "numéro de port du serveur"
 
     '----- 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") = "adresse sur le serveur utilisée pour l'envoi"
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mot de passe pour cette adresse "
     '----------------
     .Update
End With
  .From = "adresse sur le serveur"
 .To = "alexandre.martin@fr.issworld.com"
  .TextBody = "Texte du mail"
  .AddAttachment P & "\Commande.pdf"
  .Send
End With
Kill (P & "\Commande.pdf")
MsgBox "Une alerte mail a été envoyé au responsable des commandes"
GoTo endsub
End If
If MsgBoxResult = vbNo Then
GoTo endsub
End If
endsub:
End Sub

je continue à chercher, tiens moi au courant pour le pdf

A+
 

Venitien

XLDnaute Occasionnel
Re : macro envoi mail automatique gestion de stock

Toujours rien...

Je te propose de mettre un nouveau sujet : "Exécution d'une macro après MAJ automatique d'un résultat de calcul"
et tu explique que tu veux que la macro se lance dès que le résultat de la formule située dans ta colonne D, change...

ça fera peut-être progresser plus vite..
 
Haut Bas