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 :

Sélection d'une ligne dans une zone de liste déroulante [AC-2016]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Sélection d'une ligne dans une zone de liste déroulante
    Bonjour à tous,

    Je construis un formulaire qui affiche des données d'interventions. J'aimerai pouvoir modifier 5 champs dans tous ceux disponible pour une intervention. Les valeurs possibles pour ces champs sont regroupées dans une zone de liste déroulante.

    De ce fait, si je ne modifie qu'un seul champ, je voudrais toutes données dans les listes déroulantes soient sélectionnées directement.

    J'ai utiliser la fonction sélectionner ci-dessous mais elle fonctionne uniquement pour les zones de listes. En mettant ComboBox à la place de listBox, cela ne fonctionne plus. Est il possible de faire quelque chose ?

    Merci d'avance,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function Selectionner2(Liste As ComboBox, Colonne As Integer, Chercher As String)
    Dim i As Integer
    Dim Trouve As Boolean
    For i = 0 To Liste.ListCount - 1
    If Liste.Column(Colonne, i) = Chercher And Not Trouve Then
    Forms("F_AffichageInterventions").Controls("L_ClientModif").Selected(i) = True
    End If
    Next i
    End Function

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Points : 2 491
    Points
    2 491
    Par défaut
    Pas clair; peut-être qu'une copie zipée de ta DB (avec mots d'explication) aidera un mécène qui voudra bien l'analyser.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Excuse moi,

    Pour faire simple, est il possible de sélectionner une valeur d'une liste déroulante en VBA ?

    Merci

  4. #4
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    D'après la doc Microsoft on pourrait utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Combobox.Selected(4) = True
    pour sélectionner la 5e ligne d'une liste déroulante, mais je n'ai jamais obtenu ce résultat. Et quelque soit l'état de la liste, pour toutes les lignes i existantes, et même au delà (!) Me!Combobox.Selected(i) m'a renvoyé 0 avec obstination

    Le code ci-dessous sélectionne la ligne d'une combo box dont une colonne contient le texte saisi en input. A adapter...
    Code VBA : 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 PB_Select_Click()
    Dim ligne As Long
    Dim colonne As Long
    Dim bTrouve As Boolean
    Dim strSearch As String
     
    bTrouve = False
    strSearch = Me.EF_Input
     
    For colonne = 0 To Me.MyCB.ColumnCount - 1
     
        For ligne = 0 To Me.MyCB.ListCount - 1
            If Me.MyCB.Column(colonne, ligne) = strSearch Then
                bTrouve = True
                Me.MyCB.Value = Me.MyCB.Column((Me.MyCB.BoundColumn - 1), ligne)
                Exit For
            End If
        Next ligne
        If bTrouve Then Exit For
    Next colonne
     
    If Not bTrouve Then
        Me.MyCB.Value = ""
        MsgBox "Non trouvé ! "
    End If
     
     
    End Sub

  5. #5
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Points : 2 491
    Points
    2 491
    Par défaut Liste déroulante
    Pour afficher une valeur sélectionnée d'une liste déroulante en VBA, on écrit :
    'événement après mise à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboMembres_AfterUpdate()  'où ComboMembres doit être remplacé par le nom de votre liste déroulante.
       MsgBox "Elémént sélectionné : " & Me!ComboMembres.Value
       'si votre liste contient 2 colonnes, et que vous voulez afficher le contenu de la 2è col, alors :
       MsgBox "Elémént sélectionné : " & Me!ComboMembres.Column(1)
    End Sub

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Bonjour Paraffine,

    Je te remercie pour la réponse,

    Cela fonctionne. Peux tu me dire comment transformer ca en fonction ?

    Je bloque au niveau du "Me." ... (utilisation incorrecte ...)

    Merci d'avance,

  7. #7
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut Bonjour Nathansenouf,
    J'imagine qu'il s'agit d'une fonction réutilisable de manière générale (dans un module) ?
    Effectivement le "Me" fait référence au formulaire actif : quand le code se trouve dans un module (ou un autre formulaire), cela bloque.
    Je pourrai regarder plus tard dans la journée. Le travail d'abord...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Oui c'est bien ca !!

    Pas de problèmes, je veux bien si tu as le temps ! Merci d'avance !
    Bon courage !

  9. #9
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut Un exemple sous forme de fonction
    A titre d'exemple j'ai repris le même fonctionnement, avec une recherche dans toutes les colonnes :

    Code VBA : 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
    Public Function Combo_Select_OK(MyCB As ComboBox, MyVal As Variant)
    Dim ligne As Long
    Dim colonne As Long
    Dim bTrouve As Boolean
    Dim strSearch As String
     
    On Error GoTo Err_Sel
    Combo_Select_OK = False
    bTrouve = False
    strSearch = CStr(Nz(MyVal, ""))
     
    For colonne = 0 To MyCB.ColumnCount - 1
     
        For ligne = 0 To MyCB.ListCount - 1
            If MyCB.Column(colonne, ligne) = strSearch Then
                bTrouve = True
                MyCB.Value = MyCB.Column((MyCB.BoundColumn - 1), ligne)
                Exit For
            End If
        Next ligne
        If bTrouve Then Exit For
    Next colonne
     
    If Not bTrouve Then
        MyCB.Value = ""
        MsgBox "Non trouvé ! "
    End If
     
     
    Exit_Sel:
        Combo_Select_OK = Nz(bTrouve, False)
        Exit Function
     
    Err_Sel:
        MsgBox Err.Description
        On Error Resume Next
        Resume Exit_Sel
     
    End Function

    Voici l'appel depuis le formulaire :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub PB_chercher_CB2_Click()
    If Not IsNull(Me.EF_Input.Value) Then
        MsgBox "coucou il y a bien une valeur saisie à rechercher dans la liste déroulante, c'est " & Me.[EF_Input].Value
    Else
        Exit Sub
    End If
     
    Me.MyCB.Enabled = True
     
    If Not Combo_Select_OK(Me.MyCB, Me.[EF_Input].Value) Then
        MsgBox " échec de la sélection"
    End If
     
    End Sub

    Bien sûr il faut virer pas mal de "MsgBox " - c'était juste pour le test ! Normalement je gère une variable message et je ne l'affiche qu'une fois avec toutes les erreurs dedans. Mais là c'est l'heure de dormir !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    C'est parfait, adapté et ca fonctionne nickel ! Merci beaucoup !!

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

Discussions similaires

  1. [AC-2003] Affichage d'une sélection dans une zone de liste déroulante
    Par Taiby dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/01/2012, 14h27
  2. Réponses: 2
    Dernier message: 01/10/2009, 14h43
  3. Réponses: 2
    Dernier message: 26/10/2006, 09h47
  4. Enregistrement dans une Zone de liste déroulante
    Par w3sk3r dans le forum Access
    Réponses: 23
    Dernier message: 20/08/2006, 19h10
  5. Réponses: 8
    Dernier message: 24/02/2006, 09h59

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