[RESOLU] : IF (condition1 OU condition2) ET (condition3) alors...

: IF (condition1 OU condition2) ET (condition3) alors... [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 14-03-2006 à 21:05:27    

Bonsoir,
 
j'ai expliqué en gros le problème dans mon titre.
J'ai ce code :  
 

Code :
  1. If Option1.Value = True Or Option2.Value = True And Text4.Text > 0 Then
  2. MsgBox "Vous avez entré deux données 'TAUX'"
  3. End If


 
Je suis débutant en VB6, et pour l'instant, ce que je m'aperçois, c'est que ça ne fonctionne pas...
Ce que je veux faire ? J'ai :
- un bouton radio avec une valeur
- un second bouton radio avec une autre valeur
- une textbox (par défaut à 0) qui permet d'entrer une valeur à la main
 
Avec le code d'au-dessus, quand mon premier bouton radio est coché, ça me balance l'erreur.
Le second fonctionne nickel et met bien l'erreur quand il la faut.
 
Au pire, je peux faire en deux fois : première avec le premier bouton radio, et seconde avec le second bouton, mais bon c'est pas super optimisé... et puis ça m'intéresse de savoir si y a une solution à ce que je demande :)


Message édité par elliotdoe le 17-03-2006 à 14:13:57
Reply

Marsh Posté le 14-03-2006 à 21:05:27   

Reply

Marsh Posté le 14-03-2006 à 21:16:59    

Second problème, comment faire pour demander si la valeur d'une textbox n'est pas un nombre ?

Reply

Marsh Posté le 14-03-2006 à 21:25:22    

apparemment ça serait kke chose comme
if not isnumeric(val(text1.text)) then...

Reply

Marsh Posté le 14-03-2006 à 21:30:19    

au pire c'est pas non plus bien grave, c'était la dernière erreur qu'il me restait, j'ai mis un on error goto, et un message qui blance "veuillez entrer un nombre"... :)

Reply

Marsh Posté le 15-03-2006 à 20:26:52    

val(valeur) renvoie sa valeur numerique
donc if val(valeur) <> 0 then... tu as une valeur numérique
 
If val(Text4.Text) <> 0 then
      Msgbox "Valeur numérique"
End If
 
etc etc etc


---------------
http://www.ypikay.com
Reply

Marsh Posté le 16-03-2006 à 12:57:58    

oui ok, merci bien.
Sinon, vu que c'était ma dernière erreur, j'ai simplement fait un "on error goto" qui renvoie vers "veuillez entrer une valeur numérique".
C'est un peu plus bricolé mais ça fonctionne :)
Merci en tous cas.

Reply

Marsh Posté le 17-03-2006 à 11:02:15    

salut michalator,
je viens de lire ton post sur les textbox et les valeurs numériques.
Pour palier les saisies de lettres j'ai trouvé une petite astuce, dans le textbox1_change, je place ce code (dans excel mais je crois que les fonctions sont les mêmes en vb6):

Code :
  1. If Len(TextBox1.Value) <> 0 Then
  2.     If Not IsNumeric(TextBox1.Text) Then
  3.         TextBox1.Value = Left(TextBox1.Value, Len(TextBox1.Value) - 1)
  4.     End If
  5. End If

Ceci autorise les valeurs vides, autiorise le séparateur décimal (chez moi le virgule) et interdit tout ce qui est frappe de lettre. Tu peux biensûr y ajouter un msgbox pour prévenir.
As tu réussi à résoudre ton problème de condintion? si non, il faut la séparer et faire 2 test.(premier If  l'une des case est cochée, ensuite le 2ème if si tu as une valeur dans ton textbox)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 17-03-2006 à 11:09:24    

Pour le problème des conditions, j'ai effectivement divisé en deux, c'était le plus simple. Mais je pensais qu'il y avait peut-être plus optimisé que ça.
Merci pour l'astuce des valeurs vides et du séparateur décimal, je vais tester :jap:

Reply

Marsh Posté le 17-03-2006 à 11:29:47    

si tu as résolu tu peux peut être éditer ton titre de premier post avec un petit résolu :) ca en aidera d'autres


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 17-03-2006 à 14:14:07    

c'est fait :)

Reply

Marsh Posté le 17-03-2006 à 14:14:07   

Reply

Marsh Posté le 17-03-2006 à 15:35:34    

;)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 18-03-2006 à 11:49:12    

Définir des constantes du type  
 
Const SaisieDecimale As String = ".,0123456789" & vbCr & vbBack  
Const SaisieEntiere As String = "0123456789" & vbCr & vbBack  
Const Point as string*1 ="."  
Const Virgule as string*1 =","  
 
Puis utiliser xxx_KeyPress ici pour une saise décimale avec  
substitution . par , et un seul séparateur décimal de permis  
ici en systeme français la virgule  
 
Private Sub xxxx_KeyPress(KeyAscii As Integer)  
    If KeyAscii = Asc(Point) Then  
        If InStr(xxxx, Virgule) = 0 Then  
            KeyAscii = Asc(Virgule)  
        Else  
            KeyAscii = 0  
        End If  
    ElseIf InStr(SaisieDecimale , Chr(KeyAscii)) = 0 Then  
        KeyAscii = 0  
    ElseIf InStr(xxxx, Virgule) > 0 And KeyAscii = Asc(Virgule) Then  
        KeyAscii = 0  
    End If  
     
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0  
End Sub  
 
pour une saisie d'entiers  
 
Private Sub xxxx_KeyPress(KeyAscii As Integer)  
    If InStr(SaisieEntiere , Chr(KeyAscii)) = 0 Then KeyAscii = 0  
 
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0  
End Sub

Reply

Marsh Posté le 19-03-2006 à 14:36:26    

Merci pour ta solution, malheureusement je suis pas assez loin sur VB pour la comprendre. C'est du VB.NET si je me trompe pas ? Perso j'en suis encore à VB6, et je commence tout juste :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed