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

VB 6 et antérieur Discussion :

Plusieurs destinataires à un message


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut Plusieurs destinataires à un message
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Do
            Adresse = Adresse & Destinataire(y) & "; "
            y = y + 1
        Loop Until y > x
        MAPISession1.SignOn
        MAPIMessages1.MsgIndex = -1
        MAPIMessages1.SessionID = MAPISession1.SessionID
        MAPIMessages1.RecipDisplayName = Adresse
        MAPIMessages1.MsgSubject = Text2.Text       'Objet
        MAPIMessages1.MsgNoteText = Text1.Text                'Texte
        MAPIMessages1.Send
        MAPISession1.SignOff
    A la fin, Adresse ne contient que le premier destinataire
    Quelqu'un pourrais me dire ou est l'erreur ?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    D'après moi, le problème vient de la boucle.

    Avant le Do, affiche la valeur de tes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MsgBox "x = " & x
    MsgBox "y = " & y
    Do
    ....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par pc75 Voir le message
    Bonjour,

    D'après moi, le problème vient de la boucle.

    Avant le Do, affiche la valeur de tes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MsgBox "x = " & x
    MsgBox "y = " & y
    Do
    ....
    x = 4
    y = 1

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Et tu ne vois pas l'erreur ?

    Quand tu fais :

    Loop Until y > x
    Ca équivaut à dire :
    Ce code devrait mieux fonctionner :
    PS : ou y <= x

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Je ne pense pas que c'est ça,

    En rajoutant un Msgbox,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Do
            Adresse = Adresse & Destinataire(y) & "; "
            Call MsgBox(Destinataire(y))
            y = y + 1
        Loop Until y < x
    je n'ai qu'un message (le premier destinataire)
    mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Do
            Adresse = Adresse & Destinataire(y) & "; "
            Call MsgBox(Destinataire(y))
            y = y + 1
        Loop Until y > x
    le message m'affiche tout les destinataire 1 par 1
    mais il n'y a toujours que le premier destinataire

    PS: d'après moi, "until" veut dire "jusqu'à" et "while" veut dire "tant que"

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Alors comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Do while y < x
            Adresse = Adresse & Destinataire(y) & "; "
            Call MsgBox(Destinataire(y))
            y = y + 1
        Loop

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    ça ne change pas

    je pense que ça viens de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Adresse = Adresse & Destinataire(y) & "; "
    l'addition des string ne doit pas marcher

  8. #8
    Membre habitué
    Homme Profil pro
    Analyste développeur VB6, SQL, VB.NET, C#
    Inscrit en
    Avril 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste développeur VB6, SQL, VB.NET, C#
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2003
    Messages : 111
    Points : 141
    Points
    141
    Par défaut
    bonjour,

    sinon pour la concaténation de valeurs d'un tableau de string avec délimiteur, il y a la fonction 'Join':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adresse = Join(Destinataire, ";")
    cdlt,

  9. #9
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Et pourquoi faire si compliqué... puisque x , je suppose est le maximum de messages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Adresse =""   ' d'abord initialiser la variable
    for y=1 to x
           Adresse = Adresse & Destinataire(y) & "; "
    next
     
    ...
    Et bien sûr 'Adresse doitt être une variable 'string et Destinataire un tableau
    également 'string

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par littledoudou Voir le message
    bonjour,

    sinon pour la concaténation de valeurs d'un tableau de string avec délimiteur, il y a la fonction 'Join':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adresse = Join(Destinataire, ";")
    cdlt,
    et
    Citation Envoyé par iclic Voir le message
    Bonjour,

    Et pourquoi faire si compliqué... puisque x , je suppose est le maximum de messages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Adresse =""   ' d'abord initialiser la variable
    for y=1 to x
           Adresse = Adresse & Destinataire(y) & "; "
    next
     
    ...
    Et bien sûr 'Adresse doitt être une variable 'string et Destinataire un tableau
    également 'string
    Même problème qu'au début : que le premier destinataire

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Et j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim Adresse As String, Destinataire(4) As String
    Dim y As Integer, x As Integer
     
    Destinataire(1) = "bibi"
    Destinataire(2) = "baba"
    Destinataire(3) = "bubu"
    Destinataire(4) = "bobo"
    x = 4
    Adresse = ""
    For y = 1 To x
       Adresse = Adresse & Destinataire(y) & ";"
    Next
    MsgBox (Adresse)
    Adresse donne bien comme résultat
    = "bibi;baba;bubu;bobo;"

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Oui mais pour moi Destinataire(y) est récupérer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim sSpaces As String
    sSpaces = Space$(100)
    y = 1
    Do
         Call GetPrivateProfileString("GENERAL", "e-mail", "", sSpaces, Len(sSpaces),  App.Path & "\accounts\" & login(y))
         If Not sSpaces = "" Then destinataire(y) = (sSpaces)
         y = y + 1
    Loop Until y > x

  13. #13
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Que vaut 'login(y)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Call GetPrivateProfileString("GENERAL", "e-mail", "", sSpaces, Len(sSpaces),  App.Path & "\accounts\" & login(y))
     If Not sSpaces = "" Then destinataire(y) = (sSpaces )
    et que retourne 'sSpaces (là je ne vois pas ce que les parenthèses viennent faire)
    Et encore une fois un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for y = 1 to x
    ...
    serait plus simple.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    login(y) est le nom de fichier ("XXX.ini")
    sSpaces retourne la valeur ou l'adresse avec plein d'espaces après

    EDIT : je viens de trouver une nouvelle fonction pour lire un ini et ça marche voici donc mon code :

    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
     
    Option Explicit
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyname As Any, ByVal lpdefault As String, ByVal lpreturnedstring As String, ByVal nsize As Long, ByVal lpfilename As String) As Long
     
    Private Sub Form_Load()
        Dim y As Integer, x As Integer
        Dim Adresse As String
        x = 4
        ReDim Destinataire(1 To x) As String, login(1 To x) As String
     
        login(1) = "Toms.ini"
        login(2) = "Toms2.ini"
        login(3) = "Toms3.ini"
        login(4) = "Toms4.ini"
     
        For y = 1 To x
            Destinataire(y) = GetVar(App.Path & "\accounts\" & login(y), "GENERAL", "e-mail")
        Next
        Adresse = ""
        For y = 1 To x
           If y = x Then
           Adresse = Adresse & Destinataire(y)
           Else
           Adresse = Adresse & Destinataire(y) & ";"
           End If
        Next
        MsgBox (Adresse)
        MAPISession1.SignOn
        MAPIMessages1.MsgIndex = -1
        MAPIMessages1.SessionID = MAPISession1.SessionID
        MAPIMessages1.RecipDisplayName = Adresse
        MAPIMessages1.MsgSubject = Text2.Text
        MAPIMessages1.MsgNoteText = Text1.Text
        MAPIMessages1.Send
        MAPISession1.SignOff
    End Sub
     
    Public Function GetVar(File As String, Header As String, Var As String) As String
    Dim sSpaces As String   ' Max string length
    Dim szReturn As String  ' Return default value if not found
     
        szReturn = vbNullString
     
        sSpaces = Space$(5000)
     
        Call GetPrivateProfileString(Header, Var, szReturn, sSpaces, Len(sSpaces), File)
     
        GetVar = RTrim$(sSpaces)
        GetVar = Left$(GetVar, Len(GetVar) - 1)
    End Function

  15. #15
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Pour éviter ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For y = 1 To x
           If y = x Then
           Adresse = Adresse & Destinataire(y)
           Else
           Adresse = Adresse & Destinataire(y) & ";"
           End If
        Next
    Tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For y = 1 To x
            Adresse = Adresse & Destinataire(y) & ";"
    Next
    Adresse = Left (Adresse, len (Adresse) - 1)
    Pourquoi faire compliqué quand on peut faire simple?

    A+ et bonne continuation

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci

    Une dernière question :

    Est-ce que quelqu'un sait comment ajouter des adresse en cci (en copie cachée ) ?

  17. #17
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Essaye quelque chose du genre

    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
     
       With MAPIMessages1
     
    '.....
     
           ADR = Split(SendTo, ";")
           For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapToList
            End If
          Next
          ADR = Split(CopyTo, ";")
          For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapCcList
            End If
          Next
          ADR = Split(BCopyTo, ";")
          For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapBccList
            End If
          Next
     
    '....
    End With

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    merci ça fonctionne très bien !

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

Discussions similaires

  1. [2.x] Formulaire pour envoyer le message à plusieurs destinataires
    Par ziemelitis dans le forum Symfony
    Réponses: 8
    Dernier message: 30/05/2012, 14h02
  2. [javax.mail] envoi à plusieurs destinataires
    Par michaelbob dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/05/2006, 12h41
  3. un seul formulaire, plusieurs destinataires / fenetres
    Par jlf dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2006, 22h30
  4. [Mail] Plusieurs destinataires fonction mail
    Par Jiraiya42 dans le forum Langage
    Réponses: 8
    Dernier message: 27/04/2006, 23h00
  5. Créer plusieures file de message différentes
    Par progamer54 dans le forum Linux
    Réponses: 6
    Dernier message: 06/04/2006, 15h36

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