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 !

Rechercher des sujets similaires à "adapation code vba niveau msgbox envoi mail"