Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > Formulaires > Contrôles > Zones de liste et zones de liste modifiable
        Y a-t-il moyen d'éliminer la barre de défilement horizontale lors de l'utilisation d'une zone de liste sur plusieurs colonnes?
        Comment dans une zone de liste modifiable, supprimer le message d'erreur 'le texte entre n'appartient pas a la liste' ?
        Comment désélectionner les valeurs d'une liste à choix multiples?
        Absence dans liste déroulante - Proposer d'ajouter la valeur manquante dans la table source
        Comment remettre l'affichage d'une zone de liste modifiable à blanc ?
        Comment connaître le nombre de ligne d'une zone de liste ?
        Comment sélectionner une ligne d'une zone de liste modifiable en VBA ?
        Comment sélectionner une ligne d'une zone de liste en VBA ?
        Impossible de changer la valeur d'une liste ou boîte de texte ?
        Comment Rafraîchir les données de ma zone de liste ?
        Comment modifier la requête source d'une zone de liste modifiable ?
        Comment savoir quelle ligne d'une zone de liste modifiable est sélectionnée ?
        Comment ajouter un ou des éléments à une zone de liste ?
        Comment récupérer la valeur d'une colonne de la ligne sélectionnée dans une zone de liste ?
        Comment autoriser plusieurs sélections dans une zone de liste ?
        Selectionner tous les éléments zone de liste en VBA ?
        Empêcher la mise à jour (modification) d'une zone de liste modifiable tout en permettant la sélection de ligne dans la liste
        Comment selectionner une ligne dans une zone de liste en fonction du texte d'une de ses colonnes ?
        Comment empêcher la saisie au clavier dans une zone de liste ?
        Comment vérifier qu'une valeur existe dans une zone de liste ?
        Comment faire correspondre deux zones de listes
        Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?
        Commer vider le contenu une zone de liste modifiable ?
        Comment récupérer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?
        Comment archiver les dernières valeurs saisies dans une liste ? (pratique pour les champs de recherche)
        Comment conserver la sélection lors d'un affichage de requetes dans zones de listes
        Comment dérouler une liste modifiable lors de sa réception du Focus ?
        Comment dérouler une liste déroulante sur le survol de la souris ?
        7.1.1.1. Trucs et Astuces (3)
                Comment limiter le nombre de selections d'une ListeBox ?
                Ajouter Tous en haut d'une liste déroulante
                Comment remplir dynamiquement une liste déroulante avec les années ?

precedent    sommaire    suivant   


Y a-t-il moyen d'éliminer la barre de défilement horizontale lors de l'utilisation d'une zone de liste sur plusieurs colonnes?
auteur : Drosera
Il suffit de paramétrer convenablement la largeur des colonnes et celle de la liste.


Comment dans une zone de liste modifiable, supprimer le message d'erreur "le texte entre n'appartient pas a la liste" ?
auteur : Team Access
Il faut utiliser l'evênement NotInList de la zone de liste :
Private Sub MaListe_NotInList(NewData As String, Response As Integer)
    Response = acDataErrContinue
End Sub

Comment désélectionner les valeurs d'une liste à choix multiples?
auteur : Rdesfx

Dim VarLr As Variant
For Each VarLr In Me!MaListe.ItemsSelected
    Me!MaListe.Selected(VarLr) = False
Next VarLr

Absence dans liste déroulante - Proposer d'ajouter la valeur manquante dans la table source
auteur : Maxence HUBICHE
En VBA bibliothèque Access :

Private Sub Modifiable0_NotInList(NewData As String, Response As Integer) 
    If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des prénoms ?",  _
                       vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then 
        DoCmd.RunSQL "INSERT INTO tblPrenoms ( Prénom ) SELECT """ & NewData & """;" 
        Response = acDataErrAdded 
    Else 
        Response = acDataErrContinue 
        Modifiable0.Undo 
    End If 
End Sub 
En VBA bibliothèque ADO :

Private Sub Modifiable0_NotInList(NewData As String, Response As Integer) 
    dim cn as adodb.connection 
    set cn = currentproject.connection      
    If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des prénoms ?",  _
                    vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then 
        cn.execute "Insert into tblPrenoms values(\'" & NewData & "\');" 
        Response = acDataErrAdded 
    Else 
        Response = acDataErrContinue 
        Modifiable0.Undo 
    End If 
End Sub 

Comment connaître le nombre de ligne d'une zone de liste ?
auteur : Team Access

La propriété ListCount d'une zone de liste (ou de zone de liste modifiable) retourne le nombre d'éléments de celle-ci.
Vous pouvez donc interroger cette propriété avec une syntaxe similaire à :

Msgbox MaZoneDeListe.ListCount

Comment sélectionner une ligne d'une zone de liste modifiable en VBA ?
auteur : Gripoil
Sélectionner la première ligne :
Me.Modifiable = Me.Modifiable.ItemData(0)  
Sélectionner la dernière ligne :
Me.Modifiable = Me.Modifiable.ItemData(Me.Modifiable.ListCount - 1) 
lien : Comment sélectionner une ligne d'une zone de liste en VBA ?

Comment sélectionner une ligne d'une zone de liste en VBA ?
auteur : Gripoil
Sélectionner la première ligne :
Me.Liste.Selected(0) = True  
Sélectionner la dernière ligne :
Me.Liste.Selected(Me.Liste.ListCount - 1) = True  
lien : Comment savoir quelle ligne d'une zone de liste modifiable est sélectionnée ?
lien : Comment sélectionner une ligne d'une zone de liste modifiable en VBA ?

Impossible de changer la valeur d'une liste ou boîte de texte ?
auteur : Papy Turbo
1- regardez si le contrôle n'est pas verrouillé, dans les propriétés Données > Verrouillé ou, en VBA : NomControle.Locked = False
2- vérifiez que la source du contrôle (propriété Données > Source contrôle) n'est pas liée à un champ calculé (non modifiable). La Source elle même ne doit évidemment contenir aucun calcul (type <=[Nom] & " " & [Prénom]>, ou bien <=[PrixUnitaire] * [Quantite]>).
3- vérifiez si le formulaire n'est pas verrouillé, propriétés Données > Modif autorisée ou, en VBA, NomFormulaire.AllowEdits = True
4- vérifiez que la propriété Données > Type Recordset du formulaire n'est pas un Instantané (non modifiable), mais bien un recordset dynamique ("Feuille de réponse dynamique" ou bien "Feuille rép.dyn.(MAJ globale)").
5- vérifiez que la requête source du formulaire (propriété Données > Source du formulaire) n'est pas verrouillé (parce que trop complexe ?), en l'ouvrant directement et en essayant d'y modifier une valeur dans le champ source de ce contrôle (celui du point 2.).


Comment Rafraîchir les données de ma zone de liste ?
auteurs : Demco, FRED.G
Vous possédez une zone de liste contenant les données d'une table.

Vous insérez alors une ligne dans cette même table, mais elle n'apparaît pas dans la liste.

Il suffit de rafraîchir les données de la zone de liste en utilisant la méthode requery.

' Me.Refresh sert dans le cas  le contenu de la zone de liste 
' prend en compte les données actuelles du formulaire
' Comme par exemple si une zone de liste utilise dans sa requête source
' la valeur d'une autre zone de liste du formulaire.
Me.Refresh 
Me.MaZoneListe.Requery

Comment modifier la requête source d'une zone de liste modifiable ?
auteur : Demco
Il suffit de modifier la propriété RowSource de la zone de liste modifiable :
Me.MaListe.RowSource = "Select ...."

Comment ajouter un ou des éléments à une zone de liste ?
auteur : Team Access
NouvelElement est tout simplement l'élément à ajouter à la liste :
Me!MyList.RowSource=Me!MyList.RowSource & ";NouvelElement"
Pour ajouter plusieurs éléments :
Private Sub Form_Open(Cancel As Integer) 
 ' Initialisation de la liste, elle contient deux colonnes pays et ville
Me!list.ColumnHeads = True
Me!list.ColumnCount = 2
Me!list.ColumnWidths = "4320;4320" 'on détermine la largeur des colonne
Me!list.RowSource = "Pays;Capitale;Chine;Beijing;Brésil;Brasilia "
End Sub 

Private Sub Command_Click()
Me!list.RowSource = Me!list.RowSource & ";Nouveau pays;Nouvelle ville"
End Sub
Command est le bouton que l'on presse pour ajouter les éléments à la liste.


Attention : il s'agit d'une liste de type Liste de valeurs


Comment récupérer la valeur d'une colonne de la ligne sélectionnée dans une zone de liste ?
auteur : Demco
Sachant que l'indice de la première colonne est 0 :
NomListe.Column(indiceColonne -1)
Donc pour la colonne 2 on aura :
NomListe.Column(1)
lien : faq Comment récupérer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?

Comment autoriser plusieurs sélections dans une zone de liste ?
auteur : Team Access
Définir la propriété SelectionMultiple (MultiSelect) à "étendue" ou "simple" suivant la méthode de sélection souhaitée.


Selectionner tous les éléments zone de liste en VBA ?
auteur : Cafeine
Exemple de code pour un bouton appelé cmdSelectAll et une liste lstRes :
Private Sub cmdSelectAll_Click() 
Dim i As Long 
For i = 0 To Me.lstRes.ListCount - 1 
    Me.lstRes.Selected(i) = True 
Next i 
End Sub 

Comment selectionner une ligne dans une zone de liste en fonction du texte d'une de ses colonnes ?
auteur : Tofalu
Voici une petite fontion qui peut faire l'affaire :
Function Selectionner(Liste As ListBox, 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
Me.Liste.Selected(i) = True
If Liste.MultiSelect = 0 Then Trouve = True
Else
Me.Liste.Selected(i) = False
End If
Next i
End Function
Utilisation :
Selectionner Liste0, 1, "Monsieur"
Ceci selectionne les valeurs Monsieur dans la deuxième colonne. Cela selectionnera une ligne si la zone de liste n'accepte pas la selection multiple ou bien plusieurs si elle le permet.


Comment empêcher la saisie au clavier dans une zone de liste ?
auteur : Tofalu
Sur l'événement Touche Appuyée de la zone de liste :
Private Sub Maliste_KeyDown(KeyCode As Integer, Shift As Integer)
   KeyCode = 0
End Sub

Comment vérifier qu'une valeur existe dans une zone de liste ?
auteur : Tofalu
Cette fonction renvoie true si la valeur passée en paramètre est trouvée dans la zone de liste qui figure dans le premier paramètre.
Private Function verifliste(Liste As ListBox, Valeur As String) As Boolean
Dim i As Integer
For i = 0 To Liste.ListCount - 1
  If Liste.ItemData(i) = Valeur Then verifliste = True
Next i
End Function
Utilisation :

Vérfier que toto ne fait pas partie de la zone de liste ZL3 :
Private Sub Commande0_Click()
MsgBox verifliste(Me.ZL3, "toto")
End Sub

Comment faire correspondre deux zones de listes
auteur : Petogaz
Créez votre formulaire. placez la première liste déroulante qu'on nommera lstville et à l'aide de l'assistant récupérez le CP et le code section donc dans contenu vous devririez avoir un requête qui resemble à ceci :
Select DISTINCT [Table1].[Code des sections], [Table1].CP FROM [Tables1] Inner Join [Table2] On [Table1].[Code des sections] = [Table2].[Code Section];
Cette requête vous permettra d'obtenir la liste de toute les villes (en supposant qu'il s'agisse des CP puisqu'il n' y a pas de champ ville).

Ensuite pour la liste des rues qu'on nommera lstrue dans les propriété Arrow Données Arrow Contenu, mettez cette requête :
Select DISTINCT [Table2].Rue
From [Table2]
Where ((([Table2].[Code Section])=[forms]![formulaire1]![lstville]));
Où formulaire1 est le nom de votre formulaire Pour terminer, il faut une mise à jour de votre 2ème liste (lstRue) :
Private Sub lstville_AfterUpdate()
Me.lstRue.Value = Null
Me.lstRue.Requery
End Sub

Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?
auteur : Demco
Imaginons que nous ayons les zones de liste lstPays et lstVilles qui contiennent respectivement une liste de pays et une liste de villes.
Bien évidemment, lorsque nous sélectionnons un pays nous voulons que seules les villes appartenantes à ce pays n'apparaissent dans lstVille.

Nous supposons que ces deux zones de liste sont basées sur les tables TPays et TVille, et qu'elles sont dans un formulaire que nous appellerons F_Geographie.
Une fois les deux zones de liste basées sur les deux tables, nous modifierons la source de données de lstVille :

  • Propriétés
  • onglet Données
  • Contenu :
Select TVille.ID, TVille.Nom From TVille Where TVilles.IDPays = Forms!F_Geographie.lstPays
ID est l'identifiant de la ville, Nom son nom et IDPays la clé étrangère contenant l'identifiant du pays auquel appartient la ville.
Et comme vous l'aurez compris, Forms!F_Geographie.lstPays fait référence à la zone de liste lstPays appartenant au formulaire F_Geographie.

Il vous reste alors à rafraîchir les données de la zone de liste lstVille lorsqu'un nouveau pays est sélectionné :

Private Sub lstPays_Change()
Me.lstVille.Requery
End Sub
Et le tour est joué !

lien : faq A quoi correspond le Me. que je vois devant le nom de certains objets dans des lignes de code ?

Comment récupérer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?
auteur : Tofalu
Sachant que l'indice de la première ligne et de la première colonne est 0 :

NomListe.Column(indiceColonne -1, indiceligne -1)
Donc pour la colonne 2, ligne 3 on aura :

NomListe.Column(1,2)
lien : faq Comment récupérer la valeur d'une colonne de la ligne sélectionnée dans une zone de liste ?

Comment archiver les dernières valeurs saisies dans une liste ? (pratique pour les champs de recherche)
auteur : FRED.G
Version : Office VBA >=2002 (à cause des méthodes AddItem et RemoveItem)
Description : Ce code enregistre dans la liste d'une zone de liste déroulante, les valeurs saisies dans ce même contrôle.

  • * La dernière valeur saisie est placées en haut de la liste
  • * Les doublons sont évités
  • * La constante NB_ITEMS permet de définir le nombre de valeurs archivés
  • * Les valeur Null ou chaînes de longueur nulle sont ignorées
  • * Les valeurs saisies sont traitées sous le type String
Conditions :

  • * La propriété RowSourceType doit être à Value List
  • * Les propriétés ColumnCount & BoundColumn doivent être à 1
  • * Dans cet exemple, la zone de liste s'appelle MyComboBox

Private Sub MyComboBox_AfterUpdate()

Const NB_ITEMS As Long = 20 'Nombre d'éléments archivés dans la liste
Dim b As Byte
  
  'Maj de la liste des derniers critères recherchés
  With MyComboBox
    
    'Si la valeur saisie est un Null _
      ou une chaîne de longeur nulle _
      ou égale au premier item, _
      alors aucune Maj de la liste n'est nécessaire.
    If Nz(.Value, "") = "" Or .Value = .Column(0, 0) Then Exit Sub
    
    'Etant donné qu'on ne souhaite pas de doublons, _
      on va parcourir tous les éléments _
      pour éliminer un éventuel doublon avant d'ajouter notre valeur en haut de liste.
    For b = 1 To .ListCount - 1
      If .Column(0, b) = .Value Then .RemoveItem b:   Exit For
    Next b
        
    'Ajoute la nouvelle saisie
    .AddItem Item:=.Value, Index:=0
    
    'Limite la liste à NB_ITEMS éléments
    If .ListCount = NB_ITEMS Then .RemoveItem NB_ITEMS - 1
  
  End With
  
End Sub

Comment conserver la sélection lors d'un affichage de requetes dans zones de listes
auteur : Rom4u

Lorsqu'on affiche une requete dans une zone de liste (propriete rowsource de la liste),
et que l'on change cette requete par programme (ordre de tri, filtre...) il suffit de déclarer
dans la propriété "colonne liée" de la zone de liste un champ unique (sans doublon).
Ainsi lors d'un changement d'ordre de tri ou autre, la ligne sélectionnée le reste
(pas besoin de faire de nouvelles recherches par boucle dans un recordset par exemple).


Comment dérouler une liste modifiable lors de sa réception du Focus ?
auteur : Faw
Pour dérouler une liste modifiable lors de la réception du focus il faut dans son événement Réception Focus mettre ce code :
Private Sub Modifiable_GotFocus()
Me.Modifiable.Dropdown
End Sub
lien : faq Comment dérouler une liste déroulante sur le survol de la souris ?

Comment dérouler une liste déroulante sur le survol de la souris ?
auteur : Starec
Le code suivant permet lors du survol de la liste déroulante cboLaListe par la souris, de lui donner le Focus et de la dérouler.
Private Sub cboLaliste_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    With Me.cboLaliste
        .SetFocus
        .Dropdown
    End With
End Sub
Ensuite sur l'évènement MouseMove de la zone détail de ton formulaire tu mets le focus sur un autre contrôle.
Private Sub Détail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.cmdTest.SetFocus
End Sub
lien : faq Comment dérouler une liste modifiable lors de sa réception du Focus ?

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2004  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com