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

Prob. Select case

10 réponses
Avatar
Microsoft
Bonjour a tous,

J'ai ce probleme.

Dim In00 As Boolean

In00 = False

Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case Is >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

---------
Dans ce cas, si An = 2007, ca passe => IN00=True
mais si An=2008 ca passe aussi, mais la c'est pas bon !!!!!

**********************
Dim In00 As Boolean

In00 = False
Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case An >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

-----
Dans ce cas, si An = 2007, ca ne passe pas => IN00=FALSE
La c'est pas bon, ca doit passe !!!!!!
--

Pourquoi?

Salva

10 réponses

Avatar
Patrice Henrio
Microsoft a écrit :
Bonjour a tous,

J'ai ce probleme.

Dim In00 As Boolean

In00 = False

Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case Is >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

---------
Dans ce cas, si An = 2007, ca passe => IN00=True
mais si An 08 ca passe aussi, mais la c'est pas bon !!!!!

**********************
Dim In00 As Boolean

In00 = False
Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case An >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

-----
Dans ce cas, si An = 2007, ca ne passe pas => IN00úLSE
La c'est pas bon, ca doit passe !!!!!!



C'est normal
l'avant dernier case ne peut s'écrire comme cela, on ne peut tester que
des valeurs et pas des booléens
De plus pour être correcte la condition doit être

Case (An >= 1925) And (An <= Val(Format(Now, "yyyy") - 1))
et dans ce cas le compilateur indique bien l'erreur

telle qu'écrite la condition devient
An >= (1925 And An <= Val(Format(Now, "yyyy") - 1))
ce qui donne 0

donc il faut écrire
end select
Avatar
LE TROLL
Bonjour,

Testé, c'est ça qu'il faut mettre:

Case 1925 To Format(Now, "yyyy") - 1: In00 = True

Et il faut mettre " : " après le test, sinon moi,
j'ai une erreur, soit:

ligne_de_Condition : ordre

OU

ligne_de_Condition
ordre 1
ordre 2


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

| Bonjour a tous,
|
| J'ai ce probleme.
|
| Dim In00 As Boolean
|
| In00 = False
|
| Select Case An
| Case 1849, 1850, 1851, 1861, 1863, 1865,
1866, 1869
| In00 = True
| Case 1880, 1883, 1884, 1893, 1894, 1896
| In00 = True
| Case 1905, 1907, 1910, 1911, 1912, 1914,
1915, 1918, 1919
| In00 = True
| Case 1920, 1921, 1922, 1923
| In00 = True
| Case Is >= 1925 And An <= Val(Format(Now,
"yyyy") - 1)
| In00 = True
| Case Else
| In00 = False
| End Select
|
| ---------
| Dans ce cas, si An = 2007, ca passe =>
IN00=True
| mais si An 08 ca passe aussi, mais la c'est
pas bon !!!!!
|
| **********************
| Dim In00 As Boolean
|
| In00 = False
| Select Case An
| Case 1849, 1850, 1851, 1861, 1863, 1865,
1866, 1869
| In00 = True
| Case 1880, 1883, 1884, 1893, 1894, 1896
| In00 = True
| Case 1905, 1907, 1910, 1911, 1912, 1914,
1915, 1918, 1919
| In00 = True
| Case 1920, 1921, 1922, 1923
| In00 = True
| Case An >= 1925 And An <= Val(Format(Now,
"yyyy") - 1)
| In00 = True
| Case Else
| In00 = False
| End Select
|
| -----
| Dans ce cas, si An = 2007, ca ne passe pas =>
IN00úLSE
| La c'est pas bon, ca doit passe !!!!!!
| --
|
| Pourquoi?
|
| Salva
|
|
Avatar
Patrice Henrio
Patrice Henrio a écrit :
Microsoft a écrit :
Bonjour a tous,

J'ai ce probleme.

Dim In00 As Boolean

In00 = False

Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case Is >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

---------
Dans ce cas, si An = 2007, ca passe => IN00=True
mais si An 08 ca passe aussi, mais la c'est pas bon !!!!!

**********************
Dim In00 As Boolean

In00 = False
Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case An >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

