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

Access Discussion :

Utilisation de Vba pour améliorer la gstion d'un formulaire


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Utilisation de Vba pour améliorer la gstion d'un formulaire
    Bonjour à tous,

    Je suis tout nouveau dans ce forum et également débutant dans l'utilisation de VBA pour gérer une base access (2000).

    Je pense être Ok dans l'utilisation d'acces en mode "standard" mais je cherche à améliorer mon appli avec VBA.

    Je souhaiterai avoir un exemple de gestion d'un formulaire qui met à jour une ou plusieur tables et pour lequel on utilise VBA pour réaliser la mise à jour de ces tables à partir du formulaire.

    (Ex: champ1 différent de null, champ2 ne doit pas déjà exister dans la table, et champ3 différent de null et champ4 doit être cohérent avec ChamP2)
    et gestion message d'erreur

    Merci pour d'avance votre aide précieuse

  2. #2
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Tout d'abord, bonjour et bienvenue.

    Pour tester si un champ est nul intéresse toi à la fonction IsNull().
    Pour le reste, renseigne toi sur les RecordSet (FAQ), ça te permet d'aller chercher dans une table des données pour ensuite pourquoi pas, les afficher dans ton formulaire.
    Cherche également dans la FAQ comment exécuter des requêtes SQL depuis VBA (pour les requêtes de mise à jour ou d'insertion celà te servira.)
    Le DLookUp() pourra également éventuellement te servir pour vérifier si tes données existent déjà dans une table ou non.

    En suite eh bien ... en cherchant dans le forum et la FAQ sur les différents points que je t'ai donné je pense tu trouveras les informations adéquates.

    En espérant t'aider.
    J'aime les gâteaux.

  3. #3
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Salut,

    Tu peux essayer ce code là :
    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
    Private Sub OK_Click()
    On Error GoTo OK_Err
        If (Eval("[Forms]![F1]![Champ] Is Null")) Then
            MsgBox "Le test est mauvais"
            Champ.SetFocus
            GoTo OK_Exit
        End If
     
    OK_Exit:
        Exit Sub
     
    OK_Err:
        MsgBox Error$
        Resume OK_Exit
    End Sub
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par zoom61
    Salut,

    Tu peux essayer ce code là :
    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
    Private Sub OK_Click()
    On Error GoTo OK_Err
        If (Eval("[Forms]![F1]![Champ] Is Null")) Then
            MsgBox "Le test est mauvais"
            Champ.SetFocus
            GoTo OK_Exit
        End If
     
    OK_Exit:
        Exit Sub
     
    OK_Err:
        MsgBox Error$
        Resume OK_Exit
    End Sub
    Je comprends bien ton code, mais je comprends moins ton recours à Eval() ?
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Salut,

    Dans mon cas, si je ne mettais pas Eval, mon code ne fonctionnait pas !
    Mais je suis incapable de te dire pourquoi !
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Eval() est tout sauf une fonction "propre", elle n'existe d'ailleurs pas en VB (.net j'en sais rien).

    Tu peux utiliser IsNull() ou encore tester la longueur de la chaîne avec Len()
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Je ne savais pas, je vais essayer de m'en souvenir "Cafeine". Merci. @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci à tous pour votre aide,

    J'ai donc utiliser ISNULL() et le premier test sur F_NumTgag se passe Ok

    Par contre:

    le test du 2ème champ n'est pas OK
    le test de doublon ne fonctionne pas non plus

    Merci d'avance pour votre aide

    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
    Private Sub BtnSauver_Click()
    On Error GoTo Err_BtnSauver_Click
     
        Dim VnumTag As String
        F_NumTag.SetFocus
        VnumTag = F_NumTag.text
     
      ' Tests sur Le numéro du Tag
            If IsNull(F_NumTag) Then
               MsgBox " Le n° de Tag doit être renseigné", vbOKOnly + vbExclamation, "Avertissement"
               Exit Sub
            End If
            If NumtagExiste(VnumTag) = True Then
               MsgBox "Le n° de Tag existe déjà", vbOKOnly + vbExclamation, "Avertissement"
               Exit Sub
            End If
     
       ' Tests sur La Datenr
            If (IsNull(F_Datenr)) Then
                MsgBox "La date doit être renseignée", vbOKOnly + vbExclamation, "Avertissement"
                F_Datenr.SetFocus
                Exit Sub
            End If
     
    Exit_BtnSauver_Click:
        Exit Sub
     
     
    Err_BtnSauver_Click:
        MsgBox Err.Description
        Resume Exit_BtnSauver_Click
     
    End Sub
     
    Private Function NumtagExiste(VnumTag As String) As Boolean
    On Error GoTo fin
        Dim res As Boolean
        Dim rst As Recordset
     
        Set rst = CurrentDb.OpenRecordset("select * from Tagregister where Numtag='" & VnumTag)
     
        If rst.EOF = True Then
            res = False
        Else
            res = True
        End If
        NumtagExiste = res
        Exit Function
    fin:
    merci d'utiliser les balises code obligatoires | cafeine

  9. #9
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    tente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(F_Datenr) = 0 Then
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci à tous, je progresse à grands pas grâce à votre aide précieuse
    (Les balises code ont réglé le pb merci Cafeine)

    A-t-on le droit de déclarer une fonction dans le code associé à un formulaire access?

    Ici je n'ai pas d'erreur signalé mais la fonction
    NumTagExiste ne fait rien:


    Private Sub BtnSauver_Click()
    On Error GoTo Err_BtnSauver_Click

    Dim VnumTag As String
    F_NumTag.SetFocus
    VnumTag = F_NumTag.text

    ' Tests sur Le numéro du Tag
    If IsNull(([Forms]![FrmTagregister]![F_NumTag])) Then
    MsgBox " Le n° de Tag doit être renseigné", vbOKOnly + vbExclamation, "Avertissement"
    F_NumTag.SetFocus
    Exit Sub
    End If
    If NumtagExiste(VnumTag) = True Then
    MsgBox "Le n° de Tag existe déjà", vbOKOnly + vbExclamation, "Avertissement"
    Exit Sub
    End If

    ' Tests sur La DateEnr
    If (IsNull([Forms]![FrmTagregister]![F_DateEnreg])) Then
    MsgBox "La date doit être renseignée", vbOKOnly + vbExclamation, "Avertissement"
    F_DateEnreg.SetFocus
    Exit Sub
    End If

    Exit_BtnSauver_Click:
    Exit Sub

    Err_BtnSauver_Click:
    MsgBox Err.Description
    Resume Exit_BtnSauver_Click

    End Sub

    Private Function NumtagExiste(VnumTag As String) As Boolean
    On Error GoTo fin
    Dim res As Boolean
    Dim rst As Recordset

    Set rst = CurrentDb.OpenRecordset("select * from Tagregister where Numtag='" & VnumTag)
    If rst.EOF = True Then
    res = False
    Else
    res = True
    End If
    NumtagExiste = res
    Exit Function
    fin:
    NumtagExiste = False
    End Function

  11. #11
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Merci d'éditer ton précédent message et de mettre les balises code.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. [AC-2010] Condition If dans vba pour remplir un champ d'un formulaire
    Par freeman3869 dans le forum Access
    Réponses: 6
    Dernier message: 21/04/2015, 11h13
  2. Utiliser le VBA pour copier et incrémenter une feuille
    Par theyang dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/10/2014, 21h20
  3. Réponses: 1
    Dernier message: 31/03/2014, 13h26
  4. [AC-2010] Suggestions pour améliorer l'aspect de mon formulaire?
    Par Greg12345 dans le forum IHM
    Réponses: 1
    Dernier message: 03/11/2011, 05h50
  5. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44

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