Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 envoi de mail en automatique en fonction de plusieurs menus deroulants

mathieu20

XLDnaute Nouveau
Bonjour,

Je souhaiterais modifier le code ci dessous afin de pouvoir

envoyer un mail en automatique au personnes concernées lorsque les initiales sont renseignées en colonne J, M, P, U

Recevoir une reponse lorsque le sujet est traité pour chaque etape lorsque les colonnes K, N, Q, V sont renseignées avec en destinataire la personne dont les initiales figure en colonne J

Est ce possible d ouvrir un fichier lorsque la colonne G pas a "OUI" ?

Merci


Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRgSel As Range
Dim xOutApp As Object, xMailItem As Object
Dim xMailBody$, Derlig&, Var_A_qui$, Var_Objet$

On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Derlig = Range("M" & Rows.Count).End(xlUp).Row

Set xRg = Range("M3:M" & Derlig)
Set xRgSel = Intersect(Target, xRg)



Var_Objet = Range("A" & xRgSel.Row).Value

' liste des variables pour les adresses mails
Select Case xRgSel.Value
Case "HCH"
Var_A_qui = "HCH@Yahoo.com"
Case "HSE"
Var_A_qui = "HSE@Yahoo.com"
Case "ICE"
Var_A_qui = "ICE@Yahoo.com"
Case "EVI"
Var_A_qui = "EVI@Yahoo.com"
Case "LCA"
Var_A_qui = "LCA@Yahoo.com"
Case "JDE"
Var_A_qui = "JDE@Yahoo.com"
Case "CMA"
Var_A_qui = "CMA@Yahoo.com"
Case "MDU"
Var_A_qui = "MDU@Yahoo.com"
Case "PHC"
Var_A_qui = "PHC@Yahoo.com"
Case "EVA"
Var_A_qui = "EVA@Yahoo.com"
Case "CBE"
Var_A_qui = "CBE@Yahoo.com"


Case Else
MsgBox "Pas trouvé le bon destinataire": Exit Sub 'Facultatif si aucune adresse mail trouvée
End Select

ActiveWorkbook.Save
If Not xRgSel Is Nothing Then
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
'texte dans le corp du message
xMailBody = "Merci de créer la FIA, la cellule " & xRgSel.Address(False, False) & " a été renseignée le " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & " par " & Environ$("username") & "."

With xMailItem
.To = Var_A_qui '"adresse mail en fonction de la variable"
.Subject = Var_Objet & " Action a effectuer " 'remonte la valeur dans la cellule A & " Action a effectuer "
.body = xMailBody
.Display
End With
End If

Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing

Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • test tracker VBA.xlsm
    25.9 KB · Affichages: 11

mathieu20

XLDnaute Nouveau
Pour les initiales, je pense avoir touvé

Set xRg = Range("G3:G" & "M3:M" & "J3:J" & "P3" & "u3:u" & Derlig)

Il me manque donc le mail lorsque la date est renseigné avec le destinataire qui est en colonne "F3
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour @mathieu20

Avec ceci je pense que tu vas avoir une belle erreur !
Set xRg = Range("G3:G" & "M3:M" & "J3:J" & "P3" & "u3:u" & Derlig)

Question :
1)
envoyer un mail en automatique au personnes concernées lorsque les initiales sont renseignées en colonne J, M, P, U
Le mail est envoyé UNIQUEMENT lorsque toutes les cellules d'une ligne sont remplies ?
Exemple : J3 + M3 + P3 + U3 sont toutes remplies le mail est envoyé

2)
Recevoir une reponse lorsque le sujet est traité pour chaque etape lorsque les colonnes K, N, Q, V sont renseignées avec en destinataire la personne dont les initiales figure en colonne J
Idem
Le mail est envoyé UNIQUEMENT lorsque toutes les cellules d'une ligne sont remplies ?
Exemple : K3 + N3 + Q3 + V

3)
Est ce possible d ouvrir un fichier lorsque la colonne G pas a "OUI" ?
J'ai pas compris cette phrase quelle rapport avec les envois de mail ?

*Pour les questions 1 et 2 si l'envoi du mail est des qu'une cellule J M P V ou K N Q V est rempli tu vas être noyé par les mails !!!!

@Phil69970
 

mathieu20

XLDnaute Nouveau
Bonjour Phil69970

Oui j ai vu apres pour l erreur, merci

