Ajout d'une entrée de texte dans un MSGBOX qui sera inclu dans un mail
Bonjour,
Ce post fait suite direct à l'un de mes posts précédents dont le but était d'envoyer automatiquement un mail en allant chercher des infos dans quelques cellules, je remercie encore tout le monde sur ce forum pour leur aide, je suis un grand débutant en VBA qui se contente de chercher des codes VBA et de les adapter comme je peux.
Aujourd'hui, je ne trouve pas de code à adapter pour faire ce que j'aimerais :
J'aimerais enrichir ce code VBA en ajoutant dans le MSGBOX un espace de saisie de texte qui sera par la suite inclu au mail envoyé. Voici le code actuel :
Sub Bouton_PC()
If MsgBox("Vérifiez de bien avoir renseigné :" & Chr(10) & "" & Chr(10) & "- Les deux numéros AGRO" & Chr(10) & "- La ligne de production/conditionnement" & Chr(10) & "" & Chr(10) & "Envoyer la demande ?", 36, "Confirmation") = vbYes Then
Set MyApp = CreateObject("Outlook.Application") 'Outlook doit être ouvert
Set MyItem = MyApp.CreateItem(0)
With MyItem
.To = "jeanmichmich@truc.com"
.CC = "Johndoeuf@truc.com"
.Subject = "Demande de référence couleur"
.ReadReceiptRequested = False 'accusé de réception ?
sbody = "<html><body>Bonjour,<br><br>Merci de préparer la référence du " & Range("D4") & " (" & Range("D6") & ") vers le " & [J4] & " (" & [J6] & ") à " & [L30] & " ppm pour la ligne " & [E19] & ".<br><br>Bonne journée !</body></html>"
.htmlbody = sbody
End With
MyItem.Send 'Boite de dialogue de confirmation de l'envoi du mail
MsgBox "Demande envoyée." & Chr(10) & "" & Chr(10) & "Merci et bonne journée !"
End If
End Sub
J'ai cru comprendre en fouillant sur le net qu'il faudrait utiliser une fonction "inputbox"... mais je suis un peu perdu, comment lui attribuer un nom pour appeler son contenu par la suite dans le mail à envoyer ?
Ma demande est surement un peu maladroite, si je ne suis pas assez clair ou s'il manque des infos, n'hésitez pas à me demander.
edit :
J'ai trouvé ce code sur le net que j'ai adapté un peu pour mon document, je pense pouvoir le joindre à mon premier code ci-dessus. Il me reste à faire appel à la cellule A1 selon le code ci-dessous :
Sub Commentaire()
Dim Commentaire As String
With Sheets("Feuil1") 'feuil1
Commentaire = "Informations complémentaires :"
B = InputBox(Commentaire, vbQuestion, "Informations supplémentaires")
If B = vbCancel Then
MsgBox "Test", vbInformation
Close B
Else
Range("A1") = B
End If
End With
End Sub
Encore un petit problème : le titre de la fenêtre inputbox qui s'ouvre quand je lance la macro est "32". Comment puis-je modifier le titre de la fenêtre ?
Bonjour, j'ai du nouveau concernant mon code :
- J'arrive désormais à introduire le texte entré via inputbox dans le mail qui est envoyé (l'inputbox est entrée dans une cellule puis je fais appel à cette cellule dans le mail).
- J'ai trouvé comment renommé le titre de mon inputbox
Je rencontre un dernier problème : j'ai deux choix dans mon inputbox : "OK" : le mail est envoyé + mesage de confirmation, "CANCEL" pas de mail envoyé + message d'annulation. Mon problème est que je fasse OK ou CANCEL, un mail est envoyé + confirmation dans les deux cas...
Sub Commentaire()
Dim Commentaire As String
With Sheets("Feuil1") 'feuil1
Commentaire = "Vérifiez de bien avoir renseigné :" & Chr(10) & "" & Chr(10) & "- Le numéro AGRO" & Chr(10) & "- La date" & Chr(10) & "- Un commentaire dans le champ ci-dessous"
B = InputBox(Commentaire, "Comfirmation d'envoi", "")
If B = vbCancel Then
Close B
MsgBox "Demande annulée."
Exit Sub
Else
Range("A1") = B
Set MyApp = CreateObject("Outlook.Application") 'Outlook doit être ouvert
Set MyItem = MyApp.CreateItem(0)
With MyItem
.To = "antoine.dubrac@syngenta.com"
.CC = ""
.Subject = "Notification de lot(s) renommé(s)"
.ReadReceiptRequested = False 'accusé de réception ?
sbody = "<html><body>Bonjour,<br><br>Merci de préparer la référence du " & Range("D4") & " (" & Range("D6") & ") vers le " & [J4] & " (" & [J6] & ") à " & [L30] & " ppm pour la ligne " & [E19] & ".<br><br>Commentaire lié à la notification :<br><br>" & [A1] & "<br><br>Bonne journée !</body></html>"
'plus bas
.htmlbody = sbody
End With
MyItem.Send 'Boite de dialogue de confirmation de l'envoi du mail
MsgBox "Demande envoyée." & Chr(10) & "" & Chr(10) & "Merci et bonne journée !"
End If
End With
End Sub
Bonjour Lockard
Il existe des outils dans VBA project pour savoir ce qui se passe
F9 (point d'arrêt) sur la ligne : B= Inputbox...
Et vous pourriez voir alors que B est vide et non vbCancel
A+
Et vous pourriez voir alors que B est vide et non vbCancel
J'ai essayé ce fameux "point d'arrêt", la ligne en question est alors surlignée en rouge mais je ne vois pas où cela me mène... Je suis un grand débutant du VBA encore.
J'ai finalement réussi à faire ce que je voulais, je laisse le code ici, qui sait cela pourrait être utile à quelqu'un !
Sub Commentaire()
With Sheets("Feuil1")
Dim Commentaire As Variant
Reponse = Application.InputBox("Vérifiez de bien avoir renseigné :" & Chr(10) & "" & Chr(10) & "- Le numéro AGRO" & Chr(10) & "- La date" & Chr(10) & "- Un commentaire dans le champ ci-dessous", Type:=2)
If VarType(Reponse) = vbBoolean Then
MsgBox "Demande annulée"
Else
Range("A1") = Reponse
Set MyApp = CreateObject("Outlook.Application") 'Outlook doit être ouvert
Set MyItem = MyApp.CreateItem(0)
With MyItem
.To = "antoine.dubrac@syngenta.com"
.CC = ""
.Subject = "Notification de lot(s) renommé(s)"
.ReadReceiptRequested = False
sbody = "<html><body>Bonjour,<br><br>Merci de préparer la référence du " & Range("D4") & " (" & Range("D6") & ") vers le " & [J4] & " (" & [J6] & ") à " & [L30] & " ppm pour la ligne " & [E19] & ".<br><br>Commentaire lié à la notification :<br>" & [A1] & "<br><br>Bonne journée !</body></html>"
.htmlbody = sbody
End With
MyItem.Send
MsgBox "Demande envoyée." & Chr(10) & "" & Chr(10) & "Merci et bonne journée !"
End If
End With
End Sub
Re,
Une fois le point d'arrêt mis, il faut bien entendu lancer la macro
Le code s'arrête alors ou se trouve la ligne rouge, F8 pour la passer, vous mettez votre curseur de souris dessus et cela vous affiche la valeur
Si vous avez trouvez la solution, c'est parfait