VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

JeremK

XLDnaute Nouveau
Bonjour,

je suis tout nouveau ici, et j'espère que ma demande n'a pas encore été discuté autre part, et si c'est le cas je m'en excuse.

Donc je vous explique:

Je suis étudiant, et je fais parti du BDE (bureau des étudiants). On organise un voyage au ski dans 2 mois, et on est en train de faire les inscriptions.

Voici en gros à quoi ressemble le tableau excel:
6ophzyo.gif


Je voudrais créer une macro qui envoi à l'adresse email dans la case I2 le contenu de la ligne 2 des cellules B2 à J2.
Ensuite envoi à l'adresse email I3, le contenu de B3 à J3
Ceci permettrait à chaque étudiant de me dire si oui ou non le contenu listé dans la feuille excel est exact.

Après je ne sais pas si ceci est possible, et j'avoue ne connaitre rien du tout à VBA pour l'instant. Je compte trouver des tutoriels sur internet ou m'acheter un livre pour apprendre très bientôt.

Jérémie
 

news

XLDnaute Impliqué
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

Re:

ci-joint fichier explicite,
dont certaines données sont repris de liens, fil de sujet du forum,

il manque une liste déroulante et d'y ajouter les variables dans un module, macro, afin de sélectionner à qui envoyer un email,
 

Pièces jointes

  • sent_to_email.xls
    35.5 KB · Affichages: 404

news

XLDnaute Impliqué
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

re:

autre version d'envoyer de données par email
 

Pièces jointes

  • sent_to_email,02.xls
    36 KB · Affichages: 325
  • sent_to_email,02.xls
    36 KB · Affichages: 310
  • sent_to_email,02.xls
    36 KB · Affichages: 340

news

XLDnaute Impliqué
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

Bonjour à tous du forum,

essaie procédure et astuces suivantes, qui résoud ton envoi email de certaines lignes à un destinataire différent,

et dis nous si ceci le résoud,

repris données de Ron, dont des explications très détaillées d'envoyer un email,

bonne journée encore,
 

Pièces jointes

  • Install Outlook Mail Template.zip
    33.7 KB · Affichages: 191

JeremK

XLDnaute Nouveau
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

Merci encore pour ton aide NEWS.

Mais là je suis parti sur une autre approche

Je préfererais utiliser Outlook Express pour envoyer mes emails

Donc j'ai ça comme macro:
Code:
Sub Envoi_email()
'
' Macro pour envoyer un email à chaque adresse
'

On Error Resume Next
MsgBox "erreur"

Dim corps As String, assu As String
Dim tel As String

If Range("J2").Value <> "" Then tel = Range("J2").Value Else: tel = "non renseigné"
End
MsgBox Range("J2").Text

If Range("F2").Value = "RAPP + FIS" Then assu = "Rappatriement + Interruption de séjour" Else: assu = Range("F2").Value
End

corps = "Nom: " & Range("B2").Value & vbNewLine & _
        "Prénom: " & Range("C2").Value & vbNewLine & _
        "N° de téléphone: " & tel & vbNewLine & _
        "Location de matériel: " & Range("D2").Value & vbNewLine & _
        "Food Pack (classique ou sans porc):" & Range("E2").Value & vbNewLine & _
        "Assurance: " & assu & vbNewLine & _
        "Assurance annulation: " & Range("G2").Value
        


Shell "C:\Program Files\Outlook Express\msimn.exe " & "/mailurl:mailto:" _
& Range("I2").Value & "?subject=" & "Infos AVEM: Récapitulatif de l'inscription pour le ski" & _
"&Body=" & vbNewLine & "Bonjour " & Range("C2").Value & vbNewLine & "voici le récapitulatif de votre inscription pour le ski." & vbNewLine & vbNewLine & corps & vbNewLine & "Veuillez répondre à cet email en indiquant les erreurs, ou alors que tout est correct" & vbNewLine & vbNewLine & "Jérémie, chargé de communication de l'AVEM"


End Sub

Je sais que c'est bourré d'erreurs de programmation.

Mais voici en gros ce que j'ai écris devrait faire

Code:
Si la cellule J2 n'est pas vide, alors mettre le contenu de la cellule J2 dans la variable "tel". Sinon mettre "non renseigné" dans la variable "tel".

Si la cellule F2 contient "RAPP + FIS" alors mettre "Rappatriement + interruption de séjour" dans la variable "assu". Sinon mettre le contenu de F2 dans la variable "assu".

[I]Pour la variable Corps, voici ce que je veux que ça me donne, en prenant tou ce qui est dans la ligne 2:[/I]

Nom: PROT
Prénom: Jean Pierre
N° de téléphone: 06....
Location de Matériel: OR PACK Surf
Food Pack (classique ou sans porc): SANS PORC
Assurance: Rappatriement + interruption de séjour
Assurance annulation: NON

Et après, une fois que cette macro sera fonctionnelle, je ferais une boucle pour que ça recommence l'opération pour les lignes I à J que je définierais moi même en modifiant la macro.

Avec la macro que je viens d'écrire le problème est qu'elle ne s'execute pas.
 

Pièces jointes

  • Inscription ski avec macro.zip
    18.5 KB · Affichages: 103
Dernière édition:

JeremK

XLDnaute Nouveau
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

Bon en cherchant un peu, merci à un de mes profs qui m'a prêté un livre sur le VBA,
j'ai put corriger la plupart des erreurs que j'avais dans la macro.

Maintenant il me reste juste à définir une boucle (ça je sais faire), mais le problème c'est que à la place de tous les "2" (J2, I2, B2 par exemple), je veux écrire Ji, Ii, Bi avec le paramètre i de la boucle For i = ... next i

Quelqu'un pourrait m'aider juste pour ça?

Code:
Sub Envoi_email()
'
' Macro pour envoyer un email à chaque adresse
'

'On Error Resume Next


Dim corps As String, assu As String, corps2 As String
Dim tel As String


If Range("J2").Value <> "" Then         'teste si le n° de téléphone a été renseigné
tel = Range("J2").Value
Else
tel = "non renseigné"
End If

If Range("F2").Value = "RAPP + FIS" Then            'RAPP + FIS ne voulant rien dire aux autres
assu = "Rappatriement + Interruption de séjour"     'je le change quand il apparait
Else
assu = Range("F2").Value
End If


'ici, la définition du corps du message avec les variables
corps = "Nom: " & Range("B2").Value & vbNewLine & _
        "Prénom: " & Range("C2").Value & vbNewLine & _
        "N° de téléphone: " & tel & vbNewLine & _
        "Location de matériel: " & Range("D2").Value & vbNewLine & _
        "Food Pack (classique ou sans porc): " & Range("E2").Value & vbNewLine & _
        "Assurance: " & assu & vbNewLine & _
        "Assurance annulation: " & Range("G2").Value
        
'ici la définition du corps final avec bonjour, la suite, puis message de fin
corps2 = "Bonjour " & Range("C2").Value & vbNewLine & _
        "voici le récapitulatif de votre inscription pour le ski." & vbNewLine & vbNewLine & _
        corps & vbNewLine & vbNewLine & _
        "Veuillez répondre à cet email en indiquant les erreurs, ou alors que tout est correct" & vbNewLine & vbNewLine & _
        "Jérémie, chargé de communication de l'AVEM"

'commande pour envoyer l'email avec outlook express
Shell "C:\Program Files\Outlook Express\msimn.exe " & "/mailurl:mailto:" _
& Range("I2").Value & "?subject=" & "Infos AVEM: Récapitulatif de l'inscription pour le ski" & _
"&Body=" & corps2

End Sub
 

JeremK

XLDnaute Nouveau
Re : VBA: Macro pour envoyer une ligne à l'email spécifié dans cette ligne

Bonsoir,

j'ai réussi à finir la macro, et elle fonctionne sans problème, la voici pour ceux que ça pourrait intéresser.

Code:
Sub Envoi_email()
'
' Macro pour envoyer un email à chaque adresse
'

'On Error Resume Next


Dim corps As String, assu As String, corps2 As String
Dim tel As String
Dim rgNom As Range, rgPrénom As Range, rgEmail As Range
Dim i As Long

For i = 2 To 3                               'pour l'instant envoi uniquement à l'email 2 et 3
If Cells(i, "J").Value <> "" Then         'teste si le n° de téléphone a été renseigné
tel = Cells(i, "J").Value
Else
tel = "non renseigné"
End If

If Cells(i, "F").Value = "RAPP + FIS" Then            'RAPP + FIS ne voulant rien dire aux autres
assu = "Rappatriement + Interruption de séjour"       'je le change quand il apparait
Else
assu = Cells(i, "F").Value
End If


'ici, la définition du corps du message avec les variables
corps = "Nom: " & Cells(i, "B").Value & vbNewLine & _
        "Prénom: " & Cells(i, "C").Value & vbNewLine & _
        "N° de téléphone: " & tel & vbNewLine & _
        "Location de matériel: " & Cells(i, "D").Value & vbNewLine & _
        "Food Pack (classique ou sans porc): " & Cells(i, "E").Value & vbNewLine & _
        "Assurance: " & assu & vbNewLine & _
        "Assurance annulation: " & Cells(i, "G").Value
        
'ici la définition du corps final avec bonjour, la suite, puis message de fin
corps2 = "Bonjour " & Cells(i, "C").Value & vbNewLine & _
        "voici le récapitulatif de votre inscription pour le ski." & vbNewLine & vbNewLine & _
        corps & vbNewLine & vbNewLine & _
        "Veuillez répondre à cet email en indiquant les erreurs, ou alors que tout est correct" & vbNewLine & vbNewLine & _
        "Jérémie, chargé de communication de l'AVEM"

'commande pour envoyer l'email avec outlook express
Shell "C:\Program Files\Outlook Express\msimn.exe " & "/mailurl:mailto:" _
& Cells(i, "I").Value & "?subject=" & "Infos AVEM: Récapitulatif de l'inscription pour le ski" & _
"&Body=" & corps2

'commande pour mettre en rouge les adresses emails utilisées
'rgEmail(i).Font.ColorIndex = 3

Next i
End Sub

Je suis assez content d'avoir réussi à produire ce résultat en 2 jours sachant que je n'avais jamais utilisé VBA auparavant.

Merci encore à NEWS pour ton aide, même si le code que tu m'as transmis ne me sert à rien dans ma macro finale, en étudiant ton code, j'ai appris énormément.

Prochaine étape: créer un email qui s'envoi automatiquement avec Outlook Express.
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch