Code vba pour lancer l'envoi

Résolu
Bonjour,

suis nouveau sur vba j'ai un souci , je veux écrire un code sur un tableau Excel de façon que quand j'ai la phrase "pas fait " d'éclanche automatiquement l'envoie d'un mail
merci pour votre aide

30 réponses

Résumé de la discussion

Problème posé : un utilisateur souhaite qu'un message Outlook soit envoyé automatiquement lorsqu'un texte exact 'pas fait' est saisi dans une plage Excel, par déclenchement d'un changement sur la feuille. Plusieurs propositions montrent l'utilisation d'un événement VBA Worksheet_Change, d'un intervalle Intersect sur D30:W150, et l'envoi via Outlook avec une fonction EnvoiMail, le corps HTML et le lien vers le fichier. Les réponses évoquent des variantes techniques, notamment des méthodes pour afficher ou envoyer directement le mail, des erreurs possibles et des éléments de sécurité autour de l'accès Outlook. D'autres échanges suggèrent de tester le déclenchement automatique, d'utiliser un exemple partagé ou d'opter pour l'affichage plutôt que l'envoi direct, et d'ajouter des précisions sur les plages et les conditions.

Bobot (l’IA à votre service)
  1. Re
    c'est bon j'ai cocher une case dans référence code est c'est bon
    par contre Ilya un mot "chose" qui est dans le mail et j'arrive pas a l'enlevé
    merci
    bien cordialement
    0
    1. Bonjour,

      Dans le code de la procedure Sub EnvoiMail(Cel_Adr, Sh)
      en dehors de Chose a enlever, vous avez besoin de creer le lien vers un document .docx?
      0
  2. bonjour f894009
    le code nefonctionne pas ilm me sort un message d'erreur (vor photo)
    merci
    0
    1. Re,

      je peux pas vor le contenu
      Si, vous pouvez. Dans le code de la procedure Envoi Mail

      il y une ligne qui sont interessantes pour voir le contenu celle qui est en commentaire. Enlevez le ' devant Display
          With OutMail
              .To = ""
              .CC = ""
              .BCC = ""
              .Subject = "MELANGEUR - remplacement nécessaire"
              .HTMLBody = strbody
              '.Display        'ouvre Outlook pour voir le conrenu
              .Send            ' envoi direct sans ouvrir Outlook
          End With
      0
      1. merci pour le code il fonctionne apparament , mais comme je traveil de chz moi je peux pas vor le contenu des mails
        une dernière question : les mail sont il en fonction du jour et de ligne choisi ?
        merci pour votre patience
        0
        1. Re,

          Sur validation d'une saisie "pas fait" dans la plage "D8:W150" declanche l'appel de la procedure Envoi @mail avec passage de parametres pour construire le message en fonction de la colonne de saisie

          fichier: https://www.cjoint.com/c/LFmkfwxQf1g
          Evitez donc de tartouiller le code
          0
          1. oun saisie "pas fait dans la plage (D8:E100) --> on appelle le call mail1 ,la plage (F8:G100) --> on appelle le call mail 2 ext.....
            0
            1. oui
              on saisie "past fait "manuellement
              0
              1. Re,
                Vous savez au moins "tourne" la procedure feuille" 2022"
                 Private Sub Worksheet_Change(ByVal Target As Range)

                (erreur d'ecriture post precedent)
                0
            2. Re,
              non automatiquement
              Ben avec la procedure workbooks_change de la feuille, c'est automatique et seule les cellules qui changent creees un envoi
              La saisie des cellules est manuelle?
              0
              1. Re,

                Comment devra se lancer le code pour envoi @Mail: un bouton ou ???
                0
                1. bonjour
                  avez vous une suggestion?
                  "Vous voulez que la procedure de verif parcoure toutes les cellules du tableau et envoi un @mail pour les cellules avec pas fait?"
                  oui exactement ca? chaque plage de cellule un mail different
                  0
                  1. Bonjour,
                    Re je sait pas hh ce code je l'est chopé
                    Ben, a l'avenir faites attention que le code que vous "chopez" ne vous foute pas la zone sur votre PC

                    besoin de repeter 10 fois le code mais avec "worksheet change " je peut pas
                    Evitez donc de prendre le nom de procedure pour autre chose que ce dont elles sont faites.

                    repeter 10 fois le code
                    Pourquoi 10 fois?

                    Vous voulez que la procedure de verif parcoure toutes les cellules du tableau et envoi un @mail pour les cellules avec pas fait?
                    Comment la procedure sera lancee?
                    Faudra eviter d'envoyer un @mail a chaque fois que le code sera lance pour les cellules deja concernees le tour precedent
                    0
                    1. On peut pas utiliser "" Application.EnableEvents = False"" pour faire le meme code avec worksheet change ? car j'ai besoin de repeter 10 fois le code mais avec "worksheet change " je peut pas
                      0
                      1. Re je sait pas hh ce code je l'est chopé sur net et aprés j'ai adapter a mon tableau
                        c'est dans le corps de mail
                        vous avez pas trouvez une solution ?
                        0
                        1. Re,

                          Cells(ActiveCell.Row, 3).Value
                          , c'est quoi cette chose, y a rien dans la colonne C

                          Ok pour fussion
                          0
                          1. bonjour
                            quand on fusionne deux cellules o peut attribuer un code ,si oui de coup je fusionne les cellules ca me convient
                            le E et G et les autres c'est des plage de cellules ou on peut ecrire "pas fait"
                            j'espère que j'étais claire
                            mon but c'est quand on ecrit" pas fait" dans une plage des cellules qui corespond à un jour de semaine un mail doit etre générer automatiquement suivant la ligne et le jour de la semaine qui corespond
                            0
                            1. Bonjour,

                              Ok, je regarde la chose

                              Vous ne repondez pas pour les colonnes E, G etc
                              Que saisissez vous dans ces colonnes(impaires) car "pas fait" ca n'a pas de sens!!!!!!!!

                              Cells(ActiveCell.Row, 3).Value
                              , c'est quoi cette chose, y a rien dans la colonne C

                              Soussi, vous etes fan de foot, de Hanball ou autre personnage?
                              0
                              1. Suite:

                                Pour moi LIGNE/QUAND sont liees, donc ex: D8 et E8 doivent etre fusionnees pour avoir une seule saisie

                                You pige?
                                0
                            2. oui pas de soussi pour demain
                              pour le colones F et G le meme code s'applique :(D8:E100) , (F8:G100) , (J8:K100), L8:M100)
                              N8:o100),(P8:Q100),R8::s100),(T8:V100,(V8:w100) chaque plage japplique le mem code pour appeller le mail par contre chaque plage a son propre mail
                              merci pour votre cooperation
                              0
                              1. Re,

                                Vous ne repondez pas pour les colonnes E, G etc

                                exactement ça
                                Alors z'etes chaud bouillant pour faire(facile) ou vous passez la main
                                Si vous passez la main se sera demain matin possible
                                0
                                1. exactement ça""Donc une seule procedure d'envoi @Mail avec construction de la partie message differente en fonction de la colonne""
                                  jai tellement des pseudo que j'oubliehhh
                                  0
                                  • 1
                                  • 2