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

SDK Discussion :

[VBA]Envoi mail par section en automatique


Sujet :

SDK

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut [VBA]Envoi mail par section en automatique
    Bonjour,

    J'ai un rapport concernant plusieurs magasins. J'ai une section par magasin.
    Je voudrais envoyer de manière automatique à chacun des magasins ses chiffres. C'est à dire un mail par section.

    Est-ce possible en automatique, j'utilise actuellement V5 je ne pense pas que ce soit possible avec, mais on est en train de migrer en XI et je me demandais si c'était possible.

    Ou est ce que je suis obligée de créer un rapport par magasin et d'envoyer le rapport en automatique surement avec le Broadcast Agent.

    Merci,

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    En VBA ça t'irait ? Pas que je sache le faire, mais ça me parait faisable.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Le VBA ne me dérange pas mais j'ai aucune idée de comment résoudre ce problème en VBA.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 84
    Points : 97
    Points
    97
    Par défaut
    J'ai fait une macro qui correspond à ton besoin. création d'un pdf par section et envoi automatique par e-mail.
    Pour l'envoye par e-mail, je m'appuie sur un petit logiciel : tmail .
    Nota dans mon document les sections contiennent l'adresse e-mail des destinataires.

    Pour rendre à Cesar ce qui est à Cesar, je me suis inspiré de codes trouvés sur "http://www.forumtopics.com/busobj/"

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     Sub CreationPdf()
     
    Dim DocObj As busobj.Document     ' l'Object Document
    Dim RepObj As busobj.Report       ' l'Object Rapport
    Dim SecArray                      ' Tableau qui va contenir les valeurs des sections
    Dim IntSecArrayLen As Integer     ' longueur de la section du tableau
    Dim SectionType As String         ' type de la section
    Dim i As Integer
    Dim EnvoyeSMTP As String
    Dim s_fichier As String
    Dim CheckPDFSize As String
     
     
    Set DocObj = ActiveDocument     ' récupère le document actif
    Set RepObj = ActiveReport       ' récupère le rapport actif
     
     
    ' pour être sûr que le rapport a des sections
    If Not RepObj.GeneralSectionStructure.IsTerminal Then
    ' On est sûr que le rapport à des sections !
     
    ' retrouve le nom de la section
    SectionName = RepObj.GeneralSectionStructure.SubSectionStructure.Master.Name
     
     
    ' retrouver les valeurs de la session
    SecArray = DocObj.DocumentVariables(SectionName).Values(boUniqueValues)
    SectionType = TypeName(SecArray(1)) ' Identifie le type de la valeur
    IntSecArrayLen = UBound(SecArray)
     
     
    With RepObj
        For i = 1 To IntSecArrayLen        ' boucle sur les sessions et filtrage
            If SectionType = "String" Or SectionType = "Date" Then
                ' filtre si string ou date
                .AddComplexFilter SectionName, "=<" & SectionName & "> = """ & SecArray(i) & """"
            Else
                ' filtre si numerique
                .AddComplexFilter SectionName, "=<" & SectionName & "> = " & SecArray(i)
            End If
            .ForceCompute     ' Applique le filtre
            ' Export dans le répertoire désiré
            .ExportAsPDF "C:\temp\" & SecArray(i) & ".pdf"
            s_fichier = "C:\temp\" & SecArray(i) & ".pdf"
            CheckPDFSize = FileLen(s_fichier) ' Returns file length (bytes).
        EnvoyeSMTP = "C:\Program Files\AGRIAL_OUTILS\tmail\tmail.exe -se <a href="mailto:BOenvoi.automatique@XXX.com">BOenvoi.automatique@XXX.com</a> -to " & SecArray(i) & " -smtp <AdresseDuServeurSMTP> -sub 'TitreAfaireApparaitre'  -att " & s_fichier
            'Shell (EnvoyeSMTP)
     
        Next
        ' enlever les filtres. important
        .AddComplexFilter SectionName, "=(0=0)"
        .ForceCompute
     
     
    End With
    Else
    ' si pas de section on enregistre tout de meme
    RepObj.ExportAsPDF "C:\temp\" & RepObj.Name
    End If
     
     
    MsgBox "Diffusion effectuée"
     
     
    Set DocObj = Nothing
    Set RepObj = Nothing
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Sub Document_AfterRefresh()
     
    Dim Response As String
     
    Response = MsgBox("Voulez vous diffuser le document aux conseillers ?", vbYesNo)
     
    If Response = vbYes Then    ' L'utilisateur a choisi Oui.
        Call CreationPdf
    Else    ' L'utilisateur a choisi Non.
        'MyString = "Non"    ' Effectue une action.
    End If
     
     
    End Sub

  5. #5
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Avec des balises CODE ça aurait été super
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Merci, c'est parfait.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Je viens de migrer en XI et vu que les macros ne fonctionne plus.

    Comment faire pour faire l'équivalent ?

    Merci

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut macro XI
    bonjour,

    ce genre de macro fonctionne en XI (DeskI) il faut la declarer en 'private sub document _AfterRefresh...'

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Le problème est que je n'ai pas accès dans Outils -> Macro tout est grisé.

    Alors que je me connecte avec les droits maximum équivalent de 'Administrator' à l'installation.

    Comment puis-je la rajouter dans mon rapport ?

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    bonjour
    es tu sur les erveur ou sur un poste client?
    as tu office sur ce poste
    ton desktop intelligence est il appele via infoview en modif de .rep ou en 'natif du poste'?

    @+

  11. #11
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    J'ai testé en poste client ou sur le serveur.
    J'ai office sur mon poste.
    Deski est appelé en direct.

    Mais je suis en citrix sauf quand je suis directement sur le serveur.

    @++

Discussions similaires

  1. [OL-2007] Envoi mail par VBA
    Par 3688marie dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 21/06/2011, 12h03
  2. Envoi mail avec OE en automatique (vba)
    Par mcz29 dans le forum Outlook Express / Windows Mail
    Réponses: 0
    Dernier message: 16/06/2010, 09h36
  3. [XL-2003] Envoi mail par VBA excel via outlook 2003
    Par Thierry1001 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/10/2009, 10h46
  4. [VBA] Envoi mail sans passer par outlook
    Par PoZZyX dans le forum Access
    Réponses: 8
    Dernier message: 12/04/2006, 16h27
  5. Envoi mail par Notes avec un autre nom
    Par why-not-mi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/10/2005, 16h35

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