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

Excel Discussion :

code appel une macro


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut code appel une macro
    Bonjour,

    J'ai créé une feuille excel pour gérer un stock, a laquelle j'ai mis un code pour un appel de macro:
    En fonction d'un certain seuil, le code appel la macro qui envoie un mail, cela fonctionne bien sur un item.
    Mais quand deux item correspondent aux critères du code de la feuille, la macro génère un mail, mais que sur le premier item.

    ci dessous le code et la macro

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("e1") = "passercommande" Then
    Call macro1
    End If
    If Range("e2") = "passercommande" Then
    Call macro2
    End If
    If Range("e3") = "passercommande" Then
    Call macro3
    End If
    If Range("e4") = "passercommande" Then
    Call macro4
    End If
    If Range("e5") = "passercommande" Then
    Call macro5
    End If
    If Range("e6") = "passercommande" Then
    Call macro6

    End If
    End Sub


    Sub macro1()
    Dim Msg, Style, Title, Response, MyString
    If Not ActiveWorkbook.Saved Then
    Msg = "Souhaitez-vous enregistrer les modifications?"
    Style = vbYesNo
    Title = "Des commandes sont à passer"
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then
    ActiveWorkbook.Save
    Dim ol As Object, myItem As Object
    Set ol = CreateObject("outlook.application")
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "destinataire1@fai.fr"
    myItem.Subject = "commandes a passer"
    myItem.Body = "Bonjour, " & Chr(10) & "des commandes sont a passer pour les bretelles"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "XXXXXX@XXXXXX;XXXXXXXX@XXXXXX"
    myItem.Subject = "Commande de materiel"
    myItem.Body = "Bonjour, " & Chr(10) & "Merci de passer commande de bretelles de 1M , voir le détail dans le fichier joint"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set ol = Nothing
    End If
    End If
    End Sub


    Sub macro2()
    Dim Msg, Style, Title, Response, MyString
    If Not ActiveWorkbook.Saved Then
    Msg = "Souhaitez-vous enregistrer les modifications?"
    Style = vbYesNo
    Title = "Des commandes sont à passer"
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then
    ActiveWorkbook.Save
    Dim ol As Object, myItem As Object
    Set ol = CreateObject("outlook.application")
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "destinataire1@fai.fr"
    myItem.Subject = "commandes a passer"
    myItem.Body = "Bonjour, " & Chr(10) & "des commandes sont a passer pour les bretelles"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "XXXXXXXX@XXXXXX;XXXXXXX@XXXXXXX"
    myItem.Subject = "Commande de materiel"
    myItem.Body = "Bonjour, " & Chr(10) & "Merci de passer commande de bretelles de 1.50M , voir le détail dans le fichier joint"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set ol = Nothing
    End If
    End If
    End Sub
    Sub macro3()
    Dim Msg, Style, Title, Response, MyString
    If Not ActiveWorkbook.Saved Then
    Msg = "Souhaitez-vous enregistrer les modifications?"
    Style = vbYesNo
    Title = "Des commandes sont à passer"
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then
    ActiveWorkbook.Save
    Dim ol As Object, myItem As Object
    Set ol = CreateObject("outlook.application")
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "destinataire1@fai.fr"
    myItem.Subject = "commandes a passer"
    myItem.Body = "Bonjour, " & Chr(10) & "des commandes sont a passer pour les bretelles"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set myItem = ol.CreateItem(olMailItem)
    myItem.To = "XXXXXXXXXXX@XXXXXX;XXXXXXX@XXXXXX"
    myItem.Subject = "Commande de materiel"
    myItem.Body = "Bonjour, " & Chr(10) & "Merci de passer commande de bretelles de 2M , voir le détail dans le fichier joint"
    myItem.Attachments.Add ActiveWorkbook.FullName
    myItem.Send
    Set ol = Nothing
    End If
    End If
    End Sub


    ETC.........



    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tu devrais mettre des balises CODE sur ton texte, ça sera plus lisible

    Vu que ça fait trop mal aux yeux, je vais juste te donner quelques conseils que j'applique à mon niveau lorsque j'ai des répétitions de ce genre :

    - pour ta macro d'envoi de mail, vu que c'est de la répétition, je te conseille de créer une "sous macro", avec des paramètres d'entrée => ça t'évitera d'écrire 6 fois la macro. De plus, et de mon point de vue, je trouve que si tu as un souci, c'est plus simple à corriger.
    - Ensuite, tu utilise un SI => pourquoi ne pas utiliser un CASE : étant donné que j'ai du mal à comprendre ton problème, je ne sais pas si ça le résoudrais en passant, à savoir que :
    - tu laisse le SI, ça te lancera une macro à chaque fois qu'on rentre dans ta condition, et ça enverra un mail pour chaque condition validée
    - si tu fais un CASE, ça rentrera qu'une fois dans une macro, dès qu'il aura trouvé la bonne condition et du coup qu'un mail s'enverra au final.


    Sinon, as-tu essayé d'exécuter ton programme avec du pas à pas ? ça t'aiderai surement à comprendre ton problème Essaye de mettre un point d'arrêt dans ta macro voir pourquoi ça ne rentre pas dans ta condition.
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    bonjour,

    merci pour votre réponse, je vous joint mon fichier pour mieux appréhender mon interrogation.

    Je ne suis pas un crack d'excel, j'essaie de m’améliorer, donc je reviens vers vous pour me guider.

    Par avance merci
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Je comprend pas ton problème

    Quand je change une valeur dans la colonne C, que ce soit C2, C3 ou C4, j'ai bien un MsgBox qui s'ouvre. Donc un mail partirait bien...

    Par ailleurs, et comme je te l'ai expliqué, regarde le fichier joint je t'ai un peu modifié ton programme en rajoutant une fonction avec paramètres, ça t'évitera de copier 15 fois la même macro je l'ai fait que pour les 6 premières je te laisse faire le reste.

    Si tu veux rajouter encore des arguments à la fonction tu peux (par exemple l'objet, ou les destinataires, etc...)

    Donc je vais te poser une question simple :

    Mais quand deux item correspondent aux critères du code de la feuille, la macro génère un mail, mais que sur le premier item.
    Qu'entend tu par "item" ?
    Fichiers attachés Fichiers attachés
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    Bonjour,

    Quand dans les cases E1 et F1 de la première feuille est stipulé "passer commande", le mail qui est envoyé correspond simplement a la macro de la case E1.

    donc je ne reçois pas de mail avec les besoins des deux cases, mais simplement la case E1.

    Je ne c'est pas si j'ai été clair.

    Cdt

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    non

    Avec le fichier que je t'ai joint, je passe dans toutes les macros des lignes où il y a écrit "passercommande", donc je vois pas trop le problème...

    Par ailleurs, en F1 ya rien
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

Discussions similaires

  1. Appeler une macro a travers un code VBA
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/06/2007, 11h25
  2. appeler une macro d'excel ds powerpoint
    Par smarties38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2007, 16h13
  3. comment lancer du code depuis une macro ?
    Par faiglon dans le forum Access
    Réponses: 15
    Dernier message: 13/07/2006, 11h03
  4. Réponses: 2
    Dernier message: 06/06/2006, 10h50
  5. Appeler une macro
    Par yannph dans le forum Access
    Réponses: 5
    Dernier message: 11/01/2005, 16h37

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