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

VBA Access Discussion :

Petit soucis avec DoCmd.SendObject


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Petit soucis avec DoCmd.SendObject
    tout le monde!


    Alors voici l'objet de ma visite.

    J'utilise dans le cadre d'un formulaire de relance par mail, cette fonction VBA.
    Elle fonctionne, j'arrive même a lui attacher un etat en format Word.

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.OpenReport "Retardataires", acViewPreview, , "NomDistributeur='" & Me.ListeDistributeur.Column(1, 0) & "'"      
    DoCmd.SendObject acSendReport, , acFormatRTF, Me.ListeDistributeur.Column(2, i), , , Filmmm, textemsg, True
    Comme vous pouvez le constatez, il y a plusieurs destinataires, que je vais chercher en incrémentant ma variable a l'aide d'une boucle For.

    Mon soucis etant que,
    si ma liste de destinataires est composée de plusieurs destinataires, j'aimerais qu'il m'ouvre plusieurs fenetre Outlook, une par destinataires.
    Car dans mon cas, il attend que j'ai envoyé le premier mail pour ouvrir la deuxieme fenetre.

    Le vrai probleme etant qu'en fermant une fenetre outlook (sans avoir envoyer le mail), j'arete la boucle et je me retrouve avec un message d'erreur "L'action SendObject a été annulé". Du coup je n'ai plus accès au reste de mes mails à envoyer.

    Si quelqu'un aurait une idée pour m'aider à contourner ceci.

    Le but n'etant pas d'envoyer les mails automatiquement, mais bien de me les préparer pour ensuite me permettre une personnalisation des mails.

    J'espere avoir été clair.
    si ce n'est pas le cas faites moi signe s'il vous plait.
    Merci

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Tu devrais t'en sortir avec une gestion d'erreur.
    Il faut ignorer l'erreur 2501.

    Code vb : 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
    Sub EnvoiEmail()
    ' ...
    On Error GoTo ERRH
    For i = 0 To Me.ListeDistributeur.ListCount-1
        DoCmd.OpenReport "Retardataires", acViewPreview, , "NomDistributeur='" & Me.ListeDistributeur.Column(1, 0) & "'"      
        DoCmd.SendObject acSendReport, , acFormatRTF, Me.ListeDistributeur.Column(2, i), , , Filmmm, textemsg, True
    Next
     
    Exit Sub
     
    ERRH:
    Select Case Err.Number
       Case 2501 ' L'action ... a été annulée - ignorer cette erreur
            Resume Next
       Case Else
            Select Case MsgBox("Erreur '" & Err.Number & "' :" & vbCrLf & vbCrLf & _
                               Err.Description, vbAbortRetryIgnore)
                Case vbRetry
                     Resume 0
                Case vbIgnore
                     Resume Next
            End Select
    End Select
    End Sub
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour, merci LedZeppII.
    En reprenant ton idée je suis arrivé à gerer cette erreur.
    Malheureusement en fermant pour la deuxieme fois la fenetre outlook, j'ai à nouveau le message 2501 qui s'affiche.

    Cela veut donc dire que la deuxième fois je en parviens pas en rentrer dans ma gestion d'erreur. Mais je n'arrive pas a trouver pourquoi.

    voici mon code en entier.

    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
    On Error GoTo Erreur
    For i = 0 To Me.ListeDistributeur.ListCount - 1
    Reprendre:
     
            DoCmd.OpenReport "Retardataires", acViewPreview, , "NomDistributeur='" & Me.ListeDistributeur.Column(1, i) & "'"
            DoCmd.SendObject acSendReport, "retardataires", acFormatRTF, Me.ListeDistributeur.Column(2, i), , , Filmmm, textemsg, True
            DoCmd.Close acReport, "Retardataires"
     
    Next i
    Exit Sub
     
    Erreur:
    If Err.Number = 2501 Then
        DoCmd.Close acReport, "Retardataires"
        i = i + 1
        If i = Me.ListeDistributeur.ListCount Then Exit Sub
        GoTo Reprendre
    Else
        MsgBox Err.Description
    End If
    Exit Sub

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Il faut mettre
    au lieu de La gestion d'erreurs se fait avec On Error et Resume.
    Resume signale que l'erreur a été traitée et reprend l'exécution du code à l'endroit désigné

    Je pense que ton code peut se simplifier ainsi :
    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
    On Error GoTo Erreur
    For i = 0 To Me.ListeDistributeur.ListCount - 1
     
            DoCmd.OpenReport "Retardataires", acViewPreview, , "NomDistributeur='" & Me.ListeDistributeur.Column(1, i) & "'"
            DoCmd.SendObject acSendReport, "retardataires", acFormatRTF, Me.ListeDistributeur.Column(2, i), , , Filmmm, textemsg, True
            DoCmd.Close acReport, "Retardataires"
     
    Next i
    Exit Sub
     
    Erreur:
    If Err.Number = 2501 Then
        Resume Next
    Else
        MsgBox Err.Description
    End If
    Resume Next reprend le cours du programme à la ligne suivant celle ayant provoqué l'erreur.

    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 27
    Points : 17
    Points
    17
    Par défaut

    Merci beaucoup LedZeppII tu m'as evité une longue journée de mal de crâne.

    Tout fonctionne à merveille.
    C'est mon tuteur qui va etre content

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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