Pour les questions 1 et 2, le mail est envoyé pour chaque cellules mais a des personnes differentes en fonction des intiliales qui y figure

Pour la question 3, je voudrais que l envoi de mail se fasse a partir d un autre fichier en lien avec celui ci

Je pense qu il faudra un autre post pour cette question
 

Phil69970

XLDnaute Barbatruc
Re

@mathieu20

Je n'ai pas compris ta réponse aux questions 1 et 2

Je reformule

Chaque fois qu'une valeur est rentrée
Si 1 valeur en rentré en J3 j'envoie un mail à 1 personne x
Si 1 valeur en rentré en M3 j'envoie un mail à 1 personne y
Si 1 valeur en rentré en U3 j'envoie un mail à 1 personne z etc....

Mais si j'ai déjà rempli J3 et que je rempli M3 je renvoi à x et y etc.... mais cela va vite devenir infernal
*il faudra peut être des colonnes supplémentaire es tu d'accord ?

Ou bien

Le mail est envoyé UNIQUEMENT lorsque toutes les cellules d'une ligne sont remplies ?

Au 4eme ou 5eme mail de suite que je reçois si je travaille avec toi j'arrive dans ton bureau et/ou je me débrouille pour mettre tes mails en spam.
Autre variante toujours à titre perso tu me pourris ma messagerie je me débouille pour pourrir TA messagerie sans aucun état d’âme et quelque soit ton niveau hiérarchique.
Donc réfléchis bien sur le volume de mail que cela fait et l'utilité finale ==> trop de mail tue les mails

@Phil69970
 

mathieu20

XLDnaute Nouveau
Re

Chaque fois qu'une valeur est rentrée
Si 1 valeur en rentré en J3 j'envoie un mail à 1 personne x
Si 1 valeur en rentré en M3 j'envoie un mail à 1 personne y
Si 1 valeur en rentré en U3 j'envoie un mail à 1 personne z etc....

Oui c est bien ca !
Par contre on ne renvoi pas de mail au destinataire des cellules precedaments remplies
En fait les colonnes J M P V sont des demandes d actions de la part d un pilote (designé en colonne J) auprès d autres intervenant

Les colonnes K N Q V sont renseignées par les intervenants apres leurs actions et le pilotes doit en etre informé a chaque fois pour declancher l action suivante
 

mathieu20

XLDnaute Nouveau
Re


Je préfèrerais éviter l’ajout de colonne mais s’il n’y pas d’autre choix….
Il faut que le fichier soit simple à gérer


Le pilote ajoute simplement des initiales pour déclencher les envois de mails et donc les actions à mener, et les intervenant ajoute la date pour répondre que la tache a été effectuée
 

Phil69970

XLDnaute Barbatruc
@mathieu20

Si il y a une ou des colonnes supplémentaires c'est juste pour pouvoir stocker une ou des valeurs pour que la macro s'en serve mais en aucune façon pour que les utilisateurs s'en servent.

Donc pour les utilisateurs cela sera transparent il me faut juste connaitre la dernière colonne utilisée de ton fichier sur le fichier que tu as fourni c'est la colonne AA , tu confirmes ?

@Phil69970
 

mathieu20

XLDnaute Nouveau
@Phil69970

Bonjour @Phil69970, Je voulais savoir si tu pensais avoir le temps de regarder ma demande avant le milieu de semaine prochaine?
Je vais devoir mettre en place mon fichier en fin de semaine prochaine, si tu n as pas le temps, je vais me servir de ma version actuelle

Merci a toi, excellent week end
 

Phil69970

XLDnaute Barbatruc
Bonjour @mathieu20

Avec un peu .... beaucoup ... de retard je te propose ce fichier, j'ai revu beaucoup de chose et j'ai mis quelques commentaires dans le code VBA

Aucune colonne supplémentaire mais j'ai rajouté un onglet pour stocker les adresses mails.

Comment ça fonctionne :
Lors d'un changement dans les cellules
==> J3 + M3 + P3 + U3
==> K3 + N3 + Q3 + V3
La macro recherche l'adresse mail qui correspond à l’initiale de la personne ainsi que la ligne du projet correspondante et le transmet au reste de la macro pour envoi du mail.

Mais quid des colonnes
Et la colonne R et X ???
Et la colonne S et Y ???

Merci de ton retour

@Phil69970
 

Pièces jointes

  • Tracker VBA V1.xlsm
    32.4 KB · Affichages: 5
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…