Email Automatique avec Conditions

Bonjour à tous,

Je cherche à créer un fichier de suivi de commande.

J'ai besoin d'envoyer un email lorsque la commande est réception par le service approprié.

Le service en question remplis un fichier excel comme l'exemple :

4classeur1.xlsm (22.51 Ko)

J'aimerai que quand l'opérateur ajoute la date de livraison complète (Colonne J), un email est envoyé au demandeur (Colonne C) avec les différentes informations sur la commande (Vers Fichier).

J'ai tenté quelques manip' VBA (également présent dans le fichier) mais je bute en touche pour garder uniquement les infos de la ligne sélectionner...

Lorsque je tente un code du genre :

Sub Test()

Dim FL As Worksheet             'variable permettant de stocker la valeur du classeur actif
Dim LineNB, ColNB As Long       'variable permettant de récupérer la ligne sélectionnée
Dim Livraison As String

Livraison = FL.Cells(LineNB, 10)

MsgBox ("Bonjour " & Livraison & " !")

End Sub

Je n'arrive pas à afficher la variable livraison, je pense que je n'arrive même pas à l'obtenir...

Erreur d'exécution '91'

Variable objet ou variable de bloc With non définie

Est-ce que c'est possible de faire ce que je veux faire ?

Par la suite, je souhaiterai obtenir un même résultat pour l'ajout des différentes date...

Je ne cherche pas forcément un fichier tout fait, mes des explications sur mes lacunes éventuelles. Merci de votre aide.

Bonjour,

tu as bien défini tes variables mais elles sont vides;

Sub Test()

Dim FL As Worksheet             'variable permettant de stocker la valeur du classeur actif
Dim LineNB, ColNB As Long       'variable permettant de récupérer la ligne sélectionnée
Dim Livraison As String

set FL=activesheet
lineNB=activecell.row
Livraison = FL.Cells(LineNB, 10)

MsgBox ("Bonjour " & Livraison & " !")

End Sub

Effectivement, en oubliant de donner une valeur à la variable, normale que je n'obtienne rien en réponse.

Merci pour cette explication.

J'ai pu avancer un peu dans mon codage et j'ai réussi à faire fonctionner mon envoie d'email avec les informations contenus dans le fichier, comme je le souhaitai.

Il ne me manque d'une seule chose pour faire fonctionner le code de la façon que je souhaite.

Lorsque l'opérateur aura changé la date de Livraison Complète (Colonne J), je voudrais lancer ma Macro (EnvoyerEmail) toute seule dès la modification de la cellule. Or pour le moment, celà ne fonctionne pas. Une petite piste sur pourquoi ?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim FL As Worksheet                     'variable permettant de stocker la valeur du classeur actif
Dim LineNB, ColNB As Long               'variable permettant de récupérer la ligne sélectionnée
Set FL = ActiveSheet                    'déclaration de la variable de la feuille active
LineNB = ActiveCell.Row                 'déclaration de la variable de la cellule active
EmailEnv = FL.Cells(LineNB, 14)

If Not Intersect(Target, Range("J2", "J" & Range("J65536").End(xlUp).Row)) Is Nothing Then

    If Target.Count > 1 Then Exit Sub

        If EmailEnv = "OK" Then Exit Sub

        Call EnvoyerEmail
        Cells(LineNB, 14).Value = "OK"

    End If

End If

End Sub

Merci d'avance pour vos réponses.

Hello !

Petite relance sur le sujet. J'ai planché dessus hier soir mais je n'ai pas avancé...

Bonjour,

reçois-tu un message d'erreur ? sans doute, vu que tu as un End If en trop.

voici une proposition qui utilise target.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("J2", "J" & Range("J65536").End(xlUp).Row)) Is Nothing Then

        If Target.Count > 1 Then Exit Sub

        If Range(Target.Row, 14) = "OK" Then Exit Sub

        Call EnvoyerEmail
        Range(Target.Row, 14).Value = "OK"

    End If

End Sub

Hello et merci pour ta réponse.

Non, je n'ai pas d'erreur qui s'affiche, mais rien ne s’exécute (ni l'envoie du mail, ni la modification de la valeur de la case). J'ai fais le test avec ta modification mais toujours rien...

Mon besoin reste le même : une fois que la valeur de J est modifié (ici l'ajout d'une date), la macro s’exécute est envoie un email (la macro de l'email fonctionne, je l'ai testé).

Bonjour,

tu mets bien le code dans le module de feuil1 ?

Non, je l'avais dans les Modules Généraux... Idiot que je suis... J'ai vraiment du mal