-----
Dans ce cas, si An = 2007, ca ne passe pas => IN00úLSE
La c'est pas bon, ca doit passe !!!!!!



C'est normal
l'avant dernier case ne peut s'écrire comme cela, on ne peut tester que
des valeurs et pas des booléens
De plus pour être correcte la condition doit être

Case (An >= 1925) And (An <= Val(Format(Now, "yyyy") - 1))
et dans ce cas le compilateur indique bien l'erreur

telle qu'écrite la condition devient
An >= (1925 And An <= Val(Format(Now, "yyyy") - 1))
ce qui donne 0

donc il faut écrire
end select


je rajoute que l'expression val(format(now,"yyyy")-1) n'est pas très
heureuse
Format(now,"yyyy") transforme la date actuelle en la chaîne "2008", mais
en retirant 1, on transforme le résultat en nombre et le val devient
inutile.
Deux solutions
(Format(Now, "yyyy") - 1)
transtypage automatique
(Val(Format(Now, "yyyy")) - 1)
La fonction val s'applique à "2008"
Avatar
LE TROLL
Ah, précision, ton case else il est suffisant
pour mettre à false, pas la peine de le mettre
d'abord en entrée : "In00 = False", ou alors faut
enlever le case else et laisser in00 avant

Pour les deux point, je n'avais pas vu (marge
différentes), que tu l'avais mis en dessous, donc,
tu peux le mettre aussi sur un ligne, surtout s'il
n'y a qu'une instruction, ce qui est le cas...

select case
case x condition: résultat1
case y condition: résultat2
end select

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

| Bonjour,
|
| Testé, c'est ça qu'il faut mettre:
|
| Case 1925 To Format(Now, "yyyy") - 1: In00 =
True
|
| Et il faut mettre " : " après le test, sinon
moi,
| j'ai une erreur, soit:
|
| ligne_de_Condition : ordre
|
| OU
|
| ligne_de_Condition
| ordre 1
| ordre 2
|
|
| --
| Merci beaucoup, au revoir et à bientôt :o)
| ------
| Romans, logiciels, email, site personnel
| http://irolog.free.fr/joe.htm
| ------------------------------------------------------------------------------------
| "Microsoft" <news.microsoft.com> a écrit dans le
| message de news:
|
|| Bonjour a tous,
||
|| J'ai ce probleme.
||
|| Dim In00 As Boolean
||
|| In00 = False
||
|| Select Case An
|| Case 1849, 1850, 1851, 1861, 1863, 1865,
| 1866, 1869
|| In00 = True
|| Case 1880, 1883, 1884, 1893, 1894, 1896
|| In00 = True
|| Case 1905, 1907, 1910, 1911, 1912, 1914,
| 1915, 1918, 1919
|| In00 = True
|| Case 1920, 1921, 1922, 1923
|| In00 = True
|| Case Is >= 1925 And An <= Val(Format(Now,
| "yyyy") - 1)
|| In00 = True
|| Case Else
|| In00 = False
|| End Select
||
|| ---------
|| Dans ce cas, si An = 2007, ca passe =>
| IN00=True
|| mais si An 08 ca passe aussi, mais la c'est
| pas bon !!!!!
||
|| **********************
|| Dim In00 As Boolean
||
|| In00 = False
|| Select Case An
|| Case 1849, 1850, 1851, 1861, 1863, 1865,
| 1866, 1869
|| In00 = True
|| Case 1880, 1883, 1884, 1893, 1894, 1896
|| In00 = True
|| Case 1905, 1907, 1910, 1911, 1912, 1914,
| 1915, 1918, 1919
|| In00 = True
|| Case 1920, 1921, 1922, 1923
|| In00 = True
|| Case An >= 1925 And An <= Val(Format(Now,
| "yyyy") - 1)
|| In00 = True
|| Case Else
|| In00 = False
|| End Select
||
|| -----
|| Dans ce cas, si An = 2007, ca ne passe pas =>
| IN00úLSE
|| La c'est pas bon, ca doit passe !!!!!!
|| --
||
|| Pourquoi?
||
|| Salva
||
||
|
|
Avatar
Patrice Henrio
LE TROLL a écrit :
Bonjour,

Testé, c'est ça qu'il faut mettre:

