Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2008, 11h08   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Par défaut erreur d'execution '13', contraindre les saisies de l'utilisateur

c'est la premiere fois que je fais un programme en VB et j ai un petit probleme :

Dans une case de dialogue nommé "Case1", je souhaiterais que l'utilisateur ne puisse mettre que des chiffres supérieurs ou égals à 0(l'utilisateur peut mettre un double). Ainsi je pourrais éviter cette horrible erreur d'execution '13'

merci beaucoup de votre aide
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h14   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Sur quelle application Office (Access, Excel, word) ?

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h28   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
sous autocad
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h45   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
je viens de mettre ca :

Code :
1
2
3
4
5
6
7
8
9
10
Public Function Erreur13(Case1 As String)
On Error GoTo ErreurFatale
MsgBox "veuillez mettre un chiffre > ou = à 0"
 
UserForm1.Case1.Value = 0
 
Exit Function
ErreurFatale:
MsgBox "veuillez mettre un chiffre > ou = à 0"
End Function
le pb, c'est que cette fonction UserForm1.Case1.Value = 0 ne fonctionne pas
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h52   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re,

Je verrrais autrement, sur l'évènement BeforeUpdate de ta zone de texte.

Code :
1
2
3
4
5
6
7
Private Sub LaZoneDeTexte_BeforeUpdate(Cancel As Integer)
 
     If Lng(LaZoneDeTexte) > 0 then
     Else
          Cancel = True
     End If
Exit sub
Je l'ai tapé à la main, donc pas testé, car je n'ai pas Autocad.

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 13h23   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
je viens encore de modiffier un peu ce que j ai fais, mais impossible que ca fonctionne

Code :
1
2
3
4
5
6
7
8
9
Public Function Erreur13(case_name As TextBox)'fonction Erreur13 avec comme parametre une TexteBox "case_name"
 
On Error GoTo ErreurFatale
MsgBox "veuillez mettre un chiffre > ou = à 0"
UserForm1.????  'ici je veux mettre dans ma TextBox une valeur par defaut 0
Exit Function
ErreurFatale:
MsgBox "veuillez mettre un chiffre > ou = à 0"
End Function
Comment puis je faire pour mettre cette valeur par defaut?
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 08h19   #7
Invité régulier
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 8
Points : 8
je suppose qu'après l'utilisation du textbox, l'utilisateur valide sa réponse non?
si c'est le cas test la valeur à ce moment là et si la valeur n'est pas bonne lance lui un msgbox... ça évite de faire une fonction que teste le resultat après l'erreur 13.
voilà ce que j'ai fait : une userform qui s'appelle aide avec un textbox1 dessus. Le sub test1 lance la userform, le sub2 traite la récupération de la valeur que l'utilisateur entre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub test1()
aide.Show
End Sub
Sub test2()
Dim sngNB As Single
Dim strNB As String
strNB = aide.TextBox1.Text
 
If IsNumeric(strNB) Then
sngNB = aide.TextBox1.Text
aide.Hide
Else
MsgBox ("erreu")
End If
 
End Sub

si tu utilise autocad pourquoi tu n'interagis pas avec la ligne de commande ?
Pour ma part j'utilise rarement des userform sous autocad pour que l'utilisateur aie la possibilité de se déplacer sur le plan...
sechanbask est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 22h20   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Oui, c' est tout a fait çà.
Je ne connaissais pas la fonction "IsNumeric" donc je me suis debrouillé pour gerer l erreur autrement

Code :
1
2
3
4
5
6
7
8
9
10
11
12
'Vérification des erreurs de saisie
Public Function Erreur13(case_name)
Dim b As Double
On Error GoTo Erreurnum13
b = case_name.Value * 2
case_name.BackColor = &H80000018
Exit Function
Erreurnum13:
    MsgBox "veuillez mettre un chiffre > ou = à 0"
    case_name.Value = 0
    case_name.BackColor = &HFF
End Function
Citation:
si tu utilise autocad pourquoi tu n'interagis pas avec la ligne de commande ?
Tout simplement parce que mon programme a comme 1er objectif de calculer la stabilité et le ferraillage d un mur de soutenement ce qui oblige à l utilisateur à rentrer bcp de données(dimensionssss, resistance beton, acier...). Le second est de creer le dessin
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 13h27   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Citation:
Envoyé par Starec Voir le message
Re,

Je verrrais autrement, sur l'évènement BeforeUpdate de ta zone de texte.

Starec
Je viens de créer un autre programme et j'ai trouvé une meilleur façon de contraindre les saisies de l'utilisateur

dans l'évènement Keypressed de ta zone de texte

Code :
1
2
 
KeyAscii=numerique(KeyAscii,form1.label10.text)
puis dans un module

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 
'Vérifie si la valeur saisie dans le textbox est numérique en même temps que la saisie
'Déclaration des Api
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String) As Long
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
'Déclaration de la constante séparateur décimal
Private Const LOCALE_SDECIMAL = &HE
Dim Separateur As String
 
 Function numerique(ByVal KeyAscii, ByVal Text As String)
separateur=DecimalSeparator()
'Si le caractère n'est pas numérique ou pas le séparateur de décimal, on annule l'appui sur la touche
If Not IsNumeric(Chr(KeyAscii)) And Chr(KeyAscii) = Separateur And KeyAscii <> 8  Then KeyAscii = 0
'Si le caractère est le séparateur de décimal mais celui-ci a déjà été saisi, on annule l'appui sur la touche
If Chr(KeyAscii) = Separateur And InStr(1, Text, Separateur, vbTextCompare) = 2 Then KeyAscii = 0
 
numerique = KeyAscii
 
   End Function
'récupère le séparateur de décimal dans les options régionales
Public Property Get DecimalSeparator() As String
Dim nLength As Long
Dim nLocale As Long
    nLocale = GetUserDefaultLCID()
    nLength = GetLocaleInfo(nLocale, LOCALE_SDECIMAL, vbNullString, 0) - 1
    DecimalSeparator = Space$(nLength)
    GetLocaleInfo nLocale, LOCALE_SDECIMAL, DecimalSeparator, nLength
 
End Property
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h48.


 
 
 
 
Partenaires

Hébergement Web