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

Access Discussion :

Passer Tableau de String à une procedure.


Sujet :

Access

  1. #1
    Membre confirmé Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut Passer Tableau de String à une procedure.
    Bonjour à tous et à toutes!

    J'ai un soucis dans une partie de mon code VBA (v6.3).

    Je dois passer à une procédure de mailing une série d'arguments pour l'envoi d'un mail. Tout mes arguments sont des variables "string".
    J'ai un argument optionel qui est la piece jointe. Le problème est que si je souhaite envoyer plus d'une piece jointe, je dois changer la déclaration de ma variable relative au piece jointe et en faire un tableau d string. Sauf que lorsque j'execute ma macro, le tableau n'est pas récupéré et le programme s'arrete.
    Le message d'erreur est : Type d'argument ByRef incompatible

    Voilà 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
    14
    15
    16
    17
    18
    Sub Mailing
     
    Dim sAdresse as string
    Dim sCorps as string
    Dim sObjet as string
    Dim sPJ() as string
     
    //////// ici le code qui initialise mes variables ////////
     
    EnvoiMail sAdresse, sCorps, sObjet, sPJ
     
    End Sub
     
    Sub EnvoiEmail(sMail As String, sObjet As String, sCorps As String, Optional sPJ As String)
     
    ///////// ici le code qui va envoyer mon mail ///////
     
    End Sub
    En laissant la variable sPJ en string, pas de probleme, mes parametres passsent sans problèmes. Mais avec la modifiction (sPJ en tableau de string), ça plante. J'ai essayé de résoudre le problème en ajoutant des parenthèses : sPJ() mais même soucis et message d'erreur, idem en spécifiant les dimensions du tableau à sPJ.
    Je connais bien VB DotNet, mais j'avoue que je débute en VB6 et VBA.

    Quelle est la bonne synthaxe pour me permettre d'envoyer ce tableau de string à ma procédure EnvoiMail ???

    Merci de votre aide !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    tu as essayé spj as variant ?
    ou paramarray ?

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Par défaut
    salut,

    pas tout suivi mais ce que tu appelles pièce jointe ne représenterait-il pas en fait le chemin vers la pièce jointe à joindre au mail ?

    si oui tu peux la garder au format string et en utilisant comme convention de séparer tes différentes pièce jointe par un ;
    ex chemin1;chemin2;chemin3

    il te suffit ensuite dans ta fonction de redécouper le string pour récupérer les différents chemins

    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
      If Not IsMissing(strPieceJointe) Then
        strPieceJointe = Trim(strPieceJointe)
        If Not IsNull(strPieceJointe) Then
          lngPosition = InStr(strPieceJointe, ";")
          While Len(strPieceJointe) > 0
            If lngPosition = 0 Then
              objMail.AddAttachment strPieceJointe
              strPieceJointe = ""
            Else
              objMail.AddAttachment Left(strPieceJointe, lngPosition - 1)
              strPieceJointe = Right(strPieceJointe, Len(strPieceJointe) - lngPosition)
              lngPosition = InStr(strPieceJointe, ";")
            End If
          Wend
        End If
      End If

  4. #4
    Membre confirmé Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut
    Oui, j'ai pensé aux séparations, mais avec la variable VARIANT dans la procédure qui récupere les paramètres ça foncionne nickel.
    J'ai pas testé ta methode de découpage de chaînes Nohant, mais elle doit fonctionner.

    Donc ma procedure commence comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub EnvoiEmail(sMail As String, Objet As String, Corps As String, Optional PJ As Variant)
    Et ça roule !!

    Merci à vous !!

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

Discussions similaires

  1. comment passer 2 arguments a une procedure
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 20h02
  2. Réponses: 1
    Dernier message: 20/07/2007, 07h19
  3. [TSQL] Passer des tableaux a une procedure stockee
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/06/2007, 16h22
  4. Réponses: 1
    Dernier message: 09/03/2007, 17h26
  5. passer un tableau a une procedure stockee
    Par graphicsxp dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/04/2005, 11h39

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