Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

select case en boucle

8 réponses
Avatar
Elicend_News
bonjour

est il possible de faire un select case avec la definition des cases dans
une boucle

du style :
dim i as integer
(variable définie ailleur en public)

select case variable
for i = 1 to 10
case i
msgbox(i)
next i
case else
msgbox("valeur non prise en compte")
end select

chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce impossible
ce qui serait assez contraignant pour une appli ayant une centaine de cas
possible ;)

merci d'avance :)
Elicend

8 réponses

Avatar
Clive Lumb
Ce que tu voudrais faire n'est pas claire ...
Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à 15 etc.,
alors on peut utiliser:

select case i
case is = 1 to 10

case is = 11 to 20

case is = 52, 63, 75

case else
end select



"Elicend_News" a écrit dans le message de
news:3fcb089d$0$27028$

bonjour

est il possible de faire un select case avec la definition des cases dans
une boucle

du style :
dim i as integer
(variable définie ailleur en public)

select case variable
for i = 1 to 10
case i
msgbox(i)
next i
case else
msgbox("valeur non prise en compte")
end select

chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce


impossible
ce qui serait assez contraignant pour une appli ayant une centaine de cas
possible ;)

merci d'avance :)
Elicend




Avatar
Elicend_News
euh non en effet je me suis mal fait comprendre :
dans mon ex les cas sont 1, 2 ,3 ... jusqu'a 10

l'equivalent serait
dim i as integer
(variable définie ailleur en public)

select case variable
case 1
msgbox("1")
case 2
msgbox("2")
case 3
msgbox("3")
...
case 10
msgbox("10")
case else
msgbox("valeur non prise en compte")
end select

et je voudrais un truc du style :
> for i = 1 to 10
> case i
> msgbox(i)
> next i



s'il y a non plus 10 mais 100 cas, ca devient vite infernal... peut etre
qu'alors le select case n'est plus la bonne méthode?

merci de ton aide

elicend


"Clive Lumb" a écrit dans le message de
news:%23fJzxD$
Ce que tu voudrais faire n'est pas claire ...
Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à 15 etc.,
alors on peut utiliser:

select case i
case is = 1 to 10

case is = 11 to 20

case is = 52, 63, 75

case else
end select



"Elicend_News" a écrit dans le message de
news:3fcb089d$0$27028$
>
> bonjour
>
> est il possible de faire un select case avec la definition des cases


dans
> une boucle
>
> du style :
> dim i as integer
> (variable définie ailleur en public)
>
> select case variable
> for i = 1 to 10
> case i
> msgbox(i)
> next i
> case else
> msgbox("valeur non prise en compte")
> end select
>
> chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce
impossible
> ce qui serait assez contraignant pour une appli ayant une centaine de


cas
> possible ;)
>
> merci d'avance :)
> Elicend
>
>




Avatar
Clive Lumb
S'il s'agit d'afficher simplement la valuer du compteur, alors
for i=1 to 10
msgbox "La valeur de i est " & str$(i)
next i
suffira n'est-ce pas ? Pas besoin d'un select case.
Si le message est différent pour chaque valeur de i, alors il suffit de
créer une matrice des messages
Dim Msgs(1 to 10) as String
Msgs(1)="Bonjour"
Msg(2)="Bonsoir"
....
Msgs(10)="Adieu"
for i=1 to 10
msgbox Msgs(i)
next i



"Elicend_News" a écrit dans le message de
news:3fcb3f29$0$27026$
euh non en effet je me suis mal fait comprendre :
dans mon ex les cas sont 1, 2 ,3 ... jusqu'a 10

l'equivalent serait
dim i as integer
(variable définie ailleur en public)

select case variable
case 1
msgbox("1")
case 2
msgbox("2")
case 3
msgbox("3")
...
case 10
msgbox("10")
case else
msgbox("valeur non prise en compte")
end select

