Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

audreync

XLDnaute Nouveau
Bonjour à tous,

Je suis nouvelle sur ce forum et novice en macro sur VBA. J'ai tout essayé avant de vous écrire (créer ou copier des macros) mais je n'y arrive pas....
J'aimerai créer une macro pour qu'à chaque création de ligne, un mail soit envoyé automatiquement à l'agent nommé en colonne I et à son adresse mail est en colonne R

Avec un texte bateau du genre

"Bonjour [Agent 1 (colonne I)]

Suite à un(e) [ Type (colonne A)]
Vous avez une nouvelle action HSE :[ Texte (colonne G)]

....................................."

Je vous met un extrait du fichier ou je créer les lignes.

Par avance, merci de vos réponses.
 

Pièces jointes

  • SUIVI ACTIONS HSE MN.xlsm
    179.9 KB · Affichages: 703
  • SUIVI ACTIONS HSE MN.xlsm
    179.9 KB · Affichages: 838
  • SUIVI ACTIONS HSE MN.xlsm
    179.9 KB · Affichages: 891

adel53

XLDnaute Occasionnel
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Voici le fichier
La macro fait ce que tu souhaites avoir il suffit de te mettre sur la ligne qui t'intéresse et en appuyant sur ctrl+m le mail est généré.
Cordialement
 

Pièces jointes

  • SUIVI ACTIONS HSE MN.xlsm
    181.6 KB · Affichages: 1 692
  • SUIVI ACTIONS HSE MN.xlsm
    181.6 KB · Affichages: 2 005
  • SUIVI ACTIONS HSE MN.xlsm
    181.6 KB · Affichages: 2 220

audreync

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Super nickel! C'est pile poil ce qu'il me fallait!
J'ai réussi à adapter le texte, je vais gagner un temps fou!

Par contre dans le texte que j'ai rajouté, j'aimerai enlever l'espace entre "Cellule HSE" et "Tèl", avoir juste une mise à la ligne, mais pas de saut de ligne:

La cellule HSE" & vbCrLf & " <br/><br/> Téls: 47.82.40 - 47.82.51 - 78.14.80"

Qu'est ce qu'il faut que j'enlève ou que je rajoute?

Encore merci
 

Notorious

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Bonjour audreync, Bonjour adel53 !

Je naviguai sur le forum à la recherche d'informations pour mon fichier Excel et je suis tombé sur cette discussion !
Le sujet m’intéresse carrément, car je dois également créer un fichier comme le tien (pour QSE aussi). Je me permet donc de poser une petite question.

Lorsque une nouvelle ligne est instruite, je dois effectuer un envoi de mail automatique à une personne parmi une cinquantaine. Le choix de cette personne se fait via une information (son E-mail) contenue dans une cellule.

Jusqu'ici je suppose que cela rejoint ton projet audrey, j'ai donc essayé d'adapter la formule d'adel53 à mon fichier mais je ne reçoit pas d'E-mail.
J'ai inséré le code modifié dans un nouveau module, comme sur le fichier d'audrey. Mais peut être devrais-je l'insérer dans mon Userform.

Je suis sur Excel 2003, pourtant mon fichier ne m'indique aucune source d'erreur, rien ne bugue.!

l'un d'entre vous saurais t'il d'où cela peut-il venir ? Ou bien comment gérer l'envoi de mail auto de la même manière que celle utilisée pour audrey, mais adaptée à 2003?

Ca me retirai une belle épine- que dis-je, un baobab - du pied ! :D

Notorious
 
Dernière édition:

adel53

XLDnaute Occasionnel
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Bonjour
@Audreync La balise br et vbCrLf servent à faire un retour à ligne. Donc à mon avis le plus simple est de faire
", vous avez une nouvelle action HSE : " & Cells(i, 7) & "Téléphone :" & cells(i,x) &
En remplacant le numéro de la colonne où tu as le téléphone.
@Notorious Bonjour ami QSE Peux tu joindre ton fichier pour que je regarde. On va essayer de trouver une solution ensemble
Cordialement
 

Notorious

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Re-bonjour adel53 !

J'ai fait au plus vite, en supprimant des infos confidentielles etc.
Voici le fichier exemple en pièce jointe.
Les détails du problème sont dans l'onglet "description du probleme"

