IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Structure If.End if


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut Structure If.End if
    Bonjour, j'ai un problème avec les structures si. J'aimerai lors de l'enregistrement du formulaire dans ma table, mettre des champs obligatoires (içi sur la date). Si ces champs sont rempli les données s'enregistrent dans ma table Saisie. Or j'ai un bug, cela ne fonctionne pas. Merci de m'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    If dateText = "" Then MsgBox ("erreur")
     
    ElseIf Not Me.newcause = "" Then
    'ajout de la cause dans la table Causes
    Set f = db.OpenRecordset("Causes")
    f.AddNew
    f.Fields("nomcause") = Me.newcause
    f.Update
    'enregistrement de toute la saisie dans la table Saisie
    Set t = db.OpenRecordset("Saisie")
    't.Edit
    t.AddNew
    t.Fields("date") = Me.date
    t.Fields("date2") = Me.date2
    t.Fields("ligne") = Me.ligne
    t.Fields("machine") = Me.nummachine
    t.Fields("heuredebut") = Me.hdebut
    t.Fields("heurefin") = Me.hfin
    t.Fields("dureearret") = Me.duree
    t.Fields("technicien n°1") = Me.technicien1
    t.Fields("technicien n°2") = Me.technicien2
    t.Fields("etat") = Me.etat
    t.Fields("arret") = Me.arret
    t.Fields("objet") = Me.objet
    t.Fields("causes") = Me.newcause
    t.Fields("description1") = Me.description1
    t.Fields("description2") = Me.description2
    t.Fields("commentaires") = Me.commentaires
    t.Fields("piecedetachee1") = Me.piece_utilisee1
    t.Fields("qtepiece1") = Me.qtepiece1
    t.Fields("piecedetachee2") = Me.piece_utilisee2
    t.Fields("qtepiece2") = Me.qtepiece2
    t.Update
    End If
    ElseIf Me.newcause = "" Then
     
    Set t = db.OpenRecordset("Saisie")
    't.Edit
    t.AddNew
    t.Fields("date") = Me.date
    t.Fields("date2") = Me.date2
    t.Fields("ligne") = Me.ligne
    t.Fields("machine") = Me.nummachine
    t.Fields("heuredebut") = Me.hdebut
    t.Fields("heurefin") = Me.hfin
    t.Fields("dureearret") = Me.duree
    t.Fields("technicien n°1") = Me.technicien1
    t.Fields("technicien n°2") = Me.technicien2
    t.Fields("etat") = Me.etat
    t.Fields("objet") = Me.objet
    t.Fields("causes") = Me.cause
    t.Fields("description1") = Me.description1
    t.Fields("description2") = Me.description2
    t.Fields("commentaires") = Me.commentaires
    t.Fields("piecedetachee1") = Me.piece_utilisee1
    t.Fields("qtepiece1") = Me.qtepiece1
    t.Fields("piecedetachee2") = Me.piece_utilisee2
    t.Fields("qtepiece2") = Me.qtepiece2
    t.Update
    End If
    End If

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    If s'utilise de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If [test] Then [Code à éxécuter]
    ou de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If [test] Then
    [Code à éxécuter]
    End If
    autre façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If [test] Then
        [Code à éxécuter si test est vrai]
    Else
        [Code à éxécuter si test est faux]
    End If
    autre façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If [test] Then
        [Code à éxécuter si test est vrai]
    ElseIf [test2] Then
        [Code à éxécuter si test est faux mais test2 est vrai]
    End If
    autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If [test] Then
        [Code à éxécuter si test est vrai]
    ElseIf [test2] Then
        [Code à éxécuter si test est faux mais test2 est vrai]
    Else
        [Code à éxécuter si test et test2 est faux]
    End If

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    et puis, tu fais des tests sur des champs d'une base de données.
    Dans une base de données, un champ non défini est mis à NULL et non à ""

    NULL et "" n'ont pas le même sens !
    NULL = Je ne sais pas
    "" = Je sais qu'il n'y a pas (au même titre qu'un 0 pour les nombres d'ailleurs)

    Donc (ne sachant pas comment est configuré ta base) tes champs peuvent avoir, au pire, trois valeurs :

    une valeur quelconque
    ""
    NULL (mêm si NULL n'est pas à proprement parler une valeur :s)

    Tu peux réduire les possibilités en utilisant la fonction Access NZ
    syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NZ(NullPossible, Remplacerpar)
    Donc, pour replacer un NULL par un "", ca donnerait tout simplement
    Mais bon, l'intérêt n'est de remplacer le NULL que lorsqu'il y en a un.
    Et il est possible qu'il y en ait un dans tes champs.

    Donc,
    remplacera un NULL dans un champ par un ""

    Ce qui fait que ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    If NZ(TonChamp, "") ="" Then
        ...
        ...
    attrapera les cas NULL
    Alors que ton test actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    If Tonchamp ="" Then
        ...
        ...
    ne les attrape pas !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/02/2016, 09h31
  2. [SAX] "SAXException XML document structures must start and end within the same entity"
    Par tdeco dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/08/2007, 21h53
  3. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  4. [Fortran g77] "Structure ... End Structure"
    Par elbopha dans le forum Fortran
    Réponses: 2
    Dernier message: 07/02/2005, 16h38
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo