Prob. Select case

Le
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 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
Questions / Réponses high-tech
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
Patrice Henrio
Le #15366161
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
LE TROLL
Le #15366151
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" 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
|
|
Patrice Henrio
Le #15366141
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"
LE TROLL
Le #15366131
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" 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" | 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
||
||
|
|
Patrice Henrio
Le #15366121
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 ligne2_1
ligne2_2
.../...
case <valeurY> to <ValeurZ>
ligne3_1
.../...
case Else
ligne4_1
.../...
end select
Patrice Henrio
Le #15366111
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.
Modeste
Le #15366101
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)))
Microsoft
Le #15366091
Merci pour les explications.

A +

Salva
"Patrice Henrio" 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


Patrice Henrio
Le #15366081
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é.
Gloops
Le #15365761
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 ... ;)
Publicité
Poster une réponse
Anonyme