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

XL 2013 Envoyer mail via macro suite modification tableau excel

STARRAG

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'aide concernant l'envoi de mail par macro.
Je souhaite recevoir un mail dès que quelqu'un modifie la colonne A d'un tableau spécifique.

J'ai pour le moment cette macro mais elle m'envoie un mail à chaque modification du fichier dans son intégralité.
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim ol As Object, monmail As Object

DisplayAlerts = False

Set ol = CreateObject("outlook.application")

Set monmail = ol.CreateItem(olMailItem)

monmail.To = "xxx@mail.com"

monmail.Subject = "Tableau de demande d'amélioration"

monmail.Body = "Une modification a été apporté sur le tableau de demandes d'amélioration"

monmail.Send

Set ol = Nothing

End Sub

Existe t-il une solution?

Merci d'avance de vos réponses
 

Lolote83

XLDnaute Barbatruc
Salut STARRAG,
Je pense que tu pourrais te servir d'une cellule cible (exemple B1, mais surtout pas une cellule de la colonne A) qui te donnerait l'information de OUI/NON si une modification a été apportée en colonne A.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then       'Colonne 1 testée (A)
        [B1] = "La colonne A a été modifiée"
    End If
End Sub

A l'ouverture du fichier, tu effacerais le contenu de cette cellule cible.
Code:
Private Sub Workbook_Open()
    [B1] = Empty                                'Cellule cible remise à vide
End Sub

Et lors de la fermeture du fichier dans ta macro, tu testes si cette cellule cible est vierge (donc aucune modification) ou remplie (modification faite) et tu exécutes ou non ta macro
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If [B1] <> Empty Then                       'Teste la cellule cible
        Dim ol As Object, monmail As Object
        DisplayAlerts = False
        Set ol = CreateObject("outlook.application")
        Set monmail = ol.CreateItem(olMailItem)
        monmail.To = "xxx@mail.com"
        monmail.Subject = "Tableau de demande d'amélioration"
        monmail.Body = "Une modification a été apporté sur le tableau de demandes d'amélioration"
        monmail.Send
        Set ol = Nothing
    End If
End Sub

Je pense que cela pourrait correspondre à ton besoin.

Sinon, tu pourrais faire en sorte que les cellules de la colonne A ne puissent être modifiées en protégeant les cellules et la feuille par MDP

Cordialement
@+ Lolote83
 

STARRAG

XLDnaute Nouveau
Bonjour Lolote83,

Le problème est que mon fichier est destiné a être rempli par plusieurs personne. Je ne peux donc pas bloquer la modification de cellule.
Je ne peux pas surveiller uniquement qu'une seule cellule. Mon tableau s'agrandit de jour en jour.
Le but étant de recevoir un mail à chaque fois que quelqu'un rajoute une nouvelle demande.

En tout cas merci de ton aide.

Cordialement
STARRAG
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Ok pour le fait de ne pas bloquer la modification de cellules.
Par contre, tu dis :
Le but étant de recevoir un mail à chaque fois que quelqu'un rajoute une nouvelle demande.
Donc, si je comprends bien ta demande, c'est uniquement sur l'ajout d'une nouvelle ligne ou cela peut être aussi sur la modification d'une ligne existante ?
Si c'est l'ajout du nombre de ligne, tu pourrais alors compter le nombre à l'ouverture et si à la fermeture tu as "nombre" +1 ou 2 ou 3, alosr tu envois le mail ...
A voir
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Voici un fichier qui explique mieux ma réflexion du post #4
En espérant que cela puisse t'aider.
@+ Lolote83
 

Pièces jointes

  • Copie de STARRAG - Test nombre lignes.xlsm
    16.4 KB · Affichages: 23

Discussions similaires

Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…