IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Condition mail auto et formule dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    chef avion
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : chef avion
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Par défaut Condition mail auto et formule dans une cellule
    bonjour,
    J'ai un petite problème avec l'excution de la macro ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Lg, Plg
     
    Lg = Target.Row
    Set Plg = Application.Union(Range("W" & Lg), Range("AA" & Lg), Range("AE" & Lg), Range("AI" & Lg))
    If Application.Sum(Plg.Value) <> Range("T" & Lg) Then Exit Sub
     
    Application.EnableEvents = False
    Dim TablCode
    Dim Email_Subject, Email_Send_From, Email_Send_To, _
       Email_Cc, Email_Bcc, Email_Body As String
    Dim Mail_Object, Mail_Single As Variant
     
    TablCode = Array(31, 34, 36, 18, 99)
    TablTargetColumns = Array(21, 25, 29, 33) 'Colonnes Code
    TablNoemptyColumns = Array(24, 28, 32, 36)
     
    notEmpty = False
     
    For I = LBound(TablNoemptyColumns) To UBound(TablNoemptyColumns)
      If Not IsEmpty(Target.Parent.Cells(Target.Row, TablNoemptyColumns(I)).Value) And _
         Target.Parent.Cells(Target.Row, TablNoemptyColumns(I) - 2).Value <> "99A" Then
        OneOfValues = False
        For Each c In TablCode
          If c = Target.Parent.Cells(Target.Row, TablTargetColumns(I)).Value Then
            OneOfValues = True
            Exit For
          End If
        Next c
        If OneOfValues Then
          notEmpty = True
          Exit For
        End If
     End If
    Next
    If notEmpty Then
                   'Macro email
                  '--------------------------------------------------------
    Mon code fonctionnais très bien mais j'ai voulu rajouter une condition pour avoir des complements dans le mail envoyé.
    J'ai rajouté ce code si:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Lg, Plg
     
    Lg = Target.Row
    Set Plg = Application.Union(Range("W" & Lg), Range("AA" & Lg), Range("AE" & Lg), Range("AI" & Lg))
    If Application.Sum(Plg.Value) <> Range("T" & Lg) Then Exit Sub
    La fonction bien, avant d'envoyer le mail la somme des cellules AA+AE+AI+W= cellule T
    dans les cellules de la colonne T il y a cette formule =SI(S9>R9;(S9-R9);SI(S9<R9;"";SI(S9=R9;""))) qui me serre jsute a calcule le temps de retard entre un horaire prévu et un horaire rEélle

    Mon problème: mon mail part si je mets moi-même le résultat dans la colonne T,
    - quand toutes mes conditions sont remplis et que la cellule T utlise une formule auto =mail ne part pas
    - quand toutes mes condition sont remplis et que Ecrit moi-même dans la cellule T= mail part OK

    Comment faire pour que mon mail parte tout en gardant la cellule de la colonne T automatique?



    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    SI(S9>R9;S9-R9;"")

  3. #3
    Membre averti
    Homme Profil pro
    chef avion
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : chef avion
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Par défaut
    bonsoir,
    Le problème n'est pas la formule
    la formule est la pour calculer le retard de temps
    exemple R= 10:00
    S= 10:10
    T(=SI(S10>R10;(S10-R10);SI(S10<R10;"";SI(S10=R10;"")))=(calcule auto avec cette formule) 00:10

    Mon mail parti j'écris moi-même 00:10 dans la case T
    Moi je veux que mon mail part même si la formule la calcule pour moi, il est la mon problème

    Cordialement

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    Le changement d'état d'une formule ne provoque pas d'événement Change... il faut utiliser l'événement calculate et tester ta condition à chaque apparition de cet événement

    voir :

    http://www.developpez.net/forums/d14...venements-vba/

  5. #5
    Membre averti
    Homme Profil pro
    chef avion
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : chef avion
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Par défaut
    il faudrait donc que je fasse deux macro bien distinct sachant qu'une des macro serai une condition d'envoie de mail, sa marcherai quand même?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nicopof Voir le message
    bonsoir,
    Le problème n'est pas la formule
    la formule est la pour calculer le retard de temps
    exemple R= 10:00
    S= 10:10
    T(=SI(S10>R10;(S10-R10);SI(S10<R10;"";SI(S10=R10;"")))=(calcule auto avec cette formule) 00:10

    Mon mail parti j'écris moi-même 00:10 dans la case T
    Moi je veux que mon mail part même si la formule la calcule pour moi, il est la mon problème

    Cordialement
    Bonjour,
    Oui désolé ce n'était pas évident!
    Il ne fallait donc pas supprime les mentions inutile!

    Maintenant, quand on veut automatiser un envoi de mail, il faut s'assurer que ça ne ce transformera pas en spam!
    Dernière modification par Invité ; 21/10/2015 à 08h03.

  7. #7
    Membre averti
    Homme Profil pro
    chef avion
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : chef avion
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Par défaut
    Bonjour,

    Jusque la tous les mails envoyés n'ont pas été reçu en spam donc pas de souci de ce côté la.
    Cordialement

Discussions similaires

  1. Insérer une formule dans une cellule Excel via VBA
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2020, 13h02
  2. Pb de formule dans une cellule
    Par spoyet dans le forum Excel
    Réponses: 3
    Dernier message: 18/06/2007, 14h31
  3. Pb de formule dans une cellule
    Par spoyet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/06/2007, 09h59
  4. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21
  5. [VBA] Macro qui envoie une formule dans une cellule
    Par Okoss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo