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 :

ListIndex pour selectionner un resultat dans une liste de choix


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Par défaut ListIndex pour selectionner un resultat dans une liste de choix
    Bonjour,

    J'ai une table Clients, avec des paramètres Civilité, Nom, prénom, Adresse.
    J'ai fait un formulaire de saisie dans lequel je souhaiterais que l'utilisateur puisse sélectionner le client si celui ci existe déjà dans la liste des choix, et en ne sélectionnant que le nom du client par exemple, que cela remplisse automatiquement les champs restants.

    J'ai donc 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    Option Compare Database
    Private Sub Form_Load()
        'Sert a effacer les champs.
        Me.lstCCAbr.Value = vbNullString
        Me.txtCCNor.Value = vbNullString
        Me.lstAdr1.Value = vbNullString
        MAJ ()
    End Sub
    Private Sub MAJ()
     
        On Error Resume Next
     
        'Les requetes.
        Dim rqt, rqtCCAbr, rqtNClient, rqtPClient, rqtAdr1As String
     
        'Toutes les valeurs selectionnés
        If (Not IsNull(Me.lstCCAbr.Value) And Not Me.lstCCAbr.Value = vbNullString And Not Me.lstCCAbr.Value = "") Then
     
              rqt = "WHERE Clients.Civclientabrg like '" + CStr(Me.lstCCAbr.Value) + "'"
        Else: rqt = "WHERE Clients.Civclientabrg like '*'"
        End If
     
        If (Not IsNull(Me.lstNClient.Value) And Not Me.lstNClient.Value = vbNullString And Not Me.lstNClient.Value = "") Then
     
             rqt = rqt + " AND  Clients.Nomclient like '" + CStr(Me.lstNClient.Value) + "'"
        End If
     
        If (Not IsNull(Me.lstPClient.Value) And Not Me.lstPClient.Value = vbNullString And Not Me.lstPClient.Value = "") Then
     
            rqt = rqt + " AND Clients.Prenomclient like '" + CStr(Me.lstPClient.Value) + "'"
        End If
     
        If (Not IsNull(Me.lstAdr1.Value) And Not Me.lstAdr1.Value = vbNullString And Not Me.lstAdr1.Value = "") Then
     
             rqt = rqt + " AND Clients.Adresse1 like '" + CStr(Me.lstAdr1.Value) + "'"
        End If
     
        'Requete sur la civilite abregee du client
        rqtCCAbr = "SELECT DISTINCT Civclientabrg FROM Clients " + rqt
        rqtCCAbr = rqtCCAbr + " ORDER BY Clients.Civclientabrg;"
     
    RequeteNClient:
     
                'Requete sur le nom du client
                rqtNClient = "SELECT DISTINCT Nomclient FROM Clients " + rqt
                rqtNClient = rqtNClient + " ORDER BY Clients.Nomclient;"
     
                Me.lstNClient.RowSource = rqtNClient
                Me.lstNClient.Requery
     
                If (Me.lstNClient.ListCount = 1) Then
                    Me.lstNClient.Selected(0) = True
                    If Me.lstNClient.ListIndex = -1 Then
                        Me.lstNClient.ListIndex = 0
                    End If
                End If
     
    RequetePClient:
     
            'Requete sur le prenom du client
            rqtPClient = "SELECT DISTINCT Prenomclient FROM Clients " + rqt
            rqtPClient = rqtPClient + " ORDER BY Clients.Prenomclient;"
     
            Me.lstPClient.RowSource = rqtPClient
            Me.lstPClient.Requery
     
            If (Me.lstPClient.ListCount = 1) Then
                Me.lstPClient.Selected(0) = True
                If Me.lstPClient.ListIndex = -1 Then
                    Me.lstPClient.ListIndex = 0
                End If
            End If
     
    RequeteAdr1:
     
        'Requete sur l'adresse 1 du client
        rqtAdr1 = "SELECT DISTINCT Adresse1 FROM Clients " + rqt
        rqtAdr1 = rqtAdr1 + " ORDER BY Clients.Adresse1;"
     
        Me.lstAdr1.RowSource = rqtAdr1
        Me.lstAdr1.Requery
     
        If (Me.lstAdr1.ListCount = 1) Then
            Me.lstAdr1.Selected(0) = True
            If Me.lstAdr1.ListIndex = -1 Then
                Me.lstAdr1.ListIndex = 0
            End If
        End If
     
    End Sub
    Private Sub lstCCAbr_AfterUpdate()
        MAJ ()
    End Sub
    Private Sub lstNClient_AfterUpdate()
        MAJ ()
    End Sub
    Private Sub lstPClient_AfterUpdate()
        MAJ ()
    End Sub
    Private Sub lstAdr1_AfterUpdate()
        MAJ ()
    End Sub
    Seulement des qu'on selectionne un nom, il selectionne automatiquement le prenom puis plus moyen de faire quoi que se soit...

    Je ne sais pas ce qu'il se passe alors je m'en remet à vous svp !

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 128
    Par défaut
    Bonjour,

    Normalement on ne stocke que le identifiant unique du client dans une base, sauf pour les données ou l'adresse client doit être fixée (factures).

    Si tel est le cas je procède comme ceci :

    je mets les données toutes les données à insérer dans la liste.

    Sur l'événement Aprés MAJ de la liste client je mets le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    me.civil = me.listeclient.column(1) ' colonne 2
    me.nom = me.listeclient.column(2) ' colonne 3
    ...
    0 est la première colonne normalement le N°.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Selectionner Un Record Dans Une Liste Deroulante
    Par benmacker dans le forum IHM
    Réponses: 6
    Dernier message: 16/05/2007, 16h13
  2. 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
  3. Aide demandée pour sélection de données dans une liste
    Par pyprog dans le forum Général Python
    Réponses: 2
    Dernier message: 15/08/2006, 21h11
  4. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  5. Sélectionner le minimum dans une liste
    Par SteelBox dans le forum Prolog
    Réponses: 18
    Dernier message: 01/11/2005, 12h08

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