Le VB à ses raisons que la raison ignore

Résolu
DarkAurora Messages postés 443 Statut Membre -  
DarkAurora Messages postés 443 Statut Membre -
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

--
je préfère fermer ma gueule et passer pour un con
que l'ouvrir et ne laisser aucun doute à ce sujet
Configuration: Windows XP
Safari 530.5

24 réponses

  • 1
  • 2
  1. DarkAurora Messages postés 443 Statut Membre 27
     
    tout le monde me boude?
    Ouinnnnnnnnn
    désoler du up mais j'ai besoin d'aide
    0
  2. le père
     
    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
  3. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  4. le père
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  7. le père
     
    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
  8. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  9. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  10. DarkAurora Messages postés 443 Statut Membre 27
     
    plus personne pour m'aider??
    0
  11. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  12. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  13. le père
     
    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
  14. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  15. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  16. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  17. le père
     
    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
  18. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  19. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  20. DarkAurora Messages postés 443 Statut Membre 27
     
    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
  21. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  • 1
  • 2