Subscript out of range - Erreur dans une boucle

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Subscript out of range - Erreur dans une boucle

Messagepar Cyril Niang » 20 Juin 2011 à 14:34

Bonjour,

J'ai une erreur bizarre sur le code suivant :

Code : Tout sélectionner
   Dim recepients() As String   
   Dim listeNoms As Variant
   Dim Nb As Integer
   
   If (s.Fieldgettext("CycleCourt") = "") Then
      If (s.fieldgettext("ProjectMngr") <> "")  Then
         listeNoms = Split (s.fieldgettext("ProjectMngr"), ";")   ' J'ai deux noms dans ce champ multi-valué
         Nb=Ubound (listeNoms) 'Il me retourne la valeur 1
         Redim recipients (Nb+1) 'Car je dois rajouter une autre personne
         For x = 0 To  Nb
            recepients(x)= listeNoms(x) & "/OU/O" ' Là j'ai l'erreur Subscript Out Of Range
         Next
      End If
   End If
   
   recipients(Nb+1) = s.FieldGetText("NomCommercial") & "/OU/O" ' La dernière personne à rajouter.


En mode debug, le tableau RECEPIENTS dispose bien de trois indices [0], [1], [2] et LISTENOMS, deux indices [0], [1].

Pourquoi ça me pose un problème ?
Dernière édition par Cyril Niang le 20 Juin 2011 à 14:41, édité 1 fois.
Cordialement

Image
Cyril Niang
Roi des posts
Roi des posts
 
Message(s) : 719
Inscrit(e) le : 16 Déc 2004 à 11:14
Localisation : Dakar

Messagepar Cyril Niang » 20 Juin 2011 à 14:40

arrrrrffffff!!!! J'ai vu mon problème c'est à cause d'une lettre!!!! recipients au lieu de recEpients!!!! Ahhh! il y a des jours, je vous jure...
Cordialement

Image
Cyril Niang
Roi des posts
Roi des posts
 
Message(s) : 719
Inscrit(e) le : 16 Déc 2004 à 11:14
Localisation : Dakar

Messagepar Michael DELIQUE » 20 Juin 2011 à 14:40

salut

j'ai du mal a comprendre le but de ton code !?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Cyril Niang » 20 Juin 2011 à 15:17

Salut Michael,

Oui c'est vrai je n'ai pas mis toutes les déclarations... Mais j'ai trouvé mon erreur!!
Cordialement

Image
Cyril Niang
Roi des posts
Roi des posts
 
Message(s) : 719
Inscrit(e) le : 16 Déc 2004 à 11:14
Localisation : Dakar

Messagepar Michael DELIQUE » 20 Juin 2011 à 15:18

tu sais qu'il ya des functions native en Ls pour ajouter des valeurs a un array
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Cyril Niang » 20 Juin 2011 à 15:42

C'est vrai que je n'ai pas poussé ma recherche à ce sujet! Quelles sont-elles?
Cordialement

Image
Cyril Niang
Roi des posts
Roi des posts
 
Message(s) : 719
Inscrit(e) le : 16 Déc 2004 à 11:14
Localisation : Dakar

Messagepar Michael DELIQUE » 20 Juin 2011 à 15:52

re,

- ArrayAppend
- ArrayGetIndex
- ArrayReplace
- ArrayUnique

l'aide en ligne te donnera tous les détails
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 20 Juin 2011 à 22:48

si je peux me permettre, ce qui me gene dans ce bout de code, c'est de nommer une variable s alors qu'elle représente apparement un NotesUIDocument. s est de type NotesSession en générale

et si tu n'as pas d'obligation à travailler en UI, tu récupères directement un array avec doc.ProjectMngr plutôt que faire un split sur une chaine de texte obtenue par uidoc.FieldGetText (qui j'imagine fait un join à partir de l'array)
avec la fonction ArrayAppend indiquée par Michael, ça pourrait donner qch comme recipients = ArrayAppend( doc.ProjectMngr , doc.NomCommercial )
mais je vois que tu parcours les valeurs pour ajouter OU/O je suppose que c'est tu as remplacer par les valeurs de OU et O dans ton cas. Mais si ces valeurs sont en dur, c'est qu'il n'y a pas plusieurs OU et donc pas de risque confusion en utilisant que le CN donc si tu veux utiliser recipients comme destinataires d'un mail, OU/O n'est pas indispensable pour le routage
Mais par habitude, je préfère stocker dans les doc les noms complet plutot que les CN
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Cyril Niang » 24 Juin 2011 à 11:44

roubech,
Ce bout de code est tiré d'une fonction CHECKVALIDATION dans laquelle je passe en paramètre le UIDOC. Cette fonction est appelée dans la méthode QuerySave (Source, Continue), donc j'ai trouvé normal de passer cette variable UIDOC.
Concernant les OU/O, le champ ProjectMngr est rempli par un champ "checkbox" dans lequel je remplis en dur les noms car ils ne sont pas appelés à changer. Par soucis d'affichage, j'ai renseigné les noms tels qu'ils sont dans le CN.

Michael,
Merci pour cette astuce, je vais tacher d'améliorer mon code.
Cordialement

Image
Cyril Niang
Roi des posts
Roi des posts
 
Message(s) : 719
Inscrit(e) le : 16 Déc 2004 à 11:14
Localisation : Dakar


Retour vers Développement