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 Access Discussion :

comment ajouter un élément dans une liste avec InputBox [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut comment ajouter un élément dans une liste avec InputBox
    Bonjour tout le monde,

    Malgré mes recherches sur le forum qui m'aide beaucoup, je n'ai pas trouvé cette fois si.

    Je vais expliquer mon désir.

    j'ai une table "tbl_marque" avec les champs "num_marque" et "nom_marque"

    j'aimerai lorsque je clique sur le bouton une fenêtre apparait proposant de rentrer le nom de la nouvelle marque. Qui s'incrémente dans la table "tbl_marque" après validation et si la marque existe déjà un message apparait disant que le nom existe déjà.

    la seul chose que j'ai réussi à faire est de faire apparaitre InputBox avec le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub btn_nouvelle_marque_Click()
     
            nouvelleMarque = InputBox("Entrez ci-dessous la nouvelle marque à rajouter dans la liste:", "Nouvelle marque")
    End Sub

    Comment faire pour le reste?

    Je vous remercie par avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Pourquoi passer par une Input box.
    Pourquoi ne pas faire un formulaire basé sur ta table. Si tu l'ouvres sur un nouvel enregistrement et si comme je le suppose ton champ "Nom_Marque " interdit les doublons, cela va aller tout seul.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    Car en faite c'est un formulaire avec plusieurs zone de liste déroulante "zl_marque" et "zl_modele", une zone de texte "txt_imei" avec un sous formulaire "sfrm_mobile" qui contient la liste d'une requêtes "req_mobile" qui affiche les modèles et l'imei ainsi que deux boutons pour rajouter soit une nouvelle marque, soit un nouveau modèle.

    Quand on sélectionne une marque dans "zl_marque" on ne voit que les modèles de cette marque dans "zl_modele" et met à jour "sfrm_mobile".

    InputBox pourrait me permettre d'éviter de créer deux formulaires un pour 'tbl_marque" et l'autre pour 'tbl_modele"

    j'ai trouvé ceci mais cela ne marche pas...

    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
     
     
    Private Sub Commande7_Click()
     
    nouvelEnregistrement = InputBox("Entrez ci-dessous l'élément à rajouter dans la liste :")
        If nouvelEnregistrement = "" Then
            Exit Sub
        End If
        bool = False
        Dim oRst As DAO.Recordset
        Dim oDb As DAO.Database
        Set oDb = CurrentDb
        Set oRst = oDb.OpenRecordset("select nom_marque from tbl_marque", dbOpenDynaset)
     
        While Not oRst.EOF
            If nouvelEnregistrement = oRst.Fields("nom_marque").Value Then
                bool = True
            End If
            oRst.MoveNext
        Wend
        If bool = True Then
            MsgBox ("L'élément saisi existe déjà dans la liste.")
        Else
            DoCmd.RunSQL "INSERT INTO tbl_marque(nom_marque) VALUES (""" & nouvelEnregistrement & """);"
            Me.tbl_marque.Requery
        End If
     
    End Sub
    j'espère que je me suis bien exprimé ^^

  4. #4
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut
    Bonjour.
    Si tu veux à tout prix passer par input box, peut-être comme ça :

    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
    Public Sub Commande7_Click()
     
    Dim oRst As DAO.Recordset
     
    nouvelEnregistrement = InputBox("Entrez ci-dessous l'élément à rajouter dans la liste :")
        If nouvelEnregistrement = "" Or IsNull(nouvelEnregistrement) Then
            Exit Sub
        Else
            Set oRst = CurrentDb.OpenRecordset("select nom_marque from tbl_marque", dbOpenDynaset)
            While Not oRst.EOF
                If nouvelEnregistrement = oRst.Fields("nom_marque").Value Then
                    MsgBox ("L'élément saisi existe déjà dans la liste.")
                    Exit Sub
                End If
            oRst.MoveNext
            Wend
     
            With DoCmd
                .SetWarnings False
                .RunSQL "INSERT INTO tbl_marque(nom_marque) VALUES ('" & nouvelEnregistrement & "');"
                .SetWarnings True
            End With
        MsgBox ("L'élément " & nouvelEnregistrement & " a été ajouté à la liste.")
        End If
    End Sub
    Cordialement.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    Merci GillesDeVuif ca marche nickel chrome.

    Comment ça se fait que cela ne marchait pas?

  6. #6
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut
    Bonjour.

    Comment ça se fait que cela ne marchait pas?
    Je l'ignore et te recommande avec force l'exécution de ta sub originale pas à pas si tu souhaites le déterminer.
    La phrase "ça ne marche pas" n'aide pas au diagnostic rapide, l'idéal, c'est plutôt : le debug dit que, ou, ça plante à telle ligne ...
    Pour une prochaine fois, peut-être ?

    Cordialement.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    J'ai essayé le débug pas à pas et ça bugué des la premières ligne.

    Je ne te cache pas que je débute complet dans le monde Access et de VBA.
    Et je n'y comprend pas grand chose .

    Mais en tout cas un grand merci pour ton aide précieuse.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/10/2009, 16h07
  2. Réponses: 8
    Dernier message: 01/03/2008, 13h33
  3. Réponses: 12
    Dernier message: 12/03/2007, 16h58
  4. Correction pour ajouté un élément dans une liste
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2007, 11h09
  5. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43

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