EXCEL : Envoi de mails automatisés

Résolu
Damaged -  
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Pour simplifier, voici tout de suite une version que j'ai rendu anonyme du fichier : http://cjoint.com/?CCpkkUIPc2S
.
Je vous explique mon problème :
.
J'ai une planning d'environ 50 personnes, sur le modèle du fichier.
.
Seulement voilà, j'ai peur d'oublier certains de mes RDV ou que mon contact l'oublie.
.
Du coup j'aimerais savoir s'il est possible par l'intermédiaire de Macros ou autres, d'envoyer automatiquement un mail de rappel (avec un texte automatique du genre "Sujet : Message automatique de rapel. Texte : Bonjour, pour rappel nous avons rendez vous ensemble aujourd'hui le #Date fichier# à #Heure RDV fichier#. Bien à vous, ....") le jour du rendez vous aux 2 personnes concernées à savoir moi et mon contact si la date du RDV correspond à la date en haut à droite
.
Pour infos les adresses mails sont sur la 2nd page, et j'utilise Outlook pour gérer mes mails.
.
Mais je ne sais si c'est possible pour 2 raisons :
.
1. Le document se met-il à jour automatiquement à minuit (donc le mail partirait à minuit) ou ne se met-il à jour que à l'ouverture de celui-ci ? De ce fait il faudrait que j'ouvre le document pour que les mails partent.
.
2. Est-il possible d'extraire des données d'une cellule pour les insérer dans le mail (Par exemple la date et l'heure de RDV)
.
En espérant pouvoir être aider, merci d'avance :)

16 réponses

  1. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    J'ai trouvé ce sujet en faisant une recherche,
    Je suis plus ou moins dans le même cas donc j'aimerais relancer ce sujet plutôt que de créer un doublon.

    Merci, et bonne journée
    0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Avec Excel tout ou presque tout est possible.
    Je te conseille de passer directement en CDO, plus facile à gérer et automatiser l'envoi.
    Dans l'exemple ci joint il suffit de saisir en B3 l'adresse destinataire, en C1 le SMTP de son fournisseur d'accès et éventuellement un texte dans les cellules C3 à C10.
    l'envoi à plusieurs destinataire n'est pas un problème et le corps du message peut être saisi dans le code comme le SMTP, ainsi que le déclenchement de l'envoi peut se faire automatiquement sur un critère.

    A tester et on en reparle

    https://www.cjoint.com/c/CCsk3utDxuP
    0
  3. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour Mike,

    Pour moi ton fichier est d'une grande aide, seulement j'ai un petit soucis au niveau des adresses mails !

    En effet il ne s'agit ni de free, ni de orange ect.. il s'agit d'une boite outlook avec pour extansion le nom de la boite (ex : Nom.Prenom@Nomsociete.com)

    J'ai essayé de rentrer ça dans les cellules, seulement j'ai un message d'erreur : 553 sorry, that domain isn't in my list of allowed rcpthost (#5.7.1)

    Je n'ai pas le moindre idée de ce que je peux y faire... Peux-tu m'aider ?

    Merci.
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    En B2 ton adresse mail d'expéditeur

    et en B3 adresse mail du destinataire, pour tester tu peux mettre la tienne

    Nom.Prenom@Nomsociete.com

    en C1 tu dois avoir un SMTP de l'entreprise qui devrait ressembler à

    SMTP.Nomsociete.com

    pour t'assurer de ton smtp tu peux aller voir sur une adresse de messagerie sur Outlook/propriété/je crois que c'est sur un onglet serveur
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Ok merci j'avance,

    Pour le SMTP j'ai mis SMTP.Outlook.com et ça à l'air de fonctionner.

    Un petit soucis avec l'authentification, mais j'ai vu que tu avais déjà tout préparé dans le VBA, donc j'ai pu résoudre le problème facilement.

    Cependant ce n'ai pas fini, maintenant lorsque je clique sur le bouton j'ai ce message qui apparait : "Compil Error : Variable not defined"
    Et dans le VBA :

    End Sub

    Sub Procédure_Envoi()
    Dim messageHTML As Variant
    Dim objMessage As Variant
    Dim piece_jointe As Variant

    Ce que j'ai mis en gras se surligne en jaune. (Encore désolé mais je suis plus que novice en VBA)

    Que puis-je faire ?

    Merci.
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Il est normal que Sub Procédure_Envoi() se mette en jaune si une erreur est rencontrée dans le code.
    pour détecter la ligne en erreur aller dans le visual basic et blocage/activer le pas à pas détaillé

    mais ton SMTP "SMTP.Outlook.com " ne peut être bon

    ouvre outlook, puis je crois que c'est dans outils/comptes
    ou tu devrais trouver ton adresse mail, clic dessus/propriété/ensuite clic sur tes onglets, je crois que c'est l'onglet serveur ou tu récupéreras les données de ton courrier sortant (SMTP) que tu rapporteras en C1
    0
  8. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Ok, pour l'erreur VBA j'ai ceci (en gras) qui se surligne :

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "***"
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "***"

    Huuum, question : dois-je laisser les " " autour de mon nom d'utilisateur et de mon mot de passe ?

    Sinon pour mon SMTP, je ne trouve pas... Car dans l'outlook professionnel mis en place dans mon entreprise je n'ai pas l'onglet "outils" et je ne trouve rien lié aux comptes.
    La seule info que je trouve c'est "Serveur Microsoft exchange : eu-casarray.nomsociété.net"

    Encore désolé pour le dérangement, j'ai l'impression de te demander 150 fois la même chose mais de ne jamais comprendre !

    Merci d'avance.
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      Bonjour à tous,
      Je me pose un peu la, mais as-tu pensé à cocher la librairie CDO dans Outils>Références ?
      Le nom de la librairie : "Microsoft CDO for Windows XXXX Library"
      0
    2. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
       
      Effectivement je ne l'avais pas fais, mais j'ai changé de macro à l'heure actuelle.

      Ce problème est donc résolu, mais il m'en reste d'autre (Cf. Un peu plus bas) peut-être pourras-tu m'aider !
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Dans le code, ces lignes sont isolées et ne doivent être libérées et renseignées que dans le cas ou la connexion nécessite une authentification(dans ce cas l'apostrophe en tête de ligne doit être supprimée)

    soit remettre l'apostrophe en tête de ligne ou supprimer ces lignes

    Il est impératif de connaitre le SMTP pour renseigner la cellule C1 ou directement l'insérer dans le code
    0
  10. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour Mike,

    J'ai du retirer l'apostrophe et renseigner ces lignes justement car j'ai eu un message d'erreur qui me disait que je devais m'authentifier !

    Je ne trouve rien de plus pour mon SMTP, je vais laisser tomber ça sera plus simple ! J'enverrais mes mails à la main et pis c'est tout.

    Merci encore pour ton aide, et pour le temps que tu m'as consacré.

    Bonne journée
    0
  11. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Ce post est juste à titre informatif pour ceux qui chercheraient à faire la même chose.

    J'ai finalement réussi à faire ce que je voulais à savoir un bouton qui envoi une page Excel voici le VBA :

    Sub PDFMAIL()

    Application.DisplayAlerts = False

    Dim ObjOutlook As Object
    Dim oBjMail
    Dim pj As String
    Dim Corps As String

    Sheets("Feuil3").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "P:\AAA Test\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False _

    pj = "P:\AAA Test\" & [B2] & ".pdf"

    Set ObjOutlook = CreateObject("outlook.application")
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)

    If pj = "Faux" Then Exit Sub
    If VarType(pj) = vbBoolean Then Exit Sub

    Corps = "Bonjour, " & "<br><br>" _
    & "1000ème TEST DE CETTE MERDEEEEEEEEEEEE " & "<br>" _
    & "je reste à votre disposition pour tous renseignement complémentaire " & "<br>" _

    With oBjMail

    .To = [A2].Value
    .CC = [A3].Value
    .Subject = "test 1, 2 .. 3 ? "
    .Attachments.Add pj
    .HTMLBody = ""
    .BodyFormat = 2
    .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
    .HTMLBody = Corps & oBjMail.HTMLBody
    .Send

    End With

    Kill "P:\AAA Test\" & [B2] & ".pdf"
    Application.DisplayAlerts = True

    End Sub

    Voilà, si j'ai réussi alors que je n'avais absolument AUCUNE notion en VBA avant cette semaine, juste grâce à l'aide de Mike (les explications que tu avais dans le premier VBA m'ont beaucoup aidé) et d'un peu de persévérance c'est que tout le monde peut réussir.

    Bonne journée !
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    essaye de simplifier en remplaçant l'adresse de la pièce jointe "P:\AAA Test\" & [B2] & ".pdf"
    par la syntaxe ActiveWorkbook.Path & "\" & [B2] & ".pdf" ce qui t'évitera de saisir le chemin du fichier et surtout de te tromper

    Sub PDFMAIL()
    Application.DisplayAlerts = False
    Dim ObjOutlook As Object
    Dim oBjMail
    Dim pj,Corps As String
    Sheets("Feuil3").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False _

    pj = ActiveWorkbook.Path & "\" & [B2] & ".pdf"

    Set ObjOutlook = CreateObject("outlook.application")
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)

    If pj = "Faux" Then Exit Sub
    If VarType(pj) = vbBoolean Then Exit Sub
    Corps = "Bonjour, " & "<br><br>" _
    & "1000ème TEST DE CETTE MERDEEEEEEEEEEEE " & "<br>" _
    & "je reste à votre disposition pour tous renseignement complémentaire " & "<br>" _

    With oBjMail
    .To = [A2].Value
    .CC = [A3].Value
    .Subject = "test 1, 2 .. 3 ? "
    .Attachments.Add pj
    .HTMLBody = ""
    .BodyFormat = 2
    .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
    .HTMLBody = Corps & oBjMail.HTMLBody
    .Send
    End With
    Kill ActiveWorkbook.Path & "\" & [B2] & ".pdf"
    Application.DisplayAlerts = True

    End Sub

    0
  13. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Salut Mike,

    Oui tu as raison écrire le chemin peut-être un problème, surtout que j'ai assez souvent l'erreur : Run time error : '-2147024773 (87007b) Document not Saved
    Et je ne sais absolument pas à quoi elle est du, puisque des fois l'erreur survient, et des fois le mail s'envoie sans soucis. Si tu as une idée, je suis preneur d'ailleurs.

    Par contre si j'ai choisit cette option, c'est que je pense exporter cette macro à d'autres documents et pour certains je vais devoir garder une copie de la pièce jointe (J'ai juste à supprimer la ligne "Kill ..." dans la macro) et avec ta syntaxe je ne sais pas où va se sauvegarder le fichier, ce qui peut-être problématique !

    Si tu as des solutions à ces problèmes (toi ou quelqu'un d'autre) je suis preneur !

    Merci d'avance
    0
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    "Run time error"= "erreur de délai d'exécution"
    tout dépend de la ligne qui génère l'erreur, il suffit de mettre un temporisateur de sorte à retarder d'une seconde l'application de la ligne afin de laisser le temps à la ligne précédente de terminer l'action

    cette syntaxe ActiveWorkbook.Path permet d'enregistrer la copie dans le même répertoire que le fichier source
    0
  15. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Merci pour ces précisions !

    Je viens d'essayer avec ta syntaxe mais l'erreur reste la même.

    La ligne qui génère l'erreur est :

    Sheets("RDV du jour").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Comment puis-je mettre un délai ?

    J'aurais une autre question pour toi, comment mettre un message de confirmation avant l'envoi du mail (Ex : une boite de dialogue qui survient au clic et qui demande "Êtes-vous sûr de vouloir envoyer ce mail ?" Oui - Non)

    Merci.
    0
  16. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Je me répète mais j'ai vraiment besoin d'aide...

    Voici mon VBA complet :

    Sub PDFMAIL()

    Application.DisplayAlerts = False

    Dim ObjOutlook
    Dim oBjMail
    Dim pj As String
    Dim Corps As String

    Sheets("RDV").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


    pj = ActiveWorkbook.Path & "\" & [B2] & ".pdf"

    Set ObjOutlook = CreateObject("outlook.application")
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)

    If pj = "Faux" Then Exit Sub
    If VarType(pj) = vbBoolean Then Exit Sub

    Corps = [D13].Value & vbCrLf & "<br>" _
    & [D14].Value & vbCrLf & "<br>" _
    & [D15].Value & vbCrLf & "<br>" _
    & [D16].Value & vbCrLf & "<br>" _
    & [D17].Value & vbCrLf & "<br>" _
    & [D18].Value & vbCrLf

    With oBjMail

    .To = [D5].Value
    .CC = [D7].Value
    .Bcc = [D9].Value
    .Subject = [D11].Value
    .Attachments.Add pj
    .HTMLBody = ""
    .BodyFormat = 2
    .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
    .HTMLBody = Corps & oBjMail.HTMLBody
    .Send

    End With

    Kill ActiveWorkbook.Path & "\" & [B2] & ".pdf"
    Application.DisplayAlerts = True

    Exit Sub
    errorHandler:
    MsgBox Err.Description

    MsgBox "Le mail a été bien envoyé !"

    End Sub


    Ce que j'ai mis en gras, c'est l'endroit où est localisé mon erreur, à savoir :
    VBA Runtime error : '-2147024773 (8007007b)

    Et pour infos : https://www.computerperformance.co.uk/

    D'après ce que j'ai compris, il manquerait quelque chose, un élément, un caractère ou je ne sais quoi dans cette partie de mon VBA.. Mais n'étant qu'un débutant je n'ai pas la moindre idée de ce que cela pourrait être.

    En espérant que quelqu'un puisse m'aider, merci.
    0
  17. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Problème réglé.

    Merci quand même.
    0