Macro envoi de mail sous conditions (demande option supp)

Adm93420

XLDnaute Nouveau
Bonjour,
Je me suis rendu compte que de nombreux post existaient sur ce sujet et j'ai bien tenté d'adapter certains à mes besoins sans résultats. Je suis vraiment débutant VB. C'est pourquoi je me permets ce post.

Nous avons mit en place un classeur de suivi de demandes d'intervention informatique pour les salariés.
(pour avoir un suivi et un histo des demandes)

Mes besoins:
Lorsqu'un salarié rempli sur une ligne sa demande d'inter (Partie Mauve) je souhaiterai:
qu'un mail soit envoyé à la direction pour accord (toujours les 2 mêmes destinataires) (les adresses sont en A1 et A2)
contenant:
un sujet fixe (demande d'intervention informatique)
un texte : Le demandeur (colonne A)
Le détail de sa demande (colonne B)

Mais je ne vois pas comment déclenché l'envoi du mail (j'avais pensé en cochant la cellule en colle D par exemple mais j'ignore si c'est faisable).

ENSUITE: une fois que la direction a validé la demande, elle rempli la date (partie Rose) et pareil un mail est envoyé
au service informatique (adresse en B1) avec les mêmes infos qu'au dessus.

Merci par avance pour les renseignements ou l'aide apportée.

Cdt.
 

Pièces jointes

  • Demandes informatiques JLM.xlsx
    11.7 KB · Affichages: 24
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Macro envoi de mail sous conditions

Re,

Si c'est avec Outlook, vois le fichier ci-dessous.
L'utilisateur rentre les données sur la même ligne en colonne A et B, lorsqu'il sélectionne la colonne C toujours sur la même ligne : la date s'inscrit toute seule et le mail est envoyé.
Pour l'envoi au service informatique, à la sélection de la ligne souhaitée et de la colonne E : la date s'inscrit et le mail est envoyé.

Pour le 1, il faut impérativement que les colonnes A et B soient remplies.
Pour le 2, il faut que la colonne C soit remplie et que la colonne E soit vide.

A+

Martial
 

Pièces jointes

  • Demandes informatiques JLM.xlsm
    19.3 KB · Affichages: 25

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions

Bonsoir Yahoo,
Effectivement nous utilisons bien bien Outlook 2013.
Je viens de tester ta Macro. Formidable, cela répond vraiment à nos besoins.
Je te remercie vraiment pour ton travail,

Si tu n'y vois pas d’inconvénients, Je vais tenter de l'adapté pour que le service Informatique envoi un mail avec la date d'intervention en (colonne G) avec les mêmes conditionnels que toi:
Envoi du mail par le service info, seulement si C et E sont remplies.

Je transforme mon post initiale en [Résolu]

Bonne soirée.
 

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions (demande option supp)

Bonjour,
Comme vu dans les posts précédents, j'ai reçu un super coup de main de YALOO qui m'a codé une macro qui colle tout à fait à nos besoins. comme vous le verrez dans le fichier joint, j'ai quelques peu modifié la macro pour l'adapter, mais je bloque sur les deux points suivants:
1er:
Dans la partie de code ci-dessous, il a intégré des fonctions (EN VERT) pour récupérer dans le corps du mail les données des cellules en colonne A "demandeur" et colonne B détail.
Je voudrais rajouter la partie en rouge pour récupérer les données de la colonne E "remarque"
mais en ajoutant simplement ces parties ça bug, il doit manquer autre chose.
Quelqu'un peu t'il m'expliquer la procédure que je comprenne comment faire.

Private Sub EnvoiA(dest$, dem$, dét$, rem$)
Dim OApp As Object
Dim OMail As Object
Set OApp = CreateObject("Outlook.Application")
Set OMail = OApp.CreateItem(0)

With OMail
.To = dest
.Subject = "Accord pour demande d'assistance informatique"
.Body = "Bonjour," & vbCr & vbCr & _
"Voici une demande d'assistance informatique transmise par " & dem & vbCr & _
"Merci par avance, pour sa prise en compte et traitement dans les meilleurs délais." & vbCr & vbCr & _
"Détails de la demande:" & vbCr & _
dét & vbCr & vbCr & _
rem & vbCr & vbCr & _
"Cordialement," & vbCr & vbCr & _
"La Direction." & vbCr & vbCr & _
.Display 'pour visualiser avant envoi
'.Send 'pour envoyer directement
End With
Set OMail = Nothing
Set OApp = Nothing
End Sub


2e:
Dans la même partie de code je voudrai rajouté en Cc: l'adresse du demandeur de la colonne A
j'ai fais une BdD en colonne K et L qui pourrait permettre de comparer la cellule en colonne A et les données en colonne K pour récuperer l'adresse sur la même ligne en L
est-ce possible ?

Merci pour votre aide et désolé si je suis confus dans mes demandes.

Cdt.
 

Pièces jointes

  • Assistance informatique.xlsm
    22.8 KB · Affichages: 28
  • Assistance informatique.xlsm
    22.8 KB · Affichages: 31
  • Assistance informatique.xlsm
    22.8 KB · Affichages: 34

Yaloo

XLDnaute Barbatruc
Re : Macro envoi de mail sous conditions (demande option supp)

Bonjour Adm93420, le forum,

Tu n'as pas le droit d'utiliser rem il s'agit d'un terme propre à la programmation, tu peux mettre rema, rem1, remarque etc...
Ne pas oublier de modifier également Selection_Change.
Comme tu as séparer EnvoiA et EnvoiD tu peux tout écrire dans Selection_Change.
Je l'avais écrit comme ça pour éviter de réécrire 2 fois la même chose.
Ou alors conserver une seule fois Envoi et rajouter une variable.

A+

