Note: The other languages of the website are Google-translated. Back to English

Comment envoyer un e-mail si la date d'échéance a été respectée dans Excel?

Comme le montre la capture d'écran ci-dessous, si la date d'échéance dans la colonne C est inférieure ou égale à 7 jours (par exemple, la date actuelle est le 2017/9/13), un e-mail est envoyé au destinataire spécifié dans la colonne A et le le contenu spécifié dans la colonne B est affiché dans le corps de l'e-mail. Comment pourriez-vous faire pour y parvenir? Cet article fournit un code VBA pour vous aider à accomplir cette tâche.

Envoyer un e-mail si la date d'échéance a été respectée avec le code VBA


Envoyer un e-mail si la date d'échéance a été respectée avec le code VBA

Veuillez procéder comme suit pour envoyer un e-mail de rappel si la date d'échéance a été respectée dans Excel.

1. appuie sur le autre + F11 touches simultanément pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. dans le Microsoft Visual Basic pour applications fenêtre, veuillez cliquer insérer > Module. Ensuite, copiez et collez le code VBA ci-dessous dans la fenêtre Module.

Code VBA: envoyer un e-mail si la date d'échéance est fermée dans Excel

Public Sub CheckAndSendMail()
'Updated by Extendoffice 2018/11/22
    Dim xRgDate As Range
    Dim xRgSend As Range
    Dim xRgText As Range
    Dim xRgDone As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xLastRow As Long
    Dim vbCrLf As String
    Dim xMailBody As String
    Dim xRgDateVal As String
    Dim xRgSendVal As String
    Dim xMailSubject As String
    Dim i As Long
    On Error Resume Next
    Set xRgDate = Application.InputBox("Please select the due date column:", "KuTools For Excel", , , , , , 8)
    If xRgDate Is Nothing Then Exit Sub
    Set xRgSend = Application.InputBox("Please select the recipients?email column:", "KuTools For Excel", , , , , , 8)
    If xRgSend Is Nothing Then Exit Sub
    Set xRgText = Application.InputBox("Select the column with reminded content in your email:", "KuTools For Excel", , , , , , 8)
    If xRgText Is Nothing Then Exit Sub
    xLastRow = xRgDate.Rows.count
    Set xRgDate = xRgDate(1)
    Set xRgSend = xRgSend(1)
    Set xRgText = xRgText(1)
    Set xOutApp = CreateObject("Outlook.Application")
    For i = 1 To xLastRow
        xRgDateVal = ""
        xRgDateVal = xRgDate.Offset(i - 1).Value
        If xRgDateVal <> "" Then
        If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
            xRgSendVal = xRgSend.Offset(i - 1).Value
            xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
            vbCrLf = "<br><br>"
            xMailBody = "<HTML><BODY>"
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Text : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & "</BODY></HTML>"
            Set xMailItem = xOutApp.CreateItem(0)
            With xMailItem
                .Subject = xMailSubject
                .To = xRgSendVal
                .HTMLBody = xMailBody
                .Display
                '.Send
            End With
            Set xMailItem = Nothing
        End If
    End If
    Next
    Set xOutApp = Nothing
End Sub

Notes: La ligne Si CDate (xRgDateVal) - Date <= 7 Et CDate (xRgDateVal) - Date> 0 Ensuite, dans le code VBA signifie que la date d'échéance doit être supérieure à 1 jour et inférieure ou égale à 7 jours. Vous pouvez le modifier selon vos besoins.

3. presse le Touche F5 pour exécuter le code. Dans la première apparition Kutools pour Excel boîte de dialogue, veuillez sélectionner la plage de colonnes de date d'échéance, puis cliquez sur le OK bouton. Voir la capture d'écran:

4. Puis le deuxième Kutools pour Excel boîte de dialogue apparaît, veuillez sélectionner la plage de colonnes correspondante qui contient les adresses e-mail des destinataires, puis cliquez sur le bouton OK bouton. Voir la capture d'écran:

5. Dans le dernier Kutools pour Excel boîte de dialogue, sélectionnez le contenu que vous souhaitez afficher dans le corps de l'e-mail, puis cliquez sur le OK .

