Comparaison de valeurs

Signaler
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour,
Je dois comparer 3 valeurs affichées dans 3 textbox différentes et tout simplement afficher la valeur de la plus petite d'entre elles dans un nouveau textbox.
En fouillant un peu et avec aussi un peu d'aide, il en est ressorti cette sub :
Private Sub compare()
Imports System.Linq.Enumerable


Dim ListeValeur As System.Collections.Generic.List(Of Integer) = New System.Collections.Generic.List(Of Integer) From {Integer.Parse(P_SPIMAGE2.Text), Integer.Parse(SPIMAGE2P.Text), Integer.Parse(P2_SPIMAGE2.Text)}
Dim mini As Integer

If ListeValeur.Contains(0) Then
ListeValeur.Remove(0)
mini = ListeValeur.Min
ListeValeur.Add(0)
Else
mini = ListeValeur.Min
End If
MsgBox(mini)
End Sub

J'ai toutefois encore un souci :
- Je voudrais simplement retourner la valeur min dans un textbox
- MsgBox n'est pas reconnu car soit disant non déclaré ...

Pourrais je avoir un début de piste ?
A voir également:

9 réponses

Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Ps : l'import ne se trouve pas dans la sub bien sur mais avant le public class
Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
Bonjour,

MsgBox -> MessageBox.Show

Intéresses-toi au mot clé "Function"
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

alors messagebox.show me donne la même chose
Si tu veux me dire de faire une fonction avec un return a la place d'une sub, cela ne fonctionne pas plus ...

Je voudrais juste comprendre pourquoi j'ai l'erreur :
Erreur	1	'MsgBox' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
--
Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
As-tu tout remplacé les MsgBox par MessageBox.Show ?
Quel est ton type de projet ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

Private minval As Integer

Private Function FindMin() As Boolean
Dim result(2) As Integer
If Integer.TryParse(textbox1.text , result(0)) AndAlso Integer.TryParse(textbox2.text, result(1)) AndAlso Integer.TryParse(textbox3.text, result(2)) Then
Array.Sort(result)
minval = result(0)
Return True
Else
Return False
End If
End Function

' pour utiliser
If FindMin() Then
TextBoxmin.text = minval.ToString
Else
MessageBox.Show("one of textbox has no number")
End If
Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
Pour le minimum, il y a Math.Min.
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Re a vous 2
Alors j'ai fait ceci shayw
  Private Function FindMin() As Boolean
Dim result(2) As Integer
If Integer.TryParse(textbox1.text , result(0)) AndAlso Integer.TryParse(textbox2.text, result(1)) AndAlso Integer.TryParse(textbox3.text, result(2)) Then
Array.Sort(result)
minval = result(0)
Return True
Else
Return False
End If
End Function
avec le nom de mes 3 textbox

puis une sub :
Private Sub affiche()
If FindMin() Then
matextboxresult.text = minval.ToString
Else
MessageBox.Show("one of textbox has no number")
End If
End Sub

j'appelle donc affiche() a l'endroit adequat pour avoir le resultat dans mon textbox MAIS ou que soit positionné affiche(), j'ai le MessageBox et jamais de resultat

En sus j'ai oublié une condition.
Si une textbox de la liste de comparaison affiche 0.00 on ne la prend pas dans le comparatif (si 2 textbox affichent 0.00 on ne prend pas les 2 ...)
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour

j'appelle donc affiche() a l'endroit adequat pour avoir le resultat dans mon textbox MAIS ou que soit positionné affiche(), j'ai le MessageBox et jamais de resultat

cela dépend où tu appelles affiches
si tu appelles avant d'avoir entrer des valeurs dans les trois textbox tu auras le message
donc il faut l'appeller après avoir introduit une valeur dans chaque
textbox
je ne sais pas comment tu procèdes
après avoir rentré une valeur dans textbox1,textbox2,textbox3
as tu un bouton pour valider ?

En sus j'ai oublié une condition. etc....

c'est le dessert ?
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

lol oui et pour moi il est indigeste.
Bon serieux, je suis passé en mode pas a pas jusqu'à voir les textbox1,textbox2,textbox3 s'afficher bien sur, j'ai ensuite lancé affiche () un peu plus loin dans le form.
En fait le problème des valeurs nulles c'est que comme textbox1,textbox2,textbox3 contiennent des valeurs négatives ou nulles, la plus petite des 3 sera, en valeur absolue, la plus grande des 3. Dans le cas ou le textbox est à 0.00, cela change tout...

Non je n'ai pas de bouton valider, les valeurs des textbox 1, 2 et 3 sont calculées et affichées automatiquement, et donc après l'affichage, c'est la que je dois les comparer toujours automatiquement, pour afficher .... automatiquement la plus petite dans matextboxresult.

--
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
la plus petite des 3 sera, en valeur absolue,la plus grande des 3.

tu as un exemple
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour, cs_ShayW,
il s'exprime mal pour simplement dire, par exemple, que -3 est plus petit que -2
On se demande pourquoi il travaillerait avec des valeurs absolues pour comparer deux numériques !
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour
ah oui merci d'avoir expliquer le plus petit negatif est le plus grand en valeur absolu
pourquoi il travaillerait avec des valeurs absolues
parce qu'il ne sait peut etre pas que -3 < -2
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
clin d'oeil
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Private minval As Double

Private Function FindMin() As Boolean
Dim result(2) As Double
If Double.TryParse(textbox1.text, result(0)) AndAlso _
Double.TryParse(textbox2.text, result(1)) AndAlso _
Double.TryParse(textbox3.text, result(2)) Then
Array.Sort(result)
If result(0) <> 0 Then
minval = result(0)
ElseIf result(1) <> 0 Then
minval = result(1)
ElseIf result(2) <> 0 Then
minval = result(2)
Else
Return False
End If
Return True
End If
Return False

End Function