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

case et select case

5 réponses
Avatar
magic-dd
bonjour

suite =E0 une modif d'un programme je dois utiliser la fonction case
select case mais je ne m'en sort pas

donc je vais vous explique r en francais ce que je souhaite
for i =3D 2 to 450

pour la colonne B

case ("B"&i) =3D "off" et case("C"& i) =3D 0 to 20 alors BZ & i =3D 1
case ("B"&i) =3D "off" et case("C"& i) =3D 21 to 30 alors BZ & i =3D 2
case ("B"&i) =3D "off" et case("C"& i) =3D 31 to 40 alors BZ & i =3D3
case ("B"&i) =3D "off" et case("C"& i) =3D 41 to 50 alors BZ & i =3D 4
case ("B"&i) =3D "off" et case("C"& i) =3D 51 to 60 alors BZ & i =3D 5

case ("B"&i) =3D "s/off" et case ("B"&i) =3D "mdr" et case("C"& i) =3D 0 to
10 alors BZ & i =3D "I"
case ("B"&i) =3D "s/off" et case ("B"&i) =3D "mdr" et case("C"& i) =3D 0 to
10 alors BZ & i =3D "P"
case ("B"&i) =3D "s/off" et case ("B"&i) =3D "mdr" et case("C"& i) =3D 0 to
10 alors BZ & i =3D "B"
case ("B"&i) =3D "s/off" et case ("B"&i) =3D "mdr" et case("C"& i) =3D 0 to
10 alors BZ & i =3D "S"

case ("D"&i) =3D "maj" et case("C"& i) =3D 0 to 10 alors BZ & i =3D "-"
case ("D"&i) =3D "maj" et case("C"& i) =3D 11 to 40 alors BZ & i =3D"N"
case ("D"&i) =3D "maj" et case("C"& i) =3D 41 to 50 alors BZ & i =3D"+"
case ("D"&i) =3D "maj" et case("C"& i) =3D 51 to 60 alors BZ & i =3D "++"

si c&i ou e&i ou f&i ou g&i est non numeric ou =3D 0 ou vide alors CA&i
=3D "NNN"

voila en esperant trouver de l'aide

merci par avance.

5 réponses

Avatar
billy bob
Bonjour,

tu ne peux pas effectuer un Select Case avec deux condition en même
temps et elle doit toujours porter sur la même variable,
il faut les imbriquer à mon avis :

exple:

Select Case cells("B"&i).value

Case "off"

Select Case cells("C"&i).value

Case 0 to 20
cells("BZ"&i).value = 1

Case 21 to 30
cells("BZ"&i).value = 2

Case 31 to 40
cells("BZ"&i).value = 3

Case 41 to 50
cells("BZ"&i).value = 4

Case 51 to 60
cells("BZ"&i).value = 5

End select

Case "s/off", "mdr"

Select Case cells("C"&i).value

Case 0 to 20
cells("BZ"&i).value = "I"

Case 21 to 30
cells("BZ"&i).value = "P"

Case 31 to 40
cells("BZ"&i).value = "B"

Case 41 to 50
cells("BZ"&i).value = "S"

End select

Case else

End select

pour la condition sur la colonne D cela ressemble plus à un if sur la
valeur en colonne D puis un Select Case sur C,
si tu veux qu'elle ne se déroule que lorsque la valeur en B n
correspond à aucun des cas cité plus haut, tu peux l'intégrer dans
Case Else.

J'espère avoir répondu à ta question

Billy Bob



On 27 fév, 10:46, magic-dd wrote:
bonjour

suite à une modif d'un programme je dois utiliser la fonction case
select case mais je ne m'en sort pas

donc je vais vous explique r en francais ce que je souhaite
for i = 2 to 450

pour la colonne B

case ("B"&i) = "off" et case("C"& i) = 0 to 20 alors BZ & i = 1
case ("B"&i) = "off" et case("C"& i) = 21 to 30 alors BZ & i = 2
case ("B"&i) = "off" et case("C"& i) = 31 to 40 alors BZ & i =3
case ("B"&i) = "off" et case("C"& i) = 41 to 50 alors BZ & i = 4
case ("B"&i) = "off" et case("C"& i) = 51 to 60 alors BZ & i = 5

case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "I"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "P"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "B"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "S"

case ("D"&i) = "maj" et case("C"& i) = 0 to 10 alors BZ & i = "-"
case ("D"&i) = "maj" et case("C"& i) = 11 to 40 alors BZ & i ="N"
case ("D"&i) = "maj" et case("C"& i) = 41 to 50 alors BZ & i ="+"
case ("D"&i) = "maj" et case("C"& i) = 51 to 60 alors BZ & i = "++"

si c&i ou e&i ou f&i ou g&i est non numeric ou = 0 ou vide  alors CA&i
= "NNN"

voila en esperant trouver de l'aide

merci par avance.


Avatar
billy bob
Bonjour,

tu ne peux pas effectuer un Select Case avec deux conditions en même
temps et elle doit toujours porter sur la même variable,
il faut les imbriquer à mon avis :

exple:

Select Case cells("B"&i).value

Case "off"

Select Case cells("C"&i).value

Case 0 to 20
cells("BZ"&i).value = 1

Case 21 to 30
cells("BZ"&i).value = 2

Case 31 to 40
cells("BZ"&i).value = 3

Case 41 to 50
cells("BZ"&i).value = 4

Case 51 to 60
cells("BZ"&i).value = 5

End select

Case "s/off", "mdr"

Select Case cells("C"&i).value

Case 0 to 20
cells("BZ"&i).value = "I"

Case 21 to 30
cells("BZ"&i).value = "P"

Case 31 to 40
cells("BZ"&i).value = "B"

Case 41 to 50
cells("BZ"&i).value = "S"

End select

Case else

End select

pour la condition sur la colonne D cela ressemble plus à un if sur la
valeur en colonne D puis un Select Case sur C,
si tu veux qu'elle ne se déroule que lorsque la valeur en B n
correspond à aucun des cas cité plus haut, tu peux l'intégrer dans
Case Else.

J'espère avoir répondu à ta question

Billy Bob



On 27 fév, 10:46, magic-dd wrote:
bonjour

suite à une modif d'un programme je dois utiliser la fonction case
select case mais je ne m'en sort pas

donc je vais vous explique r en francais ce que je souhaite
for i = 2 to 450

pour la colonne B

case ("B"&i) = "off" et case("C"& i) = 0 to 20 alors BZ & i = 1
case ("B"&i) = "off" et case("C"& i) = 21 to 30 alors BZ & i = 2
case ("B"&i) = "off" et case("C"& i) = 31 to 40 alors BZ & i =3
case ("B"&i) = "off" et case("C"& i) = 41 to 50 alors BZ & i = 4
case ("B"&i) = "off" et case("C"& i) = 51 to 60 alors BZ & i = 5

case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "I"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "P"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "B"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et case("C"& i) = 0 t o
10 alors BZ & i = "S"

case ("D"&i) = "maj" et case("C"& i) = 0 to 10 alors BZ & i = "-"
case ("D"&i) = "maj" et case("C"& i) = 11 to 40 alors BZ & i ="N"
case ("D"&i) = "maj" et case("C"& i) = 41 to 50 alors BZ & i ="+"
case ("D"&i) = "maj" et case("C"& i) = 51 to 60 alors BZ & i = "++"

si c&i ou e&i ou f&i ou g&i est non numeric ou = 0 ou vide  alors CA&i
= "NNN"

voila en esperant trouver de l'aide

merci par avance.


Avatar
LE TROLL
Bonjour,

Je réponds en VB, peut être que ça marche, ça
dépend ?

Tu dis:
case ("B"&i) = "off" et case("C"& i) = 0 to 20
alors BZ & i = 1

Case x and y: goto 10
Case x and y: call z
case condition1 and condition2: fait_ceci

Voici ce que dit l'aide de vb pour le select case
en vbA

Select Case, instruction, exemple
Cet exemple utilise l'instruction Select Case pour
déterminer la valeur d'une variable. La deuxième
locution Case contient la valeur de la variable
qui est évaluée ; seule l'instruction qui lui est
associée est exécutée.

Dim Number
Number = 8 ' Initialise la variable.
Select Case Number ' Évalue Number.
Case 1 To 5 ' Le nombre est compris entre 1 et 5
inclus.
Debug.Print "Entre 1 et 5"
' La locution Case suivante est la seule qui prend
la
' valeur True.
Case 6, 7, 8 ' Le nombre est compris entre 6 et
8.
Debug.Print "Entre 6 et 8"
Case 9 To 10 ' Le nombre est 9 ou 10.
Debug.Print "Supérieur à 8"
Case Else ' Autres valeurs.
Debug.Print "Non compris entre 1 et 10"
End Select
-------------------

Si tu as deux conditions à tester, il faut les
réunir dans une variable texte commune en
formatant les valeur numérique (0 devant par
exemple), sinon, il faut mettre deux select, ou
autres, un par test!

exemple, tu as un numérique maxi 3 chiffres + un
alphanumérique, disons:
dim x as long
dim a as string

tu fais:

dim union as string
x = 3
a = bonjour
union = format(x,"000") & a
select case union
case "003bonjour": call procedureB
-------------------

Par contre, ce que tu testes: ("B"&i) = "off"
Ben en VB ça passerait sans doute pas, mais là je
ne sais pas, théoriquement, tu ne peux tester que
des résultats d'élément, une cellule (je présume),
le résultat d'une variable (chiffre ou mot). Si
c'est une valeur, elle se met directement = 1,
mais si c'est alphanumérique, ça se met entre
guillemets "un", et s'il y a déjà des guillemets,
ils se double ""un"" = recherche "un"...

Manifestement, dans ton test, tu veux tester un
élément fixe, et un élément indicé (0 to 20),
alors on pourrait faire:

select case element_fixe
case "x"
for i = 0 to 20
if element_mobile(i) = ce_que_tu_veux then
call ta_procedure
exit For ' au retour tu sors de ta boucle, si
tu veux
' ou
if element(i) = ce_que_tu_veux then goto
mon_label
' mais là, tu ne reviendras plus dans ta
boucle
next i
case y ...
end select

Le select case ne teste que si la condition est
remplie, et uniquement celle-ci

Je ne sais pas si je t'aide ???

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"magic-dd" a écrit dans le
message de news:

bonjour

suite à une modif d'un programme je dois utiliser
la fonction case
select case mais je ne m'en sort pas

donc je vais vous explique r en francais ce que je
souhaite
for i = 2 to 450

pour la colonne B

case ("B"&i) = "off" et case("C"& i) = 0 to 20
alors BZ & i = 1
case ("B"&i) = "off" et case("C"& i) = 21 to 30
alors BZ & i = 2
case ("B"&i) = "off" et case("C"& i) = 31 to 40
alors BZ & i =3
case ("B"&i) = "off" et case("C"& i) = 41 to 50
alors BZ & i = 4
case ("B"&i) = "off" et case("C"& i) = 51 to 60
alors BZ & i = 5

case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et
case("C"& i) = 0 to
10 alors BZ & i = "I"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et
case("C"& i) = 0 to
10 alors BZ & i = "P"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et
case("C"& i) = 0 to
10 alors BZ & i = "B"
case ("B"&i) = "s/off" et case ("B"&i) = "mdr" et
case("C"& i) = 0 to
10 alors BZ & i = "S"

case ("D"&i) = "maj" et case("C"& i) = 0 to 10
alors BZ & i = "-"
case ("D"&i) = "maj" et case("C"& i) = 11 to 40
alors BZ & i ="N"
case ("D"&i) = "maj" et case("C"& i) = 41 to 50
alors BZ & i ="+"
case ("D"&i) = "maj" et case("C"& i) = 51 to 60
alors BZ & i = "++"

si c&i ou e&i ou f&i ou g&i est non numeric ou = 0
ou vide alors CA&i
= "NNN"

voila en esperant trouver de l'aide

merci par avance.
Avatar
magic-dd
avec tout ca j'ai pu adapter à ma demande
merci beaucoup de votre aide

@ bientot
Avatar
LE TROLL
de rien :o)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"magic-dd" a écrit dans le
message de news:

avec tout ca j'ai pu adapter à ma demande
merci beaucoup de votre aide

@ bientot