Le VB à ses raisons que la raison ignore

Résolu/Fermé
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 - 16 juin 2009 à 08:37
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 - 17 juin 2009 à 07:57
Bonjour, quelque chose est difficile à comprendre pour moi voici le topo
j'ai créer un bouton RAZ pour réinitialiser tout les champs de mon formulaire de saisie sous access
voici le code

Private Sub RAZ_Click()
Dim v As Control
Dim u As Variant
For Each v In Me.Controls
If v.Properties("controltype") = 109 Then
v = Null
End If
If v.Properties("controltype") = 111 Then
v = Null
End If
If v.Properties("controltype") = 107 Then
v = Null
End If
Next v
End Sub

j'avais un problème d'erreur 33114 ou 3315 je ne sais plus mais ce qui me poser problème c'était la valeur "null interdit" dans ma table lié au formulaire, bref j'ai modifié cet valeur en mettant non et mon bouton marche à merveille

seulement je ne peu pas laisser l'utilisateur saisir tout et n'importe quoi c'est pourquoi j'ai écris ceci :

If (Texte138.Value = Null Or Modifiable10.Value = Null Or Modifiable197.Value = Null Or Modifiable203.Value = Null Or Modifiable278.Value = Null Or Cadre81.Value = Null Or Texte95.Value = Null Or [Description cause].Value = Null Or [analyse & description des opérations].Value = Null) Then
MsgBox ("veuillez remplir tout les champs")
Else
...........


enfin mon problème est le suivant après avoir appuyer sur mon bouton RAZ dans la suite de mon programme il ne passe pas dans le if et je ne comprend pas pourquoi

si quelqu'un peut m'aider ça serait très gentil

merci d'avance
A voir également:

24 réponses

DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:02
tout le monde me boude?
Ouinnnnnnnnn
désoler du up mais j'ai besoin d'aide
0
Bonjour

Je ne suis pas spécialiste en VB, mais je suis tenté de penser que quand tu effaces un champ, il contient une chaîne vide et non pas null. Ton test devrait être If (Texte138.Value = "" Or Modifiable10.Value = "" etc...l
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:05
j'ai essayé mais il me met encore un message d'erreur je vais bientôt tous les connaîtres^^
je vais réessayer j'ai pas mal de text de listbox et checkbox je me suis peut être gouré quelque part

en tout cas merci de ton aide Papa
0
J'ai essayé mais il me met encore un message d'erreur
Lequel ? Il ne faut pas repartir dans une direction au hasard parce qu'on a un message d'erreur, il faut comprendre ce message d'erreur et en tenir compte pour corriger.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:12
ce qui est fait c'était une propriété sans importance que j'ai modifié malencontreusement donc plus de message d'erreur mais il ne passe toujours pas dans le if avec ce changement
0
Commence par ajouter un MsgBox AVANT le IF pour voir si tu vas jusque là
Puis teste les champs individuellement :
If (Texte138.Value) = "" then MsgBox ("Texte138 vide") else MsgBox ("Texte138 pas vide")
pour essayer de comprendre
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:24
je vais essayer ce que tu ma dis mais je suis sûre a 99.9% de passer dans mon bout de code pour l'instant je l'ai mit au tout début de mon bouton enregistrer c'est la 1ére instructions alors je suis pratiquement sûre que il passe par le if d'ailleurs j'ai déjà mis des points d'arrêts et il arrête bien le programme au niveau du if le plus étrange et la je ne sais pas si je rêve ou alors si j'ai trop fait la fête hier mais je suis persuadé de voir que la condition est bonne et que le programme à tout les raisons du monde de passer par ce if mais il ne le fait pas et je refuse de me laisser intimider par un programme quel qu'il soit

merci de votre aide maintenant je vais aller tester ce que tu me propose
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:32
bonne nouvelle il passe dans bel et bien dans le else
voici mon code

Private Sub Commande250_Click()
On Error GoTo Err_Commande250_Click
MsgBox ("coucou")
If (Texte138 = "") Then
MsgBox ("veuillez remplir tout les champs")
Else
MsgBox ("la valeur est" & Texte138.Value)
//ici stupéfaction il m'affiche texto ="la valeur est "
DoCmd.Close
End If
Exit_Commande250_Click:
Exit Sub

Err_Commande250_Click:
MsgBox Err.Description
Resume Exit_Commande250_Click


tel le père d'Amélie poulain devant une photo de son nain de jardin à coté des pyramides d'Egypte " je ne comprend pas, je ne comprend pas"
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 09:54
plus personne pour m'aider??
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
16 juin 2009 à 09:59
bonjour,
essaye ça pour savoir ce que contient ton textbox.


Private Sub Commande250_Click()
On Error GoTo Err_Commande250_Click
MsgBox ("coucou")
If (Texte138 = "") Then
MsgBox ("veuillez remplir tout les champs")
Else
MsgBox ("la valeur est" & asc(Texte138.Value)) //ici stupéfaction il m'affiche texto ="la valeur est "
DoCmd.Close
End If
Exit_Commande250_Click:
Exit Sub

Err_Commande250_Click:
MsgBox Err.Description
Resume Exit_Commande250_Click
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 10:11
chose étrange lorsque je saisie une date valide( le texte138) sert à ça ) il m'informe que la valeur est de 49 je ne sais pas à quoi ça correspond mais bon .... puis lorsque je fait suivant et que je ne saisie rien il marque "Utilisation incorrecte de Null ne m'affiche même pas ma msgbox et stop le programme

