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 :

Automatiser envoi factures


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Automatiser envoi factures
    Bonjour,

    Je suis novice en VBA et je souhaiterais créer un petit programme pour automatiser l’envoi de mes factures (environ 250 tous les mois).

    Ci-joint un exemple de fichier. Le programme devrait envoyer un mail (navigateur par défault) à chaque client présent dans la colonne B en y associant la pièce jointe qui se trouve dans un dossier de mon disque dur et qui porte comme nom la référence qui est indiquée dans la colonne A.

    Le sujet et le corps du mail seront toujours les mêmes pour tous les clients :
    Sujet : Facturation
    Corps du mail :
    Bonjour,
    Je vous prie de bien vouloir trouver ci-joint votre facture,
    Bien cordialement,

    Merci d'avance pour votre aide,

    JP.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GOULIER Voir le message
    Bonjour,

    Au bas de votre message, des liens vous renvoient sur des sujets semblables qui peuvent vous donner des pistes pour réaliser votre projet.
    Si cela ne suffit pas, vous avez la possibilité de réaliser des requêtes : mail, facture, vba

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    effectivement vous avez raison il existe des discutions similaires !

    j'ai réussi à partir de quelques exemples à constituer le code suivant :
    par contre je ne sais pas comment ouvrir mon navigateur par défaut (thundirbird sur mac) et lui demander d'ouvrir un nouveau mail en y intégrant toutes le commandes indiquées dans le code 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
    Sub Mail()
     
    Dim adresse, sujet, message As String
     
    For i = 1 To last row ‘de la ligne 1 à la dernière utilisée
    adresse = Range(«b» & i)
    sujet = «Facturation»
    message = Range(«c» & i) & vbCrLf & «*Je vous remercie de bien vouloir vérifier l’ensemble des informations » ‘VBCRLF permet un retour à la ligne
     
    .Subject = sujet
    .to = adresse
    .body = message
    .Attachments.Add «C:\Range(«a» & i)»`facture en pièce jointe au mail
    .send ‘on envoie le mail créé
    
End With
    Next i ‘on passe au mail suivant
    End Sub
    merci encore pour votre aide,

    JP.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GOULIER Voir le message
    Rebelote : on fait une requête cette fois tout en haut de la fenêtre à droite pour voir mail,thundirbird

    Il vous faut préciser la version et la plateforme (PC ou MAC) sur laquelle vous travaillez lorsque vous initialisez un message. N'ayant pas de Mac, je ne peux pas vous aider.

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    pour info je suis sur mac.

    je n'ai rien trouvé sur le forum !

    mais sur internet j'ai trouvé ce bout de code :

    strcommand = "C:\Program Files\Mozilla Thunderbird\thunderbird"

    strcommand = strcommand & " -compose " & "to='" & destinataire & "'"
    strcommand = strcommand & "," & "subject=" & sujet & ","
    strcommand = strcommand & "body=" & body
    strcommand = strcommand & "," & "attachment=file:///" & fichierjoint

    maintenant il faut que j'arrive à l'intégrer à mon code précédent...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GOULIER Voir le message
    maintenant il faut que j'arrive à l'intégrer à mon code précédent...
    Il vous faut trouver la Dll à référencer. A explorer : dll,thunderbird

    Voir également l'envoi par CDO.

    Bon courage.

  7. #7
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Finalement j'ai créé un environnement windows 7 (office 2007) sur mon mac. Donc voila ci-dessous le code que j'ai dans ma macro. Tout fonctionne parfaitement, cependant je voudrais laisser la possibilité à outlook d'envoyer le mail même si la pièce jointe est introuvable ou n'existe pas ! En effet avec le code ci-dessous si outlook ne trouve pas la pièce jointe la macro plante et je dois tout recommencer.

    merci de me dire si c'est possible ?

    JP

    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
    Public Sub EnvoiAutomatiqueMail()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim message As String
    Dim test As String
    Dim i As Byte
    'init des messages
    For i = 1 To ThisWorkbook.Worksheets("test").Range("D" & Rows.Count).End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A
    Set OutlookApp = CreateObject("outlook.application")
    Set OutlookMail = OutlookApp.createitem(0)
    With OutlookMail
    .Subject = ThisWorkbook.Worksheets("test").Range("Q4").Value 'sujet du mail
    .To = ThisWorkbook.Worksheets("test").Range("D" & i).Value 'adresse mail destinataire
    .body = message 'corps du message
    message = "Bonjour," & vbCrLf & "je vous prie de bien vouloir trouver ci-joint..."
    .Display
    test = ThisWorkbook.Worksheets("test").Range("C" & i).Value
    .Attachments.Add "\\Mac\Home\Desktop\" & test & ""
    .send 'on envoie le mail créé
    End With
    Next i 'on passe au mail suivant
    End Sub

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GOULIER Voir le message
    Bonjour,

    Il est peut-être inutile de créer une session outlook pour chaque message. Etes-vous certain de l'emplacement de vos pièces jointes ?
    Sinon, si une cellule vide de la colonne C indique qu'il n'y a pas de pièce jointe, et qu'a contrario, une cellule non vide contient bien le nom de la pièce jointe et que la pièce jointe est bien présente dans le répertoire, il suffit de tester la valeur de la cellule C.

    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
     
    Public Sub EnvoiAutomatiqueMail()
     
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim message As String
    Dim test As String
    Dim i As Byte
     
        Set OutlookApp = CreateObject("outlook.application")
        With OutlookApp
            'init des messages
            For i = 1 To ThisWorkbook.Worksheets("test").Range("D" & Rows.Count).End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A
                Set OutlookMail = .createitem(olMailItem)
                With OutlookMail
                     .Subject = ThisWorkbook.Worksheets("test").Range("Q4").Value 'sujet du mail
                     .To = ThisWorkbook.Worksheets("test").Range("D" & i).Value 'adresse mail destinataire
                     message = "Bonjour," & vbCrLf & "je vous prie de bien vouloir trouver ci-joint..."
                     .body = message 'corps du message
                     .Display
                     test = ThisWorkbook.Worksheets("test").Range("C" & i).Value
                     If test <> "" Then
                        .Attachments.Add "\\Mac\Home\Desktop\" & test '& ""
                     End If
                     .send 'on envoie le mail créé
                End With
                Set OutlookMail = Nothing
            Next i 'on passe au mail suivant
     
            .Quit
        End With
        Set OutlookApp = Nothing
    End Sub

  9. #9
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    merci pour ce retour rapide !

    Effectivement je n'avais pas pensé à tester ma cellule. Cependant il reste toujours le problème de la pièce jointe... en fait mes pièces jointes sont annotées à la main (environ 300 pièces), j'anticipe donc le cas de figure ou la valeur de la cellule sera différente de la piece jointe et donc plantage de la macro.

    il existe une solution ?

    JP.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GOULIER Voir le message
    Pour tester l'existence d'un fichier, voir le tutoriel de Christophe WARIN : Manipulation des fichiers en VBA

Discussions similaires

  1. Script Jeu Automatisation envois et réceptions
    Par Muddd dans le forum Général Python
    Réponses: 2
    Dernier message: 11/11/2012, 17h04
  2. Réponses: 1
    Dernier message: 27/06/2012, 00h43
  3. [XL-2007] Automatiser envoi d'un mail par onglet
    Par anthooooony dans le forum Excel
    Réponses: 5
    Dernier message: 22/12/2011, 10h38
  4. Automatisation envoi de mail via INOTES et pas NOTES
    Par matybouch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2011, 22h15
  5. automatiser envoi mms
    Par calitom dans le forum Services
    Réponses: 0
    Dernier message: 08/12/2008, 13h31

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