Ensuite, un e-mail sera créé automatiquement avec le destinataire, l'objet et le corps spécifiés si la date d'échéance dans la colonne C est inférieure ou égale à 7 jours. Veuillez cliquer sur le Envoyer bouton pour envoyer l'e-mail.

Notes:

1. Chaque email créé correspond à une date d'échéance. Par exemple, si trois dates d'échéance répondent aux critères, trois e-mails seront créés automatiquement.

2. Ce code ne sera pas déclenché si aucune date ne répond aux critères.

3. Le code VBA ne fonctionne que lorsque vous utilisez Outlook comme programme de messagerie.


Articles Liés:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (124)
Noté 4.5 hors 5 · évaluations 1
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour le partage.


Comment ajouteriez-vous des entrées Cc ou plusieurs destinataires ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Brandon,

Désolé de commenter votre message sans réponse, mais avez-vous pu obtenir le code VBA pour envoyer un e-mail ?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai utilisé votre code VBA pour envoyer des e-mails basés sur une valeur de cellule mais cela ne fonctionne pas.
Jusqu'à l'étape 5, tout fonctionne mais aucun e-mail n'est envoyé. Est-ce que quelqu'un peut m'aider avec ça?
Ce commentaire a été minimisé par le modérateur sur le site
Me viene muy bien gracias por el aporte, solo me falta como puedo hacerlo automaticamente sin necesidad de hacerlo manualmente el envio del correo.
Ce commentaire a été minimisé par le modérateur sur le site
Ce code a gelé mon programme Excel lorsque je l'ai exécuté. Est-ce gourmand en mémoire ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Robert,
Le problème que vous avez mentionné n'apparaît pas dans mon cas. Puis-je avoir votre version Office ?
Ce commentaire a été minimisé par le modérateur sur le site
pouvons-nous entrer les détails une seule fois et les e-mails peuvent être envoyés automatiquement, au lieu de devoir toujours sélectionner les colonnes ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Diyaa,
Si vous ne souhaitez pas sélectionner manuellement les colonnes, veuillez appliquer le code VBA ci-dessous.
Remarque : Vous n'avez qu'à sélectionner la colonne des dates d'échéance après avoir appliqué le code.