et je voudrais un truc du style :
> > for i = 1 to 10
> > case i
> > msgbox(i)
> > next i

s'il y a non plus 10 mais 100 cas, ca devient vite infernal... peut etre
qu'alors le select case n'est plus la bonne méthode?

merci de ton aide

elicend


"Clive Lumb" a écrit dans le message de
news:%23fJzxD$
> Ce que tu voudrais faire n'est pas claire ...
> Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à 15


etc.,
> alors on peut utiliser:
>
> select case i
> case is = 1 to 10
>
> case is = 11 to 20
>
> case is = 52, 63, 75
>
> case else
> end select
>
>
>
> "Elicend_News" a écrit dans le message de
> news:3fcb089d$0$27028$
> >
> > bonjour
> >
> > est il possible de faire un select case avec la definition des cases
dans
> > une boucle
> >
> > du style :
> > dim i as integer
> > (variable définie ailleur en public)
> >
> > select case variable
> > for i = 1 to 10
> > case i
> > msgbox(i)
> > next i
> > case else
> > msgbox("valeur non prise en compte")
> > end select
> >
> > chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce
> impossible
> > ce qui serait assez contraignant pour une appli ayant une centaine de
cas
> > possible ;)
> >
> > merci d'avance :)
> > Elicend
> >
> >
>
>




Avatar
Elicend_News
merci pour tes pistes

en fait,
suivant les les valeur de i que je vais obtenir, je voudrais faire une sorte
de call vers un sous programme avec un code en 4bit en sortie vers le port
prallele, et mon select case servait à définir le code 4 bit à envoyer.

@ plus
Elicend

"Clive Lumb" a écrit dans le message de
news:e$
S'il s'agit d'afficher simplement la valuer du compteur, alors
for i=1 to 10
msgbox "La valeur de i est " & str$(i)
next i
suffira n'est-ce pas ? Pas besoin d'un select case.
Si le message est différent pour chaque valeur de i, alors il suffit de
créer une matrice des messages
Dim Msgs(1 to 10) as String
Msgs(1)="Bonjour"
Msg(2)="Bonsoir"
....
Msgs(10)="Adieu"
for i=1 to 10
msgbox Msgs(i)
next i



"Elicend_News" a écrit dans le message de
news:3fcb3f29$0$27026$
> euh non en effet je me suis mal fait comprendre :
> dans mon ex les cas sont 1, 2 ,3 ... jusqu'a 10
>
> l'equivalent serait
> dim i as integer
> (variable définie ailleur en public)
>
> select case variable
> case 1
> msgbox("1")
> case 2
> msgbox("2")
> case 3
> msgbox("3")
> ...
> case 10
> msgbox("10")
> case else
> msgbox("valeur non prise en compte")
> end select
>
> et je voudrais un truc du style :
> > > for i = 1 to 10
> > > case i
> > > msgbox(i)
> > > next i
>
> s'il y a non plus 10 mais 100 cas, ca devient vite infernal... peut etre
> qu'alors le select case n'est plus la bonne méthode?
>
> merci de ton aide
>
> elicend
>
>
> "Clive Lumb" a écrit dans le message de
> news:%23fJzxD$
> > Ce que tu voudrais faire n'est pas claire ...
> > Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à 15
etc.,
> > alors on peut utiliser:
> >
> > select case i
> > case is = 1 to 10
> >
> > case is = 11 to 20
> >
> > case is = 52, 63, 75
> >
> > case else
> > end select
> >
> >
> >
> > "Elicend_News" a écrit dans le message de
> > news:3fcb089d$0$27028$
> > >
> > > bonjour
> > >
> > > est il possible de faire un select case avec la definition des cases
> dans
> > > une boucle
> > >
> > > du style :
> > > dim i as integer
> > > (variable définie ailleur en public)
> > >
> > > select case variable
> > > for i = 1 to 10
> > > case i
> > > msgbox(i)
> > > next i
> > > case else
> > > msgbox("valeur non prise en compte")
> > > end select
> > >
> > > chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce
> > impossible
> > > ce qui serait assez contraignant pour une appli ayant une centaine


