Le VB à ses raisons que la raison ignore

Résolu
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. tout le monde me boude?
    Ouinnnnnnnnn
    désoler du up mais j'ai besoin d'aide
    0
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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
                  1. plus personne pour m'aider??
                    0
                    1. 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
                      1. 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
                        1. 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
                          1. 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
                            1. 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
                              1. 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
                                1. 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
                                  1. 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
                                    1. 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
                                      1. 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
                                        1. 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