Problème macro avec sendmail

Bonjour à tous,

Alors voilà mon soucis:

J'ai placé deux boutons sur une feuille d'un classeur Excel. Le but est que le premier bouton "Rédaction" ouvre un classeur qui doit être complété chaque jour.

Le deuxième bouton "Envoyer" est en charge de l'envoi de ce même fichier.

Pour le lancement du fichier, pas de problème, une macro assez simple suffit.

Sub rapportq()

Workbooks.Open ("test.xlsx")

End Sub

En revanche j'aimerais que cliquer sur "Envoyer" adresse un courriel avec la version modifiée du fichier, avec pour titre l'ancien nom du fichier + la date d'aujourd'hui et les heures et minutes de quand le fichier a été complété.

J'ai réussi à faire ça pour le titre du courriel mais pas pour le nom de la version du fichier...

Voici mon script:

Sub EnvoiMail()

Application.DisplayAlerts = False

Workbooks("test.xlsx").SendMail "fabien.mrs@gmail.fr", _

Subject:="test" & Format(Date - 1, " dd-mm-yyyy"), _

ReturnReceipt:=True

Workbooks.Close

End Sub

Tout fonctionne mise à part ça, et le message d'alerte qui ne veut pas partir haha

Merci d'avance pour votre aide!

Bonsoir,

Un début de réponse à adapter.

Cdlt.

Option Explicit

Public Sub Send_Mail()
Dim wb As Workbook
Dim Message As String, Title As String, strFile As String, strPath As String
Dim Answer As VbMsgBoxResult
    Message = "Vous devez enregistrer le classeur avant d'envoyer le courriel!..."
    Title = "Envoi courriel"
    Answer = MsgBox(Message, 1, Title)
    Select Case Answer
        Case 1
            Set wb = ThisWorkbook
            strPath = wb.Path & Application.PathSeparator
            strFile = Mid(wb.Name, 1, InStrRev(wb.Name, ".") - 1)
            strFile = strFile & Chr(32) & Format(Now, "yyyy-mm-dd hh-mm") & ".xlsm"
            wb.SaveAs Filename:=strPath & strFile, FileFormat:=52
            Application.DisplayAlerts = False
            ThisWorkbook.SendMail Recipients:="fabien.mrs@gmail.com", _
                                  Subject:="Test" & Format(Date - 1, "dd-mm-yyyy"), _
                                  returnreceipt:=True
            ThisWorkbook.Close savechanges:=False
        Case 2: Exit Sub
    End Select
End Sub

Un grand merci, je vais tester ce script.

Cependant j'ai des petites doutes :

- Au sujet de la commande Set wb = Thisworkbook

J'ai bien deux classeurs Excel différents (et non deux feuilles sur un même classeur), l'un nommé "rapport quotidien" comportant les deux boutons avec les macros et l'autre nommé "test.xlsx" à remplir par les collaborateurs chaque jour.

Est-ce que cette commande va bien faire comprendre au logiciel qu'il faut agir sur "test.xlsx" et non envoyer "rapport quotidien.xlsx" comportant les macros?

Je précise car sur tous les forums il est question d'envoyer le classeur actif, donc celui où se trouve les boutons...

- Désolé mais je ne comprends par l'intérêt du message "enregistrez avant de fermer etc"

Je souhaite qu'une fois le fichier "test.xlsx" complété, une version soit envoyée à telle adresse avec un nom auquel s'ajoute la date du jour, heure etc (ce qui semble être ok à ce niveau). Donc, je ne demande pas à la personne d'enregistrer le classeur renseigné, simplement que la macro fasse l'envoi et ferme le tout.

Ainsi, la prochaine personne qui devra renseigner le classeur ouvrira un fichier non renseigné

=> C'est bien le sens de cette commande à la fin non? (ou alors je bite rien...)

ThisWorkbook.Close savechanges:=False

Re,

Voir fichier joint avec les modifications.

Cdlt.

32fabmrs.xlsm (22.25 Ko)

Merci beaucoup,

Le programme tourne bien dans l'ensemble sauf une chose:

J'ai un Objet de courriel étrange:

Objet : sers\Fabien\Desktop\fabmrs.xlsm

Après plusieurs test j'ai toujours des caractères du type "???" dans l'objet du mail.

Désolé, je suis vraiment casse-pied mais aussi un pur néophyte...

Est-ce que c'est du au fait qu'au travail j'utilise Office 2010 et à la maison la version 2016?

Car pour le coup je n'avais pas de problème de côté là

Bonjour,

Je n'ai pas ce souci lors d'un test.

La procédure inscrit bien 'Test 24-11-2017 09-00' dans l'objet du message...

Cdlt.

Jean-Eric a écrit :

Bonjour,

Je n'ai pas ce souci lors d'un test.

La procédure inscrit bien 'Test 24-11-2017 09-00' dans l'objet du message...

Cdlt.

Je ferais un test sur le PC avec Office 2010, certainement un problème lié au type de version d'Outlook et aux paramètres de sécurité.

Au niveau de macro Rapport() est-ce que je peux compléter le script avec une condition If du style: si le fichier daté du jour existe alors l'ouvrir, sinon ouvrir le fichier de base ("test.xlsx") à compléter?

Contexte: deux personnes ont a remplir quotidiennement le fichier: une le matin, une soir. La personne du soir arrive et en cliquant sur le bouton chargé d'ouvrir le fichier à compléter, elle ouvre le fichier renseigné le matin-même. Sauf si la personne du matin est absente, ou a oublié de renseigner le fichier => pas de version datée du jour sauvegardée, donc le bouton ouvre le fichier initialement à compléter du matin.

C'est tordu, mais on vient de m'ajouter cette contrainte dont je n'avais pas connaissance jusqu'ici

Merci encore pour votre aide et au forum!

Bonjour,

Une nouvelle proposition à étudier.

(ne traite pas l'envoi des courriels)

Cdlt.

37fabmrs-v2.xlsm (35.65 Ko)

Ton programme fonctionne à merveille!

Un grand merci, tu m'as été d'une très grande aide!!!

Seul le problème au niveau de l'objet du courriel persiste, mais ce n'est qu'un détail.

Je place le sujet en Résolu.

Encore merci et surement à bientôt,

Bonsoir,

Ravi d'avoir pu t'apporter une aide.

A bientôt sur le forum.

Cdlt.

Rechercher des sujets similaires à "probleme macro sendmail"