de
> cas
> > > possible ;)
> > >
> > > merci d'avance :)
> > > Elicend
> > >
> > >
> >
> >
>
>




Avatar
Clive Lumb
Ce code est-il en rélation direct avec i ? La rélation i<->code est elle
immuable ?
Donnez-nous un exemple plus concret

"Elicend_News" a écrit dans le message de
news:3fcb52e5$0$27037$
merci pour tes pistes

en fait,
suivant les les valeur de i que je vais obtenir, je voudrais faire une


sorte
de call vers un sous programme avec un code en 4bit en sortie vers le port
prallele, et mon select case servait à définir le code 4 bit à envoyer.

@ plus
Elicend

"Clive Lumb" a écrit dans le message de
news:e$
> S'il s'agit d'afficher simplement la valuer du compteur, alors
> for i=1 to 10
> msgbox "La valeur de i est " & str$(i)
> next i
> suffira n'est-ce pas ? Pas besoin d'un select case.
> Si le message est différent pour chaque valeur de i, alors il suffit de
> créer une matrice des messages
> Dim Msgs(1 to 10) as String
> Msgs(1)="Bonjour"
> Msg(2)="Bonsoir"
> ....
> Msgs(10)="Adieu"
> for i=1 to 10
> msgbox Msgs(i)
> next i
>
>
>
> "Elicend_News" a écrit dans le message de
> news:3fcb3f29$0$27026$
> > euh non en effet je me suis mal fait comprendre :
> > dans mon ex les cas sont 1, 2 ,3 ... jusqu'a 10
> >
> > l'equivalent serait
> > dim i as integer
> > (variable définie ailleur en public)
> >
> > select case variable
> > case 1
> > msgbox("1")
> > case 2
> > msgbox("2")
> > case 3
> > msgbox("3")
> > ...
> > case 10
> > msgbox("10")
> > case else
> > msgbox("valeur non prise en compte")
> > end select
> >
> > et je voudrais un truc du style :
> > > > for i = 1 to 10
> > > > case i
> > > > msgbox(i)
> > > > next i
> >
> > s'il y a non plus 10 mais 100 cas, ca devient vite infernal... peut


etre
> > qu'alors le select case n'est plus la bonne méthode?
> >
> > merci de ton aide
> >
> > elicend
> >
> >
> > "Clive Lumb" a écrit dans le message de
> > news:%23fJzxD$
> > > Ce que tu voudrais faire n'est pas claire ...
> > > Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à 15
> etc.,
> > > alors on peut utiliser:
> > >
> > > select case i
> > > case is = 1 to 10
> > >
> > > case is = 11 to 20
> > >
> > > case is = 52, 63, 75
> > >
> > > case else
> > > end select
> > >
> > >
> > >
> > > "Elicend_News" a écrit dans le message de
> > > news:3fcb089d$0$27028$
> > > >
> > > > bonjour
> > > >
> > > > est il possible de faire un select case avec la definition des


cases
> > dans
> > > > une boucle
> > > >
> > > > du style :
> > > > dim i as integer
> > > > (variable définie ailleur en public)
> > > >
> > > > select case variable
> > > > for i = 1 to 10
> > > > case i
> > > > msgbox(i)
> > > > next i
> > > > case else
> > > > msgbox("valeur non prise en compte")
> > > > end select
> > > >
> > > > chez moi ca ne fonctionne pas !?! y a t il uen solution ou est ce
> > > impossible
> > > > ce qui serait assez contraignant pour une appli ayant une centaine
de
> > cas
> > > > possible ;)
> > > >
> > > > merci d'avance :)
> > > > Elicend
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Elicend_News
salut

encore merci de ton aide