Public Sub CheckAndSendMail()
'Mis à jour par Extendoffice 2017/9/14
Dim xRgDate comme plage
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone comme plage
Dim xOutApp en tant qu'objet
Estomper xMailItem en tant qu'objet
Dim xLastRow As Long
Dim vbCrLf As String
Estomper xMailBody en tant que chaîne
Dim xRgDateVal en tant que chaîne
Dim xRgSendVal As String
Dim xMailSubject As String
Dim I As Long
On Error Resume Next
Set xRgDate = Application.InputBox("Veuillez sélectionner la colonne de date d'échéance :", "KuTools For Excel", , , , , , 8)
Si xRgDate n'est rien, quittez Sub
xLastRow = xRgDate.Rows.Count
Définir xRgDate = xRgDate(1)
Définir xRgEnvoie = xRgEnvoie(1)
Définir xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
Pour I = 1 à xLastRow
xRgDateVal = xRgDate.Offset(I - 1).Value
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
xRgSendVal = xRgSend.Offset(I - 1).Value
xMailSubject = xRgText.Offset(I - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = "Bonjour" & vbNewLine & vbNewLine & _
"Ceci est la ligne 1" & vbNewLine & _
"C'est la ligne 2"
Définir xMailItem = xOutApp.CreateItem(0)
Avec xMailItem
.To = "Adresse e-mail"
.CC = ""
.BCC = ""
.Subject = "envoyer par test de valeur de cellule"
.Body = xMailBody
.Afficher 'ou utiliser .Envoyer
Terminer par
Définir xMailItem = Rien
Si fin
Suivant
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Je suis aussi plutôt débutant et j'aimerais poser une autre question pour votre super Sub.

Comment puis-je envoyer un e-mail uniquement si une certaine adresse e-mail se trouve dans la cellule concernée ?

J'en ai besoin, car dans mon outil Excel, j'ai implémenté des boutons pour chaque personne qui a besoin d'un rappel.

Merci beaucoup d'avance!!

Thomas
Ce commentaire a été minimisé par le modérateur sur le site
Salut Thomas,
Nous avons mis en ligne un article "Comment envoyer un e-mail aux adresses e-mail spécifiées dans les cellules d'Excel ?"
https://www.extendoffice.com/documents/excel/4717-excel-macro-send-email-to-address-in-cells.html
Peut-être trouverez-vous votre solution dans cet article.
Ce commentaire a été minimisé par le modérateur sur le site
J'en ai besoin pour travailler sur toutes les feuilles de calcul d'un classeur, la date future sera saisie manuellement dans la même cellule sur chaque feuille et de nouvelles feuilles sont créées quotidiennement. J'ai également besoin du nom de la feuille de calcul dans l'e-mail afin de savoir quelle feuille est due
Ce commentaire a été minimisé par le modérateur sur le site
Désolé, je ne peux pas vous aider.
Bienvenue à poster toute question sur Excel sur notre forum : https://www.extendoffice.com/forum.html. Vous obtiendrez plus de supports Excel de la part de nos professionnels ou d'autres fans d'Excel.
Ce commentaire a été minimisé par le modérateur sur le site
Ne le faites pas fonctionner. En utilisant Office 365, Outlook et Excel devraient être suffisamment serrés. Comme dans le message de "schou" il y a 4 mois, cela fonctionne jusqu'à l'étape 5 mais ensuite plus rien.
Une solution à cela ?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai Excel pour envoyer l'e-mail, mais puis-je le configurer pour qu'il envoie un e-mail chaque fois que j'ouvre Excel au lieu de sélectionner les colonnes à chaque fois.

J'ai un classeur de 24 pages, je cherche donc à envoyer automatiquement un e-mail lorsque le classeur est ouvert.


Merci beaucoup.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Voulez-vous dire vérifier automatiquement la date d'échéance dans le classeur et envoyer un e-mail lorsque le classeur est ouvert ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut les gars,


La macro est géniale mais je voudrais demander quelque chose - si vous avez quelqu'un sur la liste sans aucune date, comment modifier le code vba pour exclure ce type ? Maintenant, le code génère des e-mails même pour les gars sans aucune date.


Merci !
Ce commentaire a été minimisé par le modérateur sur le site
Salut Lvan,
Le code a été mis à jour avec la résolution du problème, veuillez essayer. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Mail génère automatiquement pour les colonnes avec des données vides. Moi aussi, j'aimerais avoir le code mis à jour.
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup pour la contribution. Je voudrais savoir comment utiliser la sélection de colonne fixe sans avoir à utiliser kutools ? c'est-à-dire, laisser les colonnes par défaut des dates, des reçus et des avertissements ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Le code VBA ci-dessous peut vous aider. Veuillez essayer.

Public Sub CheckAndSendMail()
'Mis à jour par Extendoffice 2018/11/22
Dim xRgDate comme plage
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone comme plage
Dim xOutApp en tant qu'objet
Estomper xMailItem en tant qu'objet
Dim xLastRow As Long
Dim vbCrLf As String
Estomper xMailBody en tant que chaîne
Dim xRgDateVal en tant que chaîne
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("C2:C4") 'Veuillez faire référence à la colonne de date d'échéance
Si xRgDate n'est rien, quittez Sub
Set xRgSend = Range("A2:A4") 'Veuillez référencer la colonne destinataires?
Si xRgSend n'est rien, quittez Sub
Set xRgText = Range("B2:B4") Entrez la colonne avec le contenu rappelé dans votre e-mail
Si xRgText n'est rien, quittez Sub
xLastRow = xRgDate.Rows.count
Définir xRgDate = xRgDate(1)
Définir xRgEnvoie = xRgEnvoie(1)
Définir xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
Pour i = 1 à xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
Si xRgDateVal <> "" Alors
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Définir xMailItem = xOutApp.CreateItem(0)
Avec xMailItem
.Sujet = xMailSujet
.To = xRgEnvoieVal
.HTMLBody = xMailBody
.Afficher
'.Envoyer
Terminer par
Définir xMailItem = Rien
Si fin
Si fin
Suivant
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Cher Crystal,

Merci pour votre partage.

Je suis débutant et j'ai un problème avec le code.

xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""

Le texte n'est pas aller à la nouvelle ligne.
S'il te plait peux-tu aider.

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Ni niti,
Vous devez ajouter la ligne vbCrLf = " " devant les froids.
Telle que :
vbCrLf = " "
xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Ce commentaire a été minimisé par le modérateur sur le site
Cher Crystal, Lors de la sélection de la colonne des dates, plusieurs cellules dans différentes colonnes peuvent-elles être sélectionnées ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
M. Crystal, lors de votre dernière conversation avec M. Ivan, il vous a demandé le code pour envoyer un e-mail à chaque fois que la feuille de calcul est ouverte au lieu d'entrer les codes à chaque fois.
J'ai besoin du même code, même situation, pouvez-vous m'aider s'il vous plaît?
Ce commentaire a été minimisé par le modérateur sur le site
Correctement, ce n'était pas avec M. Ivan, mais avec M. Austin.
Thank you.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'utilise une version modifiée de ce code, et je suis plutôt nouveau sur VBA. J'étais curieux de savoir s'il y avait une possibilité pour le moment où l'e-mail devait être envoyé, que la macro puisse marquer un X, ou si quelqu'un avait terminé, qu'un e-mail ne soit pas envoyé. J'espère que tout cela a du sens. Toute aide est très appréciée.

Petit historique, j'utilise cet outil pour exécuter une vérification de la date d'échéance à 30 jours, 60 jours et en retard. Je veux qu'un e-mail soit envoyé à 1 jours, 30 à 1 jours, puis en retard également. Je l'exécute à partir d'un script VB que j'ai écrit, afin de pouvoir l'automatiser quotidiennement. Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'utilise une version modifiée de ce code, et je suis plutôt nouveau sur VBA. J'étais curieux de savoir s'il y avait une possibilité pour le moment où l'e-mail devait être envoyé, que la macro puisse marquer un X, ou si quelqu'un avait terminé, qu'un e-mail ne soit pas envoyé. J'espère que tout cela a du sens. Toute aide est très appréciée. Petit historique, j'utilise cet outil pour exécuter une vérification de la date d'échéance à 30 jours, 60 jours et en retard. Je veux qu'un e-mail soit envoyé à 1 jours, 30 à 1 jours, puis en retard également. Je l'exécute à partir d'un script VB que j'ai écrit, afin de pouvoir l'automatiser quotidiennement. Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Monsieur,

C'est très utile. J'ai besoin de 2 autres améliorations dans les mêmes codes. Je dois cliquer sur le bouton d'envoi à chaque fois, ça va tant que j'ai 10 e-mails à envoyer, et si j'ai > 25 e-mails à envoyer en une seule journée. Veuillez donc me donner un code pour envoyer automatiquement un e-mail lors de la sélection de la date d'échéance, du destinataire, du sujet, etc.

Veuillez également me fournir le code pour ajouter également l'option "CC"


Merci

Sirène P
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Veuillez essayer le code VBA ci-dessous, j'espère pouvoir vous aider. Merci d'avoir commenté.

Public Sub CheckAndSendMail()
'Mis à jour par Extendoffice 2018/11/22
Dim xRgDate comme plage
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone comme plage
Dim xOutApp en tant qu'objet
Estomper xMailItem en tant qu'objet
Dim xLastRow As Long
Dim vbCrLf As String
Estomper xMailBody en tant que chaîne
Dim xRgDateVal en tant que chaîne
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Application.InputBox("Veuillez sélectionner la colonne de date d'échéance :", "KuTools For Excel", , , , , , 8)
Si xRgDate n'est rien, quittez Sub
Set xRgSend = Application.InputBox("Veuillez sélectionner les destinataires? Colonne email :", "KuTools For Excel", , , , , , 8)
Si xRgSend n'est rien, quittez Sub
Set xRgCC = Application.InputBox("Veuillez sélectionner les destinataires CC ? Colonne e-mail :", "KuTools For Excel", , , , , , 8)
Si xRgCC n'est rien, quittez Sub
Set xRgText = Application.InputBox("Sélectionnez la colonne avec le contenu rappelé dans votre e-mail :", "KuTools For Excel", , , , , , 8)
Si xRgText n'est rien, quittez Sub
xLastRow = xRgDate.Rows.Count
Définir xRgDate = xRgDate(1)
Définir xRgEnvoie = xRgEnvoie(1)
Définir xRgCC = xRgCC(1)
Définir xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
Pour i = 1 à xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
Si xRgDateVal <> "" Alors
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
xRgSendVal = xRgSend.Offset(i - 1).Value
xRgCCVal = xRgCC.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Définir xMailItem = xOutApp.CreateItem(0)
Avec xMailItem
.Sujet = xMailSujet
.To = xRgEnvoieVal
.Cc = xRgCCVal
.HTMLBody = xMailBody
.Envoyer
Terminer par
Définir xMailItem = Rien
Si fin
Si fin
Suivant
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,

Merci pour les codes car c'est très utile. Mais comment faire fonctionner le code si j'utilise outlook.office.com ?
Ce commentaire a été minimisé par le modérateur sur le site
dans le corps, je veux la valeur de la colonne a, b, c sous forme de tableau, comme la date d'expiration une fois atteinte dans la colonne du corps, je veux imprimer les détails des cellules a, b, c sous forme de tableau
Ce commentaire a été minimisé par le modérateur sur le site
Salut Dinesh BS,
Désolé, je ne peux pas vous aider. Bienvenue à poster toute question dans notre forum: https://www.extendoffice.com/forum.html.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je suis nouveau sur VBA. Existe-t-il un moyen d'exécuter automatiquement ce programme chaque fois que le fichier est ouvert ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour L Echols,
Pour exécuter automatiquement le code lorsque le fichier est ouvert, veuillez double-cliquer pour ouvrir la fenêtre de code ThisWorkbook (située dans la partie gauche de la fenêtre Microsoft Visual Basic pour Applications), sélectionnez Workbook dans la première liste déroulante, puis copiez le au-dessus du code VBA (sauf la première et la dernière ligne) dans la fenêtre de code et collez entre les deux lignes données. Voir la capture d'écran ci-jointe :
Ce commentaire a été minimisé par le modérateur sur le site
C'est génial. Je me demandais s'il existait un moyen d'exécuter le code sans avoir à sélectionner les valeurs KuTools à chaque fois ? Pour plus de clarté, j'ai saisi ce code et maintenant, chaque fois que j'ouvre le classeur, je dois toujours mettre en surbrillance les mêmes colonnes. Existe-t-il un moyen d'entrer le code pour exécuter une vérification sur les mêmes colonnes à chaque fois - tant qu'aucune modification du classeur n'a été apportée - pour exécuter la vérification et formuler un e-mail basé sur ladite vérification? Merci en avance.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Danny,
Veuillez essayer le code ci-dessous et modifier les plages selon vos besoins.

Public Sub CheckAndSendMail()
'Mis à jour par Extendoffice 2019/5/17
Dim xRgDate comme plage
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone comme plage
Dim xOutApp en tant qu'objet
Estomper xMailItem en tant qu'objet
Dim xLastRow As Long
Dim vbCrLf As String
Estomper xMailBody en tant que chaîne
Dim xRgDateVal en tant que chaîne
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Définir xRgDate = Range("C2 : C4")
Si xRgDate n'est rien, quittez Sub
Set xRgSend = Range("A2 : A4")
Si xRgSend n'est rien, quittez Sub
Définir xRgText = Range("B2:B4")
Si xRgText n'est rien, quittez Sub
xLastRow = xRgDate.Rows.Count
Définir xRgDate = xRgDate(1)
Définir xRgEnvoie = xRgEnvoie(1)
Définir xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
Pour i = 1 à xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
Si xRgDateVal <> "" Alors
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Définir xMailItem = xOutApp.CreateItem(0)
Avec xMailItem
.Sujet = xMailSujet
.To = xRgEnvoieVal
.HTMLBody = xMailBody
.Afficher
'.Envoyer
Terminer par
Définir xMailItem = Rien
Si fin
Si fin
Suivant
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
C'est génial. Je me demandais s'il existait un moyen d'exécuter le code sans avoir à sélectionner les valeurs KuTools à chaque fois ? Pour plus de clarté, j'ai saisi ce code et maintenant, chaque fois que j'ouvre le classeur, je dois toujours mettre en surbrillance les mêmes colonnes. Existe-t-il un moyen d'entrer le code pour exécuter une vérification sur les mêmes colonnes à chaque fois - tant qu'aucune modification du classeur n'a été apportée - pour exécuter la vérification et formuler un e-mail basé sur ladite vérification? Merci en avance.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Cristal,
J'ai un problème avec l'envoi automatique d'e-mails une fois le fichier ouvert. Par exemple, j'ai toutes les informations de date d'échéance sur Sheet1. Cependant, si j'enregistre et ferme le fichier alors que je travaillais sur Sheet2, dès que j'ouvre le fichier, les valeurs pour envoyer des e-mails seront basées sur Sheet2 et non sur Sheet1. Je n'ai ajouté que le module sur Sheet1 et ThisWorkbook. Je pense que le fait d'avoir le même vba sur ThisWorkbook déclenche l'envoi d'e-mails automatiques sur la feuille que je l'ai ouverte pour le moment. Comment puis-je restreindre le VBA pour extraire la valeur d'une feuille spécifique et également envoyer des e-mails lorsque le fichier est ouvert? Merci beaucoup pour votre aide à l'avance!
Ce commentaire a été minimisé par le modérateur sur le site
Je suis nouveau sur VBA. Existe-t-il un moyen d'exécuter automatiquement ce programme chaque fois que le fichier est ouvert ?
Ce commentaire a été minimisé par le modérateur sur le site
Oui avec


Sous-carnet de travail privé_Open ()
*Entrez le code ici*
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

J'ai une question,

Si je veux sélectionner une plage de cellules prédéterminée, comment puis-je modifier le code dans cette partie :

xLastRow = xRgDate.Rows.Count
Définir xRgDate = xRgDate(1)

Définir automatiquement les cellules ?

Je vous remercie :)
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Si vous ne souhaitez pas sélectionner manuellement des plages à chaque fois lors de l'application du code, veuillez utiliser le code ci-dessous.

