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 :

pointer la valeur d'une liste en fonction de la sélection dans une liste déroulante


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut pointer la valeur d'une liste en fonction de la sélection dans une liste déroulante
    Bonjour à tous,


    Dans un formulaire je possède une liste déroulante qui me permet de chercher un enregistrement dans mon formulaire comme il suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Modifiable133_AfterUpdate()
     
    'liste déroulante de recherche
    If Not IsNull(Me.Modifiable133) Then
    strFiltre = "[ID_personnes]=" & Me.Modifiable133
    Me.Filter = strFiltre
    Me.FilterOn = True
    Me.Requery
    dans ce formulaire j'ai une zone de liste qui affiche tout les champs de ma liste déroulante.

    Je voudrais que lorsque je sélectionne un enregistrement dans ma liste déroulante, la zone de liste ai en sélection la valeur choisie.

    Par exemple, je choisis Tartempion Gilles dans ma liste déroulante, le formulaire s'actualise sur cet enregistrement et la zone de liste est actualisée avec Tartempion Gilles sélectionné.

    (Il me faut par contre garder l'ensemble des valeurs de la liste, la mise en place d'un filtre ne permettrais pas ce que je voudrais faire)

    Merci d'avance !

    Sardaucar

  2. #2
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    J'ai essayé avec ce bout de code trouvé sur internet, mais ça ne me renvoie rien du tout...

    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
    Private Sub Modifiable133_AfterUpdate()
     
    'liste déroulante de recherche
    If Not IsNull(Me.Modifiable133) Then
    strFiltre = "[ID_personnes]=" & Me.Modifiable133
    Me.Filter = strFiltre
    Me.FilterOn = True
    Me.Requery
     
    Dim i As Integer, Target As String
    Dim l_rsStrSql As dao.Recordset
        '----------------------------------------------------
        '//SELECTION DE LA LIGNE DANS LA ZONE DE LISTE "LISTE"
        '//VARIABLE --> ValFind
        For i = 0 To Me.Liste278.ListCount
            Target = Nz(Me.Liste278.Column(1, i))
     
            If Target = Me.Modifiable133 Then
                Me.Liste278.Selected(i) = True
                Me.Liste278 = CInt(Me.Liste278.Column(0, i))
                GoTo Fin
            End If
        Next i:
     
    Fin:
        If Target <> "" Then
        ' Récupération du recordset de la liste
        Set l_rsStrSql = Me.Liste278.Recordset
     
        ' Mise à zéro du champ NumOrdre
        With l_rsStrSql
            .Move i
                .Edit
                .Fields(2) = 0
                .Update
        End With
     
        ' Mise à jour de l'affichage de la liste
        Me.Liste278.Requery
        Else
            MsgBox "Il n'y a pas d'employé ayant ce prénom", vbInformation
            Me.Modifiable133 = ""
        End If

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    Je ne comprends pas très bien le but de l'opération, mais à ma connaissance, les colonnes liées de ta liste déroulante et de ta zone de liste comportent les mêmes valeurs donc il faut assigner la valeur choisie de ton combo à ta zone de liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Liste278 = Me.Modifiable133
    à la suite de ton code après mise à jour.

    J'espère que je ne me plante pas.

    Bonne continuation

  4. #4
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    J'ai essayé ça mais rien ne se passe :/

  5. #5
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    Après intense cherchage la solution était simple en partant de ton principe, j'ai attribué à ma liste la valeur du champ identifiant dans le formulaire et miracle ! Une simple ligne de code donc... Il ne me reste plus qu'à trouver comment faire en sorte que ma ligne sélectionnée se mette au milieu de ma liste et pas en fin de liste ! merci encore !

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Je ne sais pas, mais chez moi ça fonctionne :

    Base ci-jointe

  7. #7
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    yep ça marche chez moi aussi !

    Pas hasard saurais-tu s'il existe un moyen d'afficher la ligne de la liste ainsi sélectionnée au milieu de la liste et non en haut ou en bas suivant si l'on descend ou monte ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/04/2015, 12h00
  2. Réponses: 0
    Dernier message: 04/02/2015, 10h46
  3. Réponses: 1
    Dernier message: 29/07/2012, 12h22
  4. Réponses: 11
    Dernier message: 08/01/2010, 22h10
  5. Réponses: 3
    Dernier message: 18/01/2007, 18h19

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