Select case et interval numerique [Résolu]

gbawar 29 Messages postés dimanche 15 août 2004Date d'inscription 15 mars 2007 Dernière intervention - 15 nov. 2006 à 23:38 - Dernière réponse : gbawar 29 Messages postés dimanche 15 août 2004Date d'inscription 15 mars 2007 Dernière intervention
- 16 nov. 2006 à 19:21
Bonjour,

J'ai un ensemble de code que je voudrais simplifier en passant par un select case mais y un petit probléme qui se pose a moi.
Voici une parti de code:
 If (Val(Enerelec) < 0) And (Val(Enerelec) > 1 / 99) Then
            Calculateur.joule.Text = "J"
        End If
        If (Val(Enerelec) < (1 / 99)) And (Val(Enerelec) > (1 / 99999)) Then
            Calculateur.joule.Text = "mJ"
            Enerelec = Enerelec * 1000
        End If
Mon PB ce que je dois avoir un interval de valeur numerique a chaque fois, j'ai essayer ce code:
select case enerelec
    case (Val(Enerelec) < 0) And (Val(Enerelec) > 1 / 99)

            Calculateur.joule.Text = "J"
   case (Val(Enerelec) < (1 / 99)) And (Val(Enerelec) > (1 / 99999))

            Calculateur.joule.Text = "mJ"

            Enerelec = Enerelec * 1000
end select.
Mais le resultat est incorrect.
j'ai essayé:
select case enerelec

    case is < 0 And > 1 / 99


            Calculateur.joule.Text = "J"

   case is  < (1 / 99) And  > (1 / 99999)


            Calculateur.joule.Text = "mJ"


            Enerelec = Enerelec * 1000

end select.
et aussi
select case enerelec


    case is < 0  > 1 / 99



            Calculateur.joule.Text = "J"


   case is  < (1 / 99)   > (1 / 99999)



            Calculateur.joule.Text = "mJ"



            Enerelec = Enerelec * 1000


end select.
Mais idem.
Donc j'aimerais savoir  comment je peux réaliser cette fonction qui est  présent 9 fois pour 9 variable différentes et  qui contient 11 IF end IF pour réalisé la fonction demandé et qui fonction.
L'objectif et de gagner un peux de place et que le programme soit moin lourd.
Merci.
Cordialement.
Afficher la suite 

9 réponses

Répondre au sujet
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 15 nov. 2006 à 23:59
+3
Utile
Salut,

essaie comme ceci :

Select Case enerelec
    Case (1 / 99) To 0
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)
        Calculateur.joule.Text = "mJ"
        Enerelec = Enerelec * 1000
End Select

--Mortalino-- 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 16 nov. 2006 à 00:20
0
Utile
    Select Case enerelec       Case Is >1 / 99: Calculateur.joule.Text "J"       Case Is >1 / 99999: Calculateur.joule.Text "mJ"
       Case Else:
       End Select

Daniel
Commenter la réponse de Gobillot
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 nov. 2006 à 00:35
0
Utile
Salut,

Gobillot, je suis désolé (à tord, peut-être) mais je ne suis pas d'accord, si enerelec possède une valeur de 3, le 1er Case s'exécutera, alors que gbawar ne veut pas que la valeur soit supérieure à 0.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 16 nov. 2006 à 00:42
0
Utile
Salut,
on sait pas trop ce qu'il veux parce qu'il a mis ses test inversés

case is < 0 And > 1 / 99   est impossible

j'ai donc fait une supposition:
de toutes façons il vaut mieux tester tous les cas pour ne pas avoir de surprise:



Select Case enerelec
       Case Is >= 0:  ???
       Case Is >= 1 / 99:
                Calculateur.joule.Text = "J"
       Case Is >= 1 / 99999:
                Calculateur.joule.Text = "mJ"
                Enerelec = Enerelec * 1000
       Case Else:   ???
       End Select

Daniel
Commenter la réponse de Gobillot
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 nov. 2006 à 00:43
0
Utile
Mon explication précédante ne tient pas la route^^,
mais en gros, la valeur est soit entre 0 et 1 / 9999, soit entre 1 / 9999 et 1 / 99

Donc ça donnerait plutôt ça :

Select Case enerelec
    Case 0 To(1 / 99999)
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)           
        Calculateur.joule.Text = "mJ"     
        Enerelec = Enerelec * 1000
End Select

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 16 nov. 2006 à 01:05
0
Utile
re,
le zéro est mal placé, mais j'ai pas encore compris ses intervals

il y a 3 points donc 4 intervals:
- 1    < 0   
- 2    0 à 1/99999   
- 3    1/99999 à 1/99
- 4    > 1/99
                                0                               1/99999                  1/99
   --------------------|-----------------------|-------------------|----------------------

dans un sens:
Select Case enerelec
       Case Is >= 1/99:           'cas 4
       Case Is >= 1 / 99999:   'cas 3
       Case Is >= 0:                'cas 2
       Case Else:                     'cas 1
       End Select

ou dans l'autre:

Select Case enerelec

       Case Is < 0:                'cas 1

       Case Is < 1 / 99999:   'cas 2

       Case Is < 1/99:           'cas 3

       Case Else:                   'cas 4

       End Select

Daniel
Commenter la réponse de Gobillot
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 nov. 2006 à 01:40
0
Utile
Belle description, avec ça, il ne peut pas se planter dans son explication.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
gbawar 29 Messages postés dimanche 15 août 2004Date d'inscription 15 mars 2007 Dernière intervention - 16 nov. 2006 à 19:01
0
Utile
Voici le code que j'ai mis et qui fonctionne:
 Select Case Enerelec
            Case (1 / 100) To 0
                Calculateur.joule.Text = "J"
            Case (1 / (99999 + 1)) To (1 / 101)
                Calculateur.joule.Text = "mJ"
                Enerelec = Enerelec * 1000
            Case (1 / (999999999 + 1)) To (1 / 100001)
                Calculateur.joule.Text = "µJ"
                Enerelec = Enerelec * 1000000
        End Select

Merci a vous tous cordialement.
Commenter la réponse de gbawar
gbawar 29 Messages postés dimanche 15 août 2004Date d'inscription 15 mars 2007 Dernière intervention - 16 nov. 2006 à 19:21
0
Utile
Aprés verification de ma par ce code et le bon : (Code de Mortalino)
Select Case enerelec
    Case (1 / 99) To 0
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)
        Calculateur.joule.Text = "mJ"
        Enerelec = Enerelec * 1000
End Select

ernoce merci@+
Commenter la réponse de gbawar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.