Case 1925 To Format(Now, "yyyy") - 1: In00 = True

Et il faut mettre " : " après le test, sinon moi,
j'ai une erreur, soit:

ligne_de_Condition : ordre

OU

ligne_de_Condition
ordre 1
ordre 2




non on peut mettre les lignes de programmations à la ligne après le case


select case <variable>
case <valeur1>
ligne1_1
ligne1_2
.../...
ligne1_n
case <Valeur2>, <valeur3>, .../... <valeurx>
ligne2_1
ligne2_2
.../...
case <valeurY> to <ValeurZ>
ligne3_1
.../...
case Else
ligne4_1
.../...
end select
Avatar
Patrice Henrio
LE TROLL a écrit :
Bonjour,

Testé, c'est ça qu'il faut mettre:

Case 1925 To Format(Now, "yyyy") - 1: In00 = True

Et il faut mettre " : " après le test, sinon moi,
j'ai une erreur, soit:

ligne_de_Condition : ordre

OU

ligne_de_Condition
ordre 1
ordre 2




désolé je n'avais pas vu que tu avais indiqué la bonne syntaxe.
Avatar
Modeste
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :


je rajoute que l'expression val(format(now,"yyyy")-1) n'est pas très
heureuse



heu... peut-etre : Year(Now)


--
--
@+
;o)))
Avatar
Microsoft
Merci pour les explications.

A +

Salva
"Patrice Henrio" a écrit dans le message de
news:
Microsoft a écrit :
Bonjour a tous,

J'ai ce probleme.

Dim In00 As Boolean

In00 = False

Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case Is >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

---------
Dans ce cas, si An = 2007, ca passe => IN00=True
mais si An 08 ca passe aussi, mais la c'est pas bon !!!!!

**********************
Dim In00 As Boolean

In00 = False
Select Case An
Case 1849, 1850, 1851, 1861, 1863, 1865, 1866, 1869
In00 = True
Case 1880, 1883, 1884, 1893, 1894, 1896
In00 = True
Case 1905, 1907, 1910, 1911, 1912, 1914, 1915, 1918, 1919
In00 = True
Case 1920, 1921, 1922, 1923
In00 = True
Case An >= 1925 And An <= Val(Format(Now, "yyyy") - 1)
In00 = True
Case Else
In00 = False
End Select

-----
Dans ce cas, si An = 2007, ca ne passe pas => IN00úLSE
La c'est pas bon, ca doit passe !!!!!!



C'est normal
l'avant dernier case ne peut s'écrire comme cela, on ne peut tester que
des valeurs et pas des booléens
De plus pour être correcte la condition doit être

Case (An >= 1925) And (An <= Val(Format(Now, "yyyy") - 1))
et dans ce cas le compilateur indique bien l'erreur

telle qu'écrite la condition devient
An >= (1925 And An <= Val(Format(Now, "yyyy") - 1))
ce qui donne 0

donc il faut écrire
end select


Avatar
Patrice Henrio
LE TROLL a écrit :
Ah, précision, ton case else il est suffisant
pour mettre à false, pas la peine de le mettre
d'abord en entrée : "In00 = False", ou alors faut
enlever le case else et laisser in00 avant

Pour les deux point, je n'avais pas vu (marge
différentes), que tu l'avais mis en dessous, donc,
tu peux le mettre aussi sur un ligne, surtout s'il
n'y a qu'une instruction, ce qui est le cas...

select case
case x condition: résultat1
case y condition: résultat2
end select



le case Else est indispensable ici car tous les cas ne sont pas
vérifiés. Ainsi pour 1870 qui ne rentre dans uacun des case.
Cependant avec la valeur par défaut des booléens, il est vrai que cela
n'est pas nécessaire. C'est bien cette dernière chose qui rend ce Else
inutile mais dangereux. Si In00 a été utilisé et à pris la valeur True,
le résultat du select en sera affecté.
Avatar
Gloops
Modeste a écrit, le 20/03/2008 11:13 :
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :


je rajoute que l'expression val(format(now,"yyyy")-1) n'est pas très
heureuse



heu... peut-etre : Year(Now)-1




J'allais le dire ... ;)