Exclure des valeurs dans une boucle

Résolu
evilmajestik
Messages postés
38
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
5 juillet 2005
- 20 déc. 2004 à 13:14
cs_labout
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
- 20 déc. 2004 à 20:49
Salut all,

Je voudrais savoir si on peut dire à une boucle "n'exécute pas le traitement si mon compteur prend telle valeur".

Exemple dans un export excel :

For row = 23 To 50

XlApp.ActiveSheet.Cells(row, col) = rcsAuditEval.Fields(field)

field = field + 1

Next

Sans faire le test avec un Si (car je peux avoir bcp de valeurs à exclure), comment puis-je faire pour lui dire de ne pas faire le traitement quand row prend les valeurs 42, 45, 48, 49 par exemple ?

Merci à tous.

6 réponses

cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
20 déc. 2004 à 19:32
Salut,

OK avec DARKSIDIOUS, je crois que le mieux est le select case :

For row = 23 To 50

select case row
case 42, 45, 48, 49
case else
XlApp.ActiveSheet.Cells(row, col) = rcsAuditEval.Fields(field)
field = field + 1
end select
Next

A la place des valeurs en dur (42, 45, 48, 49) tu peux mettre des variables (pourquoi pas des valeurs d'un tableau d'ailleurs).

Cordialement, CanisLupus
3
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
20 déc. 2004 à 13:29
Tu peux soit faire plusieurs boucles, soit faire un select case.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cs_labout
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
8
20 déc. 2004 à 13:39
labout

Je metrais les valeur dans un tableau 1 valeur par élément
puis je parcourerais le tableau pour voir si la valeur est dedans

Dim aTab(10) as string
atab(0)="23"
atab(0)="24"
atab(0)="28"

For row = 23 To 50

if testeRow(atab,row) =false then
XlApp.ActiveSheet.Cells(row, col) = rcsAuditEval.Fields(field)
endif
field = field + 1

Next

function TestRow(tableau,row) as boolean
dim i as integer
TestRow=false
for i=0 to ubound(tableau)
if tableau(i)=row then
testrow=true
exit for
endif
next

@+
0
cs_labout
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
8
20 déc. 2004 à 19:47
labout

je crois que le tableau était dans ma proposition
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
20 déc. 2004 à 20:20
Mais je faisais référence à ta proposition labout :) , quoiqu'avec
atab(0)="23"
atab(0)="24"
atab(0)="28"

on obtient
atab(0) ="28"
et tout le reste à ""

d'autre part, un tableau de string dans le cas présent n'est pas le top étant donné que les valeurs de row sont numériques.

Cordialement, CanisLupus
0
cs_labout
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
8
20 déc. 2004 à 20:49
labout

Oui mais ce n'est pas du VB.net pointilleux sur ce point là
pour les atab(0))"23"
if s'agit bien sur d'une erreur le suivant est atab(1) etc..
du à un copier coller !
@+
0