: IF (condition1 OU condition2) ET (condition3) alors... [RESOLU] - VB/VBA/VBS - Programmation
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 ?
Marsh Posté le 14-03-2006 à 21:25:22
apparemment ça serait kke chose comme
if not isnumeric(val(text1.text)) then...
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"...
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
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.
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 :
|
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)
@+
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
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
Marsh Posté le 17-03-2006 à 15:35:34
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
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
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 :
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