qu'est ce que cela veux dire?
0
Coucou me revoilà. J'ai été occupé.
le 49, c'est le codes ASCII de 1, tu avais sûrement saisi une date qui commençait par 1
peux-tu essayer
If (isNull(Texte138)) Then
MsgBox ("veuillez remplir tout les champs")
Else
MsgBox ("la valeur est" & Texte138.Value)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
16 juin 2009 à 10:25
le code ascii 49 correspond à "1"
en vba chr$(49)="1"

le textebox ne peut pas contenir nul il peut contenir un vide qui s'écrit texbox138.value="", mais
on n'a pas le droit d'écrire textbox138.value=nul car textbox.value est une propriété et non un objet déclaré comme par exemple set monobjet as object.
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 10:32
le problème est que pour certains de mes zone de text ne veulent pas prendre la valeur "" il me met un code d'erreur 3315 "le champ Tintervention.heure ne peut pas être une chaine vide" ce qui me contrarie car je tourne autour du pot et je ne trouve pas comment virer cette propriété
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
16 juin 2009 à 10:36
Je proposerai plutôt,
ce petit test !
un bouton et un textbox qui reste vide.

Private Sub CommandButton1_Click()

If TextBox1.Value = "" Then
MsgBox ("veuillez remplir tout les champs")
Else
MsgBox ("la valeur est" & TextBox1.Value)
End If
End Sub
0
Là c'est une question de définition des champs dans Access. Je ne connais presque pas Access, j'ai peur de ne pas pouvoir te guider là-dessus, désolé.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
16 juin 2009 à 10:41
il me met un code d'erreur 3315 "le champ Tintervention.heure ne peut pas être une chaine vide"

ben alors tu lui donne ce qu'il attend... une heure ou une date

Tintervention = time()
et pareil avec une date en utilisant date()
Qu'en penses-tu?
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 10:52
en fait cela venais d'une propriété de la table liées à mon formulaire qui n'accepter pas qu'on lui passe des chaines vides après avoir changé cette propriété en "oui" et d'avoir mis 'if v.Properties("controltype") = 109 Then
v = "" ' il me marque toujours la même erreur au niveau du Null je ne comprend pas le champ contient maintenant une chaine vide et non pas un Null
0
DarkAurora Messages postés 417 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 21 janvier 2013 27
16 juin 2009 à 11:19
c'est bon mes test marche sauf est c'est le plus drôle : pour le Text138 car comme dans ma table il est définis en date et heure c'est une zone de texte spécial que je n'arrive pas à tester si je lui passe une chaîne vide

si quelqu'un à une idée de valeur qui corresponde à une chaine vide pour une date merci de me répondre

en tout cas merci de votre aide les gars
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
16 juin 2009 à 11:33
Pour t'aider à avancer,
dans l'aide de access vba/aide sous la rubrique properties il y a un test
qui controle toutes les property de la collection properties pour chaque contrôle avec une boucle for each.

le programme est facilement adaptable à ton formulaire.

je pense que cela t'aidera à avancer.
0