probleme sur mon code d'envois d'email

cpeens

XLDnaute Occasionnel
Re Bonjour à tous je viens une fois de plus vous embetez

j'utilise ce code pour envoyer un mail via lotus
Code:
Sub EnvoiMail()
    Dim EMailPJ As String
    Dim Email(8) As String
    EMailPJ = ThisWorkbook.Path & "\Temp.xls"
    Email(1) = (UserForm1.ListView1.ListItems(1).ListSubItems(1).Text)
    Email(2) = (UserForm1.ListView1.ListItems(2).ListSubItems(1).Text)
    On Error Resume Next
    Email(3) = (UserForm1.ListView1.ListItems(3).ListSubItems(1).Text)
    Email(4) = (UserForm1.ListView1.ListItems(4).ListSubItems(1).Text)
    Email(5) = (UserForm1.ListView1.ListItems(5).ListSubItems(1).Text)
    Email(6) = (UserForm1.ListView1.ListItems(6).ListSubItems(1).Text)
    Email(7) = (UserForm1.ListView1.ListItems(7).ListSubItems(1).Text)
    Email(8) = (UserForm1.ListView1.ListItems(8).ListSubItems(1).Text)
    ' Boucle pour envoyer les mails
    For z = 1 To 8
    Application.StatusBar = "Envoi du mail à " & Email(z)
        EnvoiRef = prvSendNotes(("Alerte accident lié au travail d'un agent(e) de la CCIV"), EMailPJ, Email(z), SaveIt:=False)
    Next z
End Sub

les adresse mail sont fournie par une listview ce qui me permet d'envoyer plusieur jusqu'a 8 mail à la fois .

le soucis c'est que j'ai pas toujour 8 mail à envoyer et que du moment ou celui ci n'est pas renseignée j'ai une erreur index out of bounds

j'ai essayer de mettre donc un erreur resume next mais j'ai toujour cette erreur à l'endrois ou l'adresse mail n'est plus renseignée

ma question est comment puis je faire pour palier à cette erreur svp merci
 

chris

XLDnaute Barbatruc
Re : probleme sur mon code d'envois d'email

Bonjour

N'oublie pas la touche F1
ReDim, instruction


Instruction utilisée au niveau procédure pour réattribuer de l'espace de stockage aux variables de tableaux dynamiques.

Syntaxe

ReDim
[Preserve] varname(subscripts)[As type] [, varname(subscripts)[As type]] . . .
La syntaxe de l'instruction ReDim comprend les éléments suivants :
Élément Description Preserve Facultatif. Mot clé utilisé pour conserver les données d'un tableau préexistant dont vous modifiez la taille de la dernière dimension. varname Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables. subscripts Dimensions d'une variable tableau. Vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante : [lower To] upper [,[lower To] upper] . . .
La limite inférieure d'un tableau qui n'est pas explicitement fixée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
type
Facultatif. Type de données de la variable. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une clause As type distincte pour chaque variable à définir. Pour une variable de type Variant contenant un tableau, l'argument type décrit le type des éléments du tableau, mais ne permet pas de passer du type Variant à un autre.

ReDim, instruction, exemple


Cet exemple utilise l'instruction
ReDim pour allouer et réallouer de l'espace mémoire pour des variables de tableau dynamique. Il suppose que Option Base correspond à 1.
' Déclare un tableau dynamique.
Dim MyArray() As Integer
Redim
MyArray(5) ' Alloue 5 éléments.
For I = 1 To 5 ' Effectue la boucle 5 fois.
MyArray(I) = I ' Initialise le tableau.
Next I
L'instruction suivante redimensionne le tableau et efface les éléments.
Redim
MyArray(10) ' Redimensionne pour 10 éléments.
For I = 1 To 10 ' Effectue la boucle 10 fois.
MyArray(I) = I ' Initialise le tableau.
Next I
L'instruction suivante redimensionne le tableau mais n'efface pas les éléments.
' Redimensionne pour 15 éléments.
Redim
Preserve MyArray(15)

Je m'étais basée sur ta question (out of bounds) et l'idée était : au lieu de dimensionner à 8 ton array, tu ne précises pas la taille au début, puis tu le redimmensionne en début de procédure à 8 puis en fin de procédure avec preserve au nombre réel d'éléments.

Cependant en regardant ton code, je vois que ton problème viens du fait que tu ne gères pas correctement le contenu des UserForm1.ListView1.ListItems(x).
Le "on error resume next" n'est pas très propre comme solution : il faut que

  • tu testes si le contenu est vide ou non
  • tu aies un compteur afin de savoir combien de mails on été saisis
La valorisation de Email(x) pourrait se faire dans une boucle, x étant basé sur le compteur afin de pouvoir limiter la boucle suivante
 
Dernière édition:

cpeens

XLDnaute Occasionnel
Re : probleme sur mon code d'envois d'email

re merci pour tes explication je vais tenter deja la boucle Email par compte tester si mes item sont remplie ou vide je ne connais pas la syntax

es ce

UserForm1.ListView1.ListItems(x)=true ???
merci d'avance
 

cpeens

XLDnaute Occasionnel
Re : probleme sur mon code d'envois d'email

J'ai donc fais ma boucle comme ceci:

Code:
Sub EnvoiMail()
    Dim EMailPJ As String
    Dim Email(1) As String
    EMailPJ = ThisWorkbook.Path & "\Temp.xls"
    For z = 1 To 8
   Email(z) = (UserForm1.ListView1.ListItems(z).ListSubItems(1).Text)
    Application.StatusBar = "Envoi du mail à " & Email(z)
        EnvoiRef = prvSendNotes(("Alerte accident lié au travail d'un agent(e) de la CCIV"), EMailPJ, Email(z), SaveIt:=False)
    Next z
    
End Sub

je pense de ce coté sa devrais aller
 

cpeens

XLDnaute Occasionnel
Re : probleme sur mon code d'envois d'email

re bonjour à tous sa fais 3 jour que je suis toujour au meme point je rappel ce que je souhaite faire dans un userform envoyer un mail pret formater avec lotus à une liste de destinataire présent dans ma listview ses destinataire sont variable en nombre et nom.

Mon probleme est que quand j'envois un seul destinataire sa va si j'en envois plus il me trouvent pas les destinataire

j'ai suivie certain conseil et creer un compteur de destinataire pour varié le nombre d'envois meme soucis

je vous es mis mon projet complet sur ce sujet macro userform comme chez moi

pouvez vous m'aider svp mes connaissance etant un peu juste je ne sais plus quoi faire merci d'avance
 

Pièces jointes

  • Classeur1.xls
    45.5 KB · Affichages: 51
  • Classeur1.xls
    45.5 KB · Affichages: 60
  • Classeur1.xls
    45.5 KB · Affichages: 48

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T