Maintenant, effectivement, lorsque je modifie sur ma cellule, la macro "tente" de s’exécuter mais plante (Erreur d’exécution '1004' : La méthode 'Range' de l'objet '_Worksheet' a échoué) en surlignant la ligne "If Range(Target.Row, 14) = "OK" Then"

Je n'ai pas l'impression non plus que mon email est envoyé pour autant...

Ci joint le fichier avec les dernière MAJ

6classeur1.xlsm (29.04 Ko)

Bonjour,

au temps pour moi !, j'ai mis Range au lieu de Cells, voici la correction

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("J2", "J" & Range("J65536").End(xlUp).Row)) Is Nothing Then

        If Target.Count > 1 Then Exit Sub

        If cells(Target.Row, 14) = "OK" Then Exit Sub

        Call EnvoyerEmail
        cells(Target.Row, 14).Value = "OK"

    End If

End Sub

Impeccable, ça marche presque parfaitement. Merci beaucoup pour ton aide.

J'aurai une dernière requête d'autre pratique

En fait, lorsque je modifie ma cellule (J) avec une nouvelle valeur, le mail est bien envoyé si je reste sur la même ligne (exemple Ligne 7) Mais si je valide la modification par la touche "Entrée", l'envoie ne se fait plus, mais pourtant le "OK" s'inscrit dans la colonne N comme demandé. Il m'affiche "Email déjà envoyé" (cf.Macro EnvoyerEmail) dû à ce code :

EmailOK = FL.Cells(LineNB, 14)

    'vérification si le mail n'a pas déjà été envoyé. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
    If (EmailOK = "OK") Then
        MsgBox "Mail non envoyé car déjà envoyé", vbOKOnly, "Message"
        Exit Sub
       End If

Le fait de valider par "Entrée" doit interférer avec la ligne de dessous où "OK" est déjà marqué dans la colonne N... Une idée pour parer ce problème ?

Re-bonjour,

je ne dispose pas de ton code et ce que tu me fournis est insuffisant pour indiquer quel est le problème et le corriger.

Cependant je soupçonne un effet de bord de 2 procédures événementielles. (change et selectionchange)

Non, je l'avais dans les Modules Généraux... Idiot que je suis... J'ai vraiment du mal

Maintenant, effectivement, lorsque je modifie sur ma cellule, la macro "tente" de s’exécuter mais plante (Erreur d’exécution '1004' : La méthode 'Range' de l'objet '_Worksheet' a échoué) en surlignant la ligne "If Range(Target.Row, 14) = "OK" Then"

Je n'ai pas l'impression non plus que mon email est envoyé pour autant...

Ci joint le fichier avec les dernière MAJ

Classeur1.xlsm

J'ai fourni mon fichier dans ce post.

re-bonjour,

ce code ne fonctionne pas et ne peut donc pas être celui pour lequel tu me dis ceci

Impeccable, ça marche presque parfaitement. Merci beaucoup pour ton aide.

J'aurai une dernière requête d'autre pratique

je ne dispose donc pas du code avec lequel tu as testé.

Ah effectivement,

Voici la dernière version du Fichier :

11classeur1.xlsm (30.41 Ko)

re-bonjour,

ce code ne fonctionne pas plus, il donne une erreur au lancement. donne-moi le fichier qui est "impeccable" et qu'il faut adapter.

si tu veux que je corrige cette erreur, demande-le moi clairement, ne me fais pas perdre mon temps.

Bonjour,

Je dernier fichier en date ne me donne aucune erreur au lancement pour ma part. J'arrive parfaitement à l'utiliser... Sauf problème cité plus haut. Je ne comprends donc pas quel fichier je dois fournir dans ce cas...

Il n'est pas dans mon intention de faire perdre du temps à qui que ce soit, au contraire, je suis reconnaissant de l'aide apportée.

Bon weekend à tous.

Bonjour

désolé pour ce coup de gueule inapproprié

j'ai corrigé tes macros, cela devrait fonctionner maintenant.

3burgrom.xlsm (27.28 Ko)

Super, ça marche ! Merci

Pour ma gouverne, je n'ai pas pu observer les changements que tu as effectué, pourrais tu m'indiquer les lignes modifiés que je suis apprendre de mes erreurs ?

En te remerciant de ton implication,

bonjour,

regarde les procédures envoyermail et worksheet_change

Super, je vais tâché de faire un comparatif entre les deux fichiers.

Merci pour ton aide.

Problème résolu

Rechercher des sujets similaires à "email automatique conditions"