bon alors pour etre plus précis :
c'est une sortie de pilote automatique par l'intermediaire du port
parallele, j'ai des segments qui viennent toujours dans le meme ordre, et le
passage d'un segment a l'autre se fait par l'activation d'un capteur. Soit i
le numéro du segment sur lequel je me trouve.

a chaque changement sur i je souhaite faire un choix
call asservissement_port_parallele(code )

le choix peut se faire aussi plus loin, avec un call
asservissement_port_parallele (i)

mais je ne couperai pas ici au select case i pour attribuer le code
pour le code je n'ai pas encore défini l'algorithme pour le calculer en
fonction du i, mais je suis quasiment certain que c'est possible, je ne me
suis pas encore penché dessus d'ou le msgbox(i)

suis je un peu plus clair?

merci d'avance

Elicend
"Clive Lumb" a écrit dans le message
de news:
Ce code est-il en rélation direct avec i ? La rélation i<->code est elle
immuable ?
Donnez-nous un exemple plus concret

"Elicend_News" a écrit dans le message de
news:3fcb52e5$0$27037$
> merci pour tes pistes
>
> en fait,
> suivant les les valeur de i que je vais obtenir, je voudrais faire une
sorte
> de call vers un sous programme avec un code en 4bit en sortie vers le


port
> prallele, et mon select case servait à définir le code 4 bit à envoyer.
>
> @ plus
> Elicend
>
> "Clive Lumb" a écrit dans le message de
> news:e$
> > S'il s'agit d'afficher simplement la valuer du compteur, alors
> > for i=1 to 10
> > msgbox "La valeur de i est " & str$(i)
> > next i
> > suffira n'est-ce pas ? Pas besoin d'un select case.
> > Si le message est différent pour chaque valeur de i, alors il suffit


de
> > créer une matrice des messages
> > Dim Msgs(1 to 10) as String
> > Msgs(1)="Bonjour"
> > Msg(2)="Bonsoir"
> > ....
> > Msgs(10)="Adieu"
> > for i=1 to 10
> > msgbox Msgs(i)
> > next i
> >
> >
> >
> > "Elicend_News" a écrit dans le message de
> > news:3fcb3f29$0$27026$
> > > euh non en effet je me suis mal fait comprendre :
> > > dans mon ex les cas sont 1, 2 ,3 ... jusqu'a 10
> > >
> > > l'equivalent serait
> > > dim i as integer
> > > (variable définie ailleur en public)
> > >
> > > select case variable
> > > case 1
> > > msgbox("1")
> > > case 2
> > > msgbox("2")
> > > case 3
> > > msgbox("3")
> > > ...
> > > case 10
> > > msgbox("10")
> > > case else
> > > msgbox("valeur non prise en compte")
> > > end select
> > >
> > > et je voudrais un truc du style :
> > > > > for i = 1 to 10
> > > > > case i
> > > > > msgbox(i)
> > > > > next i
> > >
> > > s'il y a non plus 10 mais 100 cas, ca devient vite infernal... peut
etre
> > > qu'alors le select case n'est plus la bonne méthode?
> > >
> > > merci de ton aide
> > >
> > > elicend
> > >
> > >
> > > "Clive Lumb" a écrit dans le message de
> > > news:%23fJzxD$
> > > > Ce que tu voudrais faire n'est pas claire ...
> > > > Si c'est de faire une action si i= 1 à 10, autre chose si i= 11 à


15
> > etc.,
> > > > alors on peut utiliser:
> > > >
> > > > select case i
> > > > case is = 1 to 10
> > > >
> > > > case is = 11 to 20
> > > >
> > > > case is = 52, 63, 75
> > > >
> > > > case else
> > > > end select
> > > >
> > > >
> > > >
> > > > "Elicend_News" a écrit dans le message de
> > > > news:3fcb089d$0$27028$
> > > > >
> > > > > bonjour
> > > > >
> > > > > est il possible de faire un select case avec la definition des
cases
> > > dans
> > > > > une boucle
> > > > >
> > > > > du style :
> > > > > dim i as integer
> > > > > (variable définie ailleur en public)
> > > > >
> > > > > select case variable
> > > > > for i = 1 to 10
> > > > > case i
> > > > > msgbox(i)
> > > > > next i
> > > > > case else
> > > > > msgbox("valeur non prise en compte")
> > > > > end select
> > > > >
> > > > > chez moi ca ne fonctionne pas !?! y a t il uen solution ou est


ce
> > > > impossible
> > > > > ce qui serait assez contraignant pour une appli ayant une


centaine
> de
> > > cas
> > > > > possible ;)
> > > > >
> > > > > merci d'avance :)
> > > > > Elicend
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Clive Lumb
"Elicend_News" a écrit dans le message de
news:3fcc6d6b$0$17108$
salut

encore merci de ton aide

bon alors pour etre plus précis :
c'est une sortie de pilote automatique par l'intermediaire du port
parallele, j'ai des segments qui viennent toujours dans le meme ordre, et


le
passage d'un segment a l'autre se fait par l'activation d'un capteur. Soit


i
le numéro du segment sur lequel je me trouve.

a chaque changement sur i je souhaite faire un choix
call asservissement_port_parallele(code )

le choix peut se faire aussi plus loin, avec un call
asservissement_port_parallele (i)

mais je ne couperai pas ici au select case i pour attribuer le code
pour le code je n'ai pas encore défini l'algorithme pour le calculer en
fonction du i, mais je suis quasiment certain que c'est possible, je ne me
suis pas encore penché dessus d'ou le msgbox(i)

suis je un peu plus clair?



Oui c'est un peu plus claire.
Mais si code est sur 4 bits il n'y a que 16 "case" à définir, donc si tu
n'as pa l'algorithme il suffit de faire des listes dans les CASE IS =.
Je crois que qq chose comme suit suffira
Select case i
case is =1 to 10, 15, 47 , 75
Code = 0000
case is  to 100, 17, 53 , 88
Code = 0001
case is 0 to 40
Code = 0010
etc.
Avatar
Elicend_News
a mais oui c'est vrai ca je me trompe!

4 bit 16 cas! j'avais compté au max 64 cas c'est pour ca que je voyais plus
grand mais je m'etais moi meme restrein deja une fois lol

bon ben je vais voir avec ce que tu m'as donner je te remercie

Elicend
"Clive Lumb" a écrit dans le message
de news:

"Elicend_News" a écrit dans le message de
news:3fcc6d6b$0$17108$
> salut
>
> encore merci de ton aide
>
> bon alors pour etre plus précis :
> c'est une sortie de pilote automatique par l'intermediaire du port
> parallele, j'ai des segments qui viennent toujours dans le meme ordre,


et
le
> passage d'un segment a l'autre se fait par l'activation d'un capteur.


Soit
i
> le numéro du segment sur lequel je me trouve.
>
> a chaque changement sur i je souhaite faire un choix
> call asservissement_port_parallele(code )
>
> le choix peut se faire aussi plus loin, avec un call
> asservissement_port_parallele (i)
>
> mais je ne couperai pas ici au select case i pour attribuer le code
> pour le code je n'ai pas encore défini l'algorithme pour le calculer en
> fonction du i, mais je suis quasiment certain que c'est possible, je ne


me
> suis pas encore penché dessus d'ou le msgbox(i)
>
> suis je un peu plus clair?
>
Oui c'est un peu plus claire.
Mais si code est sur 4 bits il n'y a que 16 "case" à définir, donc si tu
n'as pa l'algorithme il suffit de faire des listes dans les CASE IS =.
Je crois que qq chose comme suit suffira
Select case i
case is =1 to 10, 15, 47 , 75
Code = 0000
case is  to 100, 17, 53 , 88
Code = 0001
case is 0 to 40
Code = 0010
etc.