Martial
 

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions (demande option supp)

Merci compris pour rem
j'avais essayé avec rema$ (entre les parenthésés) et rema dans le corp du mail mais il bug
mais je ne pige pas "sélection_change" qu'est ce que cela signifie ?
 

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions (demande option supp)

Je crois avoir un peu compris
dans Selection_Change. pour envoiA j'ai rajouté Cells(Target.Row, 4)
et ça me colle bien les données de la colonne remarque là ou je veux.

Merci pour l'info.

Concernant a deuxieme question as tu une idee:
pour rajouter le demandeur de la colonne A en Cc: dans EnvoiA (peut-être avec les colonnes K et L on peut faire quelque chose ?)
merci
 

Yaloo

XLDnaute Barbatruc
Re : Macro envoi de mail sous conditions (demande option supp)

Dans le module tu as maintenant 3 macros :
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- Private Sub EnvoiD(dest$, dem$, dét$)
- Private Sub EnvoiA(dest$, dem$, dét$, rema$)

La première est une macro événementielle, elle se déclenche lorsque que tu changes ta sélection (donc de cellule). Si ta sélection est en colonne C (3) alors (suivant certaines conditions) ta macro EnvoiD est lancée et si ta sélection est en colonne E (5) alors c'est ta macro EnvoiA qui est lancée.

Voici Selection_Change avec des commentaires
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si Target (ta sélection) comprend plusieurs cellules on sort.
If Target.Count <> 1 Then Exit Sub
  'Si la ligne de Target est > à 5 ET que la colonne est C (3)
  If Target.Row > 5 And Target.Column = 3 Then
    'Si les 2 cellules à gauche de ta sélection ne sont pas vides, alors on continue
    If Target.Offset(, -1) <> "" And Target.Offset(, -2) <> "" Then
      'On inscrit la date dans ta sélection
      Target = Date
      'puis, on lance la macro EnvoiD avec les variables dest,dem et dét
      'ces variables correspondent à tes données d'envoi
      EnvoiD [L13] & ";" & [L11], Cells(Target.Row, 1), Cells(Target.Row, 2)
    End If
  'Idem pour la colonne E et EnvoiA
  ElseIf Target.Row > 5 And Target.Column = 5 Then
    If Cells(Target.Row, 3) <> "" And Target = "" Then
      Target = Date
      EnvoiA [L18], Cells(Target.Row, 1), Cells(Target.Row, 2), Cells(Target.Row, 5)
    End If
  End If
End Sub

Pour la deuxième question, vois le fichier ci-dessous.

A+

Martial

PS : j'avais commencé avant de recevoir ton dernier message.
 

Pièces jointes

  • Assistance informatique.xlsm
    20.2 KB · Affichages: 30
  • Assistance informatique.xlsm
    20.2 KB · Affichages: 35
  • Assistance informatique.xlsm
    20.2 KB · Affichages: 26

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions (demande option supp)

Merci beaucoup avec les commentaires c'est tout de suite plus clair pour moi.
Merci également pour le CC: mais ça bug justement a la ligne:
Code:
 .CC = Cells(Application.Match(dem, Columns(11), 0), 11)
lorsque je clique sur la colonne "Accord le" pour mettre la date et envoyé le mail il me marque:
"La methode CC: de l'objet '_MailItem' a échoué (ça doit peut-être pas matcher entre demandeur de colonne K ?)

Jean-Luc
 

Yaloo

XLDnaute Barbatruc
Re : Macro envoi de mail sous conditions (demande option supp)

Désolé, je ne me suis pas relu, il faut mettre
.CC = Cells(Application.Match(dem, Columns(11), 0), 12)
mais l'erreur ne vient pas de là.
Il se peut que le nom du demandeur ne soit pas exactement orthographié de la même façon entre ta colonne A et ta colonne K.
Le mieux serait peut-être de mettre une liste déroulante en colonne A reprenant les données de la colonne K.

A+
 

Adm93420

XLDnaute Nouveau
Re : Macro envoi de mail sous conditions (demande option supp)

Cela ne passe pas même en faisant un copier coller entre Demandeur et colonne K pour être sur de l'orthographe.
Quant a la liste déroulante, pas de mon niveau, et pourrait-on y ajouter des noms de temps à autres, dans cette liste ?

Jean-Luc
 

Pièces jointes

  • Assistance informatique.xlsm
    23.1 KB · Affichages: 24
  • Assistance informatique.xlsm
    23.1 KB · Affichages: 35
  • Assistance informatique.xlsm
    23.1 KB · Affichages: 31

Yaloo

XLDnaute Barbatruc
Re : Macro envoi de mail sous conditions (demande option supp)

Voila ton fichier avec la liste en colonne A.

Pour le faire toi-même, je te donne les manipulations à effectuer :
1 - Aller dans "Gestionnaire de Noms" (onglet FORMULES), choisir un nom (j'ai mis NOMS :cool:) la formule à rentrer est :
=DECALER('Assistance Informatique'!$K$5;1;;NBVAL('Assistance Informatique'!$K:$K)-2)
On part de la cellule $K$5 puis on décale de 1, ensuite on rentre le nb de valeur de la colonne $K:$K et on retire -2 puisque dans cette colonne, tu as 2 données en ligne 4 et 5
2 - Sélectionner les cellules de A5 à A50, aller dans "Validation des données" (onglet DONNEES), dans "Autoriser :" choisir LISTE et dans "Source :" mettre =NOMS (définit à la première étape), valider la boite de dialogue. Et faire des essais.

A+
 

Pièces jointes

  • Assistance informatique.xlsm
    23.5 KB · Affichages: 25
  • Assistance informatique.xlsm
    23.5 KB · Affichages: 42
  • Assistance informatique.xlsm
    23.5 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote