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

IHM Discussion :

Comment récupérer la valeur saisie dans une zone de liste déroulante dans l'inputBox d'ajout d'élément? [AC-2003]


Sujet :

IHM

  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 récupérer la valeur saisie dans une zone de liste déroulante dans l'inputBox d'ajout d'élément?
    Bonjour les developpezien(ne)s,

    Voici mon problème du jour.

    Je voudrai récupérer la valeur saisie dans la zone de liste déroulante (zl_marque) qui n'existe pas bien sûr pour qu'elle se rajoute dans l'InputBox à l'aide de l'événement "sur absence dans liste".
    Actuellement j'utilise ce code:

    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
    Private Sub zl_marque_NotInList(NewData As String, Response As Integer)
     
    Dim oRst As DAO.Recordset
     
    nouvelEnregistrement = GetProperName(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
    Comment faire pour récupérer cette valeur pour l'InputBox?

    Et comment faire aussi pour récupérer la valeur de la zone de liste déroulante pour la copier dans une zone de texte d'un autre formulaire lorsque qu'on appuie sur le bouton qui ouvre l'autre formulaire concerné?

    Je vous remercie par avance de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pour répondre au 2 questions, dans la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub zl_marque_NotInList(NewData As String, Response As Integer)
    la variable NewData contient la valeur saisie dans la zone et qui n'appartient pas la liste déroulante.
    Donc tu peux utiliser cette variable pour mettre une valeur par défaut dans ta InputBox

    Bien que je pense qu'il aurait mieux valu utiliser une MsgBox avec des boutons OUI/NON, ce qui éviterait d'aller vérifier que la saisie de l'utilisateur n'existe pas dans la table.
    Frédéric
    Développeur d'Applications Access

  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
    Je n'ai pas tout compris

    Je me suis mal exprimé pour la deuxième question.
    La valeur que je veux récupérer de la zone déroulante existe déjà (qui est la liste des modèles par exemple) comment faire pour récupérer cette valeur pour la copier dans une autre zone de liste déroulante ou zone de texte d'un autre formulaire qui s'ouvre lorsqu'on clique sur "btn_frm_modele"?

    Sinon pour ma première question j'avais cette solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des marque ?", _
            vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
            DoCmd.RunSQL "INSERT INTO tbl_marque ( nom_marque ) SELECT """ & NewData & """;"
            Response = acDataErrAdded
        Else
            Response = acDataErrContinue
            zl_marque.Undo
        End If
        End Sub
    Donc je valide une première fois mais un message apparaît qui est:
    "vous allez ajouter 1 ligne(s).
    dès que vous aurez cliqué sur oui, il ne vous sera pas possible d'utiliser la commande annuler pour supprimer les modifications.
    êtes vous sur de vouloir ajouter les lignes sélectionnées?"
    et si de plus je clique non sur ce message j'ai une erreur qui s'affiche qui est:
    "erreur d'exécution '2501':
    l'action RunSQL a été annulée."

    Comment faire pour ne pas avoir c'est messages.

    Merci par avance

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pour éviter les messages de confirmation, on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Docmd.SetWarnings False 'désactive les messages
    DoCmd.RunSQL "INSERT INTO tbl_marque ( nom_marque ) SELECT """ & NewData
    Docmd.SetWarnings True' réactive les messages
    Frédéric
    Développeur d'Applications Access

  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 fgiambelluco ca marche nickel chrome.

    Et pour récupérer la valeur d'une zone de liste déroulante pour la copier dans une autre formulaire tu as une astuce?

    Encore merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    Tu peux essayer avec telle que, ou tu charges la valeur dans une variable (publique à priori)
    Frédéric
    Développeur d'Applications Access

  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
    Je un autre petit problème qui vient c'est a dire qu'à partir de ce code
    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
    Private Sub zl_marque_NotInList(NewData As String, Response As Integer)
     
    If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des marque ?", _
    vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
    DoCmd.SetWarnings False
    DoCmd.RunSQL "INSERT INTO tbl_marque ( nom_marque ) SELECT """ & NewData & """;"
    DoCmd.SetWarnings True
    Response = acDataErrAdded
     
    Else
     
    Response = acDataErrContinue
    zl_marque.Undo
     
    End If
     
    End Sub
    Ca ne me permet pas d'avoir toutes mes premières lettres du mot en majuscule.

    Car avec ce code:
    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
    Private Sub btn_ajout_marque_Click()
     
    Dim oRst As DAO.Recordset
     
    nouvelEnregistrement = GetProperName(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
    Me permettais d'avoir toutes mes premières lettre en majuscule grâce à GetProperName qui faisait appelle à ce module
    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
    Option Compare Database
     
    Option Explicit
     
    Public Function GetProperName(ByVal TextToConvert As String) As String
    Dim i As Integer
    Dim separateur
    separateur = Array(" ", ";", ":", "-", "~", "@", "_", "&", "*", "#", "'", Chr(160))
    TextToConvert = LCase(TextToConvert)
     
    If Len(TextToConvert) <= 0 Then
       GetProperName = ""
       Exit Function
    End If
     
    'mettre la première lettre en majuscule
    TextToConvert = UCase(Mid(TextToConvert, 1, 1)) + Right(TextToConvert, Len(TextToConvert) - 1)
     
    'mettre en majuscule après chaque séparateur
    For i = 1 To Len(TextToConvert) - 1
        If UBound(Filter(separateur, Mid(TextToConvert, i, 1))) >= 0 Then
            TextToConvert = Left(TextToConvert, i) + UCase(Mid(TextToConvert, i + 1, 1)) + Right(TextToConvert, Len(TextToConvert) - i - 1)
        End If
    Next i
     
    GetProperName = TextToConvert
    End Function
    Comment mettre toute les premières lettres du mot en majuscule à l'aide du premier code?

  8. #8
    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'y ai pensé avec Mais j'arrive a utilisé ce code quand c'est dans le même formulaire mais pas pour un autre formulaire.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    Ca ne me permet pas d'avoir toutes mes premières lettres du mot en majuscule.
    Essaye d'utiliser
    Mais j'arrive a utilisé ce code quand c'est dans le même formulaire mais pas pour un autre formulaire
    Dans ce cas là, déclare une variable dans un module et charge là avant de changer de formulaire.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public pMarque ' à écrire dans un modle global
    pMarque=Me.MaListe.Value ' chargement de la variable avant de chenger de formulaire
    Frédéric
    Développeur d'Applications Access

  10. #10
    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
    Désolé fgiambelluco je vais te paraître un peu le boulet de service.

    Mais à quel endroit dois-je mettre

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    Tu les mets à l'endroit où tu veux que la première lettre de ta donnée soit en majuscule. Par exemple au moment de l'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO tbl_marque ( nom_marque ) SELECT """ & GetProperName(NewData) & """;"
    Frédéric
    Développeur d'Applications Access

  12. #12
    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 fgiambelluco
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO tbl_marque ( nom_marque ) SELECT """ & GetProperName(NewData) & """;"
    marche nickel chrome.

    Pour mon deuxième problème j'ai mis ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub btn_ajout_marque_Click()
     
    DoCmd.OpenForm "frm_modele"
    frm_modele.zl_marque.Value = Me.zl_marque.Column(0)
     
    End Sub
    Et j'ai un message d'erreur qui apparaît:
    "erreur d'execution '424':
    objet requis"

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    La bonne syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![frm_modele]![num_marque].Value = Me.zl_marque.Column(0)
    A demain (fin de journée )
    Frédéric
    Développeur d'Applications Access

  14. #14
    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 beaucoup fgiambelluco pour tes aides et surtout respect...

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

Discussions similaires

  1. [AC-2003] Filtrer le contenu de listes déroulantes dans une zone de liste
    Par Dupont D'Isigny dans le forum IHM
    Réponses: 4
    Dernier message: 28/01/2014, 15h41
  2. [AC-2013] Créer liste déroulante dans une zone de liste
    Par walooze dans le forum IHM
    Réponses: 5
    Dernier message: 12/06/2013, 13h15
  3. Réponses: 2
    Dernier message: 06/10/2010, 09h40
  4. Réponses: 14
    Dernier message: 21/03/2008, 19h21
  5. Affichage des valeurs disponibles dans une zone de liste déroulante
    Par azerty dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 12h29

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