Mail suite à modification case

Bonjour à vous,

J'aimerais faire une action spécifique quand quelqu'un modifie une case d'un fichier, je m'explique :

Voici un tableau type :

NuméroPréparateurVérificateurliencommentaires
23AntoineDédéI:NUM/23Prévoir outillage

Je veux que quand quelqu'un (ici Antoine) passe la case du préparateur (où son nom est noté) en vert,

un mail soit envoyé au vérificateur (case à coté ici dédé) en précisant que ce qui est inscrit dans la case 1 (colonne A même ligne) a été modifié avec en dessous l'équivalent de la case (colonne lien) et la case de la colonne commentaires

Mail type

dédé@mail.fr

objet : Modification Numéro 23

Bonjour,

Antoine a modifié le numéro 23

I:NUM/23

Notes:

Prévoir outillage

J'imagine qu'il faut gérer une colonne listant tous les mails associé au nom.

Si le passage de la colonne en vert n'est pas possible pour déclencher quelque chose, je peux rajouté une colonne ou on mettrais "OK" et ça déclencherait le processus.

J'espère être clair, est ce que votre réponse peut être détaillée? (je ne connais pas grand chose en codage)

Merci

Bonjour,

Personne pour me donner des pistes :)

Merci

Bonjour,

J'ai trouvé comment envoyer un mail, mais j'arrive pas a mettre dans le texte la référence à la première cellule :

Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Bonjour," & vbNewLine & vbNewLine & _

<ici je voudrais faire référence à la 1ere case de la ligne qui a bougé, il faut récupérer "23">

On Error Resume Next
With xOutMail
.To = "dédé@mail.fr"
.CC = ""
.BCC = ""
.Subject = "Modification"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Merci de m'aider à avancer :D

Please ;)

Bonjour,

Si quelqu'un peut me donner une piste pour essayer d'avancer :)

Merci

Si quelqu'un peut me donner une piste...

Bonjour,

Fournir un classeur est toujours une bonne idée !

A+

ha oui, je pensais que mon petit tableau du début suffisait :)

Merci pour la réponse, voici un tableau exemple

2essai.xlsm (19.13 Ko)

Bonjour,

Le formatage n'est pas satisfaisant car cela ne constitue pas un évènement pour VBA.

Cette macro non testée devrait faire le job.

Sub Mail_small_Text_Outlook(iNum)
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Bonjour," & vbNewLine & vbNewLine & _
              "Le numéro " & iNum & " a été modifié"
    On Error Resume Next
    With xOutMail
        .To = "x@mail.fr"
        .CC = "x@mail.fr"
        .BCC = ""
        .Subject = "Modification Numero"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
   If Target.Column = 4 And Target.Value = "Ok" Then
      Mail_small_Text_Outlook (CLng(Cells(Target.Row, 2)))
   End If
End If
End Sub

A+

Wouah, super, déjà ça envoie un mail avec la référence au numéro

Il me faut maintenant mettre en destinataire, le mail correspondant au nom de la colonne E (correspondance entre nom et mail dans un autre onglet : il faudrait remplir la colonne F (masquée) avec les adresses mails, genre "if" nom dans E, F=mail référencé dans l'onglet suivant).

j'aimerai récupérer aussi le "texte" des colonnes G et H de la meme ligne.

Tu as créé iNum pour le numéro de la colonne B, il faut que je crée une valeur texte pour les 2 autres colonnes G et H? afin d'alimenter le texte dans mon mail.

Merci beaucoup en tout cas, c'est top!

A tester :

Sub Mail_small_Text_Outlook(Arr)
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Bonjour," & vbNewLine & vbNewLine & _
              "Le numéro " & Arr(1, 1) & " a été modifié" & vbNewLine & _
              "Le préparateur " & Arr(1, 2) & " a préparé le numéro " & Arr(1, 1) & vbNewLine & _
              "Voici le lien : " & Arr(1, 6) & vbNewLine & _
               "commentaire : " & Arr(1, 7)
    On Error Resume Next
    With xOutMail
        .To = Arr(1, 5)
        .CC = "x@mail.fr"
        .BCC = ""
        .Subject = "Modification Numero"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr
If Target.Count = 1 Then
   If Target.Column = 4 And Target.Value = "Ok" Then
      Arr = Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Value
      Mail_small_Text_Outlook Arr '(CLng(Cells(Target.Row, 2)))
   End If
End If
End Sub

A+

Merci beaucoup galopin! ça fonctionne très bien!

Juste pour comprendre un peu, à quoi sert CLng? et pourquoi dans la parenthèse Arr, nous avons le 1? ça correspond à quoi? le 2ème j'ai compris pour le choix de la colonne, mais le 1, je comprends pas dans Arr(1, 6) par exemple.

Merci je note le sujet comme résolu

Le début de la ligne est suffisant

Mail_small_Text_Outlook Arr   'La suite avec CLng est un résidu de mes essais

Vous pouvez donc supprimer la fin de cette ligne qui est un call à la Sub Mail_small_Text_Outlook

Arr est un paramètre Array d'une ligne (la ligne cliquée)

Arr(1,1) est la bonne manière d'interroger les Array (un peu à la manière des Cells dans un tableau Excel :

Dans un Array en ligne Arr(1,1) correspond à la première valeur de la ligne (unique : 1)

Dans un Array en ligne Arr(1,2) correspond à la deuxième valeur de la ligne...

et ainsi de suite...

A+

Rechercher des sujets similaires à "mail suite modification case"