En réalité je pense qu'on peut fonctionner de telle manière que :

- Ou bien le formulaire "créer une action" est rempli, puis validé (et les infos sont transmises dans le fichier aux colonnes adéquates), et un E-mail est envoyé à l'aide de l'adresse mail du destinataire située dans la textbox1

- Ou alors, on valide le formulaire, les informations sont remplies dans le fichier, ce qui crée une modification du fichier (remplissage des colonnes B à Q). De cette modification du fichier, s'engendre une macro qui détecte les modifs et qui envoie un E-mail au destinataire (cellule située en K)

Dans l'un des cas on utilise l'information d'une textbox, et dans l'autre on utilise l'info située dans une cellule d'un fichier...

Je pense qu'il y a des solutions !

Bon appétit ! :D
Notorious
 

Pièces jointes

  • projet envoi de mail notorious.xls
    257.5 KB · Affichages: 407
  • projet envoi de mail notorious.xls
    257.5 KB · Affichages: 368
  • projet envoi de mail notorious.xls
    257.5 KB · Affichages: 322

adel53

XLDnaute Occasionnel
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Voici le fichier avec mes modifications le mail se génère lors de la validation.
Il faut penser à activer la référence microsoft outlook si jamais tu as un souci
 

Pièces jointes

  • projet envoi de mail notorious.xls
    250.5 KB · Affichages: 361
  • projet envoi de mail notorious.xls
    250.5 KB · Affichages: 497
  • projet envoi de mail notorious.xls
    250.5 KB · Affichages: 480

Notorious

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Hmmm.. j'ai essayé et cela me met un évènement "erreur de compilation".. (voir photo jointe)
Ce code fonctionne t'il sous 2003 ? Ou bien j'ai du faire une erreur de manip et j'en suis désolé !
Cela bug a la ligne rouge

Dim i As Integer, dlg As Integer
Dim ol As Object, olmail As Object

Set ol = CreateObject("Outlook.Application")
Set olmail = ol.Application.CreateItem(olMailItem)


With olmail
dlg = Sheets("FCA INTERNE").Range("B500").End(xlUp).Row
.To = Cells(dlg, 7)
.Subject = "Nouvelle réclamation client à traiter "
.HTMLBody = "Bonjour " & Cells(dlg, 10) & ",<br/><br/> Suite à une demande de " & Cells(dlg, 4) & ", vous avez une nouvelle réclamation client numéro : " & Cells(dlg, 1) & vbCrLf & " .<br/><br/>Cordialement."
.Display
End With
 

Pièces jointes

  • projet ou bibliothèque introuvable.jpg
    projet ou bibliothèque introuvable.jpg
    37.5 KB · Affichages: 469

Notorious

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Je dois t'avouer que je ne sais pas trop à quoi cela correspond réellement ! :eek:
Es-ce une variable a déclarer dans mon VBA ou bien est ce que je dois activer la référence sous outlook?
 

adel53

XLDnaute Occasionnel
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Il faut aller dans visual basic editor et tu vas dans outils => références => et dans la liste tu cherches microsoft outlook xxx object library
le xx est à remplacer avec ta version d'office.
 

Notorious

XLDnaute Nouveau
Re : Créer une macro pour envoyer un mail avec excel 2010 à chaque création de ligne

Je teste cela demain dès 7h00, je te tiendrai au courant !
Pourrais tu, si tu as le temps, m'expliquer les termes du code que tu m'a passé au départ? que je puisse apprendre et pourquoi pas les réutiliser, et aider les autres !

Notamment cette partie :

With olmail
dlg = Sheets("FCA INTERNE").Range("B500").End(xlUp).Row
.To = Cells(dlg, 7)
.Subject = "Nouvelle réclamation client à traiter "
.HTMLBody = "Bonjour " & Cells(dlg, 10) & ",<br/><br/> Suite à une demande de " & Cells(dlg, 4) & ", vous avez une nouvelle réclamation client numéro : " & Cells(dlg, 1) & vbCrLf & " .<br/><br/>Cordialement."
.Display
End With

En tous cas merci pour le coup de main ! Je sens que je touche au but !! :D
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg