case et select case

Le
magic-dd
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
billy bob
Le #5238651
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
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.


billy bob
Le #5238631
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
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.


LE TROLL
Le #5238621
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" 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.
magic-dd
Le #5238051
avec tout ca j'ai pu adapter à ma demande
merci beaucoup de votre aide

@ bientot
LE TROLL
Le #5237981
de rien :o)

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

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

@ bientot
Publicité
Poster une réponse
Anonyme