Public Sub CheckAndSendMail()
'Mis à jour par Extendoffice 2019/12/10
Dim xRgDate comme plage
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone comme plage
Dim xOutApp en tant qu'objet
Estomper xMailItem en tant qu'objet
Dim xLastRow As Long
Dim vbCrLf As String
Estomper xMailBody en tant que chaîne
Dim xRgDateVal en tant que chaîne
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Définir xRgDate = Range("C2 : C4")
Si xRgDate n'est rien, quittez Sub
Set xRgSend = Range("A2 : A4")
Si xRgSend n'est rien, quittez Sub
Définir xRgText = Range("B2:B4")
Si xRgText n'est rien, quittez Sub
xLastRow = xRgDate.Rows.Count
Définir xRgDate = xRgDate(1)
Définir xRgEnvoie = xRgEnvoie(1)
Définir xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
Pour i = 1 à xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
Si xRgDateVal <> "" Alors
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Cher " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Texte : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Définir xMailItem = xOutApp.CreateItem(0)
Avec xMailItem
.Sujet = xMailSujet
.To = xRgEnvoieVal
.HTMLBody = xMailBody
.Afficher
'.Envoyer
Terminer par
Définir xMailItem = Rien
Si fin
Si fin
Suivant
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Buenos jours ! ¿que modificación tendría que realizar para dejar seleccionadas las celdas con la information de fecha, texto y correo y no tener que seleccionarlas cada vez que se activa la macro?

también me gustaría saber como introducir un CC, es decir, poder poner a otra persona en copia del correo. Gracias !
Ce commentaire a été minimisé par le modérateur sur le site
Hola ! Pudiste solucionar esto? Estoy necesitando lo mismo.. gracias !
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL