Adapation code VBA au niveau des Msgbox + envoi mail
Bonsoir,
Dans le fichier joint (il s'agit d'un fichier test), je dispose d'un code "ExportSheet" que je souhaiterai modifier au niveau des Msgbox.
En cliquant sur le bouton bleu, une Inputbox apparaît. Le but est de saisir un nom de dossier qui se trouve dans le path.
1) Quand le dossier existe, le message "Votre commande a bien été enregistrée dans le dossier " & filename" apparaît donc ok
2) Si le dossier n'existe pas, le message "Le dossier de destination n'a pas été identifié !") donc ok
En revanche, si je ne saisis rien dans l'Inputbox, et que je clique sur "ok" ou "annuler", je voudrais qu'aucun message apparaisse ! Or ici, le message du point 2 ci-dessus apparaît ??
Deuxième chose, dans le cas où le dossier existe et que le message "Votre commande a bien été enregistrée dans le dossier " & filename" apparaît, je voudrais qu'en cliquant sur le bouton "ok" de ce message, qu'une nouvelle msgbox apparaisse avec le message "Voulez-vous envoyée votre commande mainteant ?" avec un choix oui / non. Et là si oui (envoi d'un mail via Outlook), et si non sortir tout simplement.
Je dispose d'un code pour envoi du mail via Outlook, mais le soucis est que je ne sais pas comment le placer dans ma macro pour que les évènements s'enchaînent comme indiqué ci-dessus ?
En espérant avoir été assez clair.
Merci par avance pour votre ide.
Mickaël
Salut Mickaels59,
comme ceci ?
Code pas testé (pas eu le temps de créer une situation de test)...
Sub ExportSheet()
'
Dim filename$, path$
'
On Error Resume Next
'
filename = Application.InputBox("Dossier Enregistrement :", "Export de la Commande_" & Range("A1").Value)
If filename <> "" And UCase(filename) <> "FAUX" Then
If Dir(path, vbDirectory) <> vbNullString Then
path = "C:\Users\Inset\Documents\commande\" & filename & "\"
With ActiveWorkbook.Worksheets("Export")
.Copy
ActiveWorkbook.SaveAs filename:=path & "Commande_" & Range("A1").Value, FileFormat:=52
ActiveWorkbook.Saved = False
ActiveWorkbook.Close False
End With
MsgBox "Votre commande a bien été enregistrée dans le dossier " & filename
iRep = MsgBox("Voulez-vous envoyer votre commande maintenant ?", vbYesNo)
If iRep = 6 Then
'code d'envoi du mail
End If
Else
MsgBox ("Le dossier de destination n'a pas été identifié !")
End If
End If
'
On Error GoTo 0
'
End Sub
A+
Bonjour,
Merci pour votre aide.
J'ai testé le code qui a l'air de fonctionner sauf.
Quand le dossier de destination n'existe pas (exemple: je n'ai pas créé de dossier "avril"). Il me met le message suivant : "Votre commande a bien été enregistrée dans le dossier avril" ? alors que je voudrais le message ""Le dossier de destination n'a pas été identifié !"
Voici le code final :
Sub DemandeEngagementCommande()
On Error Resume Next
Dim filename$, path$
Dim Chaine As String
Chaine = "Bonjour Mickaël," & vbCrLf & "" & vbCrLf & "Je te transmets ci-joint, le bon de commande n° " & Range("B1").Value & " pour engagement." & vbCrLf & "" & vbCrLf & "Merci !"
Set myApp = CreateObject("Outlook.Application")
Set myItem = myApp.CreateItem(olMailItem)
filename = Application.InputBox("Dossier Enregistrement :", "Export de la Commande_" & Range("B1").Value)
If filename <> "" And UCase(filename) <> "FAUX" Then
If Dir(path, vbDirectory) <> vbNullString Then
path = "K:\Services\Fin-Ach\Commandes\Test\reception_commande\" & filename & "\"
With ActiveWorkbook.Worksheets("Bon_de_commande")
.Copy
ActiveWorkbook.SaveAs filename:=path & "Commande_" & Range("B1").Value, FileFormat:=52
ActiveWorkbook.Saved = False
ActiveWorkbook.Close False
End With
MsgBox "Votre commande a bien été enregistrée dans le dossier " & filename
iRep = MsgBox("Voulez-vous envoyer votre commande maintenant ?", vbYesNo)
If iRep = 6 Then
With myItem
.Subject = "Approbation bon de commande n° " & Range("B1").Value
.To = "mickael.walet@cnfpt.fr"
.CC = ""
.Body = Chaine
.Send
End With
Else
MsgBox ("Le dossier de destination n'a pas été identifié !")
End If
End If
End If
Set myApp = Nothing
Set myItem = Nothing
On Error GoTo 0
End Sub
Encore merci !
Salut Mickaels59,
comme ceci ?
Code pas testé (pas eu le temps de créer une situation de test)...
Sub ExportSheet() ' Dim filename$, path$ ' On Error Resume Next ' filename = Application.InputBox("Dossier Enregistrement :", "Export de la Commande_" & Range("A1").Value) If filename <> "" And UCase(filename) <> "FAUX" Then If Dir(path, vbDirectory) <> vbNullString Then path = "C:\Users\Inset\Documents\commande\" & filename & "\" With ActiveWorkbook.Worksheets("Export") .Copy ActiveWorkbook.SaveAs filename:=path & "Commande_" & Range("A1").Value, FileFormat:=52 ActiveWorkbook.Saved = False ActiveWorkbook.Close False End With MsgBox "Votre commande a bien été enregistrée dans le dossier " & filename iRep = MsgBox("Voulez-vous envoyer votre commande maintenant ?", vbYesNo) If iRep = 6 Then 'code d'envoi du mail End If Else MsgBox ("Le dossier de destination n'a pas été identifié !") End If End If ' On Error GoTo 0 ' End Sub
A+
Bonjour,
Voici ci-dessous, mon code final qui fonctionne bien, sauf quand le dossier n'exite pas; il me m'est le message comme quoi le dossier a bien été engistré ??
Sub DemandeEngagementCommande()
On Error Resume Next
Dim filename$, path$
Dim Chaine As String
Chaine = "Bonjour Mickaël," & vbCrLf & "" & vbCrLf & "Je te transmets ci-joint, le bon de commande n° " & Range("B1").Value & " pour engagement." & vbCrLf & "" & vbCrLf & "Merci !"
Set myApp = CreateObject("Outlook.Application")
Set myItem = myApp.CreateItem(olMailItem)
filename = Application.InputBox("Dossier Enregistrement :", "Export de la Commande_" & Range("B1").Value)
If filename <> "" And UCase(filename) <> "FAUX" Then
If Dir(path, vbDirectory) <> vbNullString Then
path = "K:\Services\Fin-Ach\Commandes\Test\reception_commande\" & filename & "\"
With ActiveWorkbook.Worksheets("Bon_de_commande")
.Copy
ActiveWorkbook.SaveAs filename:=path & "Commande_" & Range("B1").Value, FileFormat:=52
ActiveWorkbook.Saved = False
ActiveWorkbook.Close False
End With
MsgBox "Votre commande a bien été enregistrée dans le dossier " & filename
iRep = MsgBox("Voulez-vous envoyer votre commande maintenant ?", vbYesNo)
If iRep = 6 Then
With myItem
.Subject = "Approbation bon de commande n° " & Range("B1").Value
.To = "mickael.walet@cnfpt.fr"
.CC = ""
.Body = Chaine
.Send
End With
Else
MsgBox ("Le dossier de destination n'a pas été identifié !")
End If
End If
End If
Set myApp = Nothing
Set myItem = Nothing
On Error GoTo 0
End Sub
Encore merci !