| auteur : Drosera | Il suffit de paramétrer convenablement la largeur des colonnes et celle de 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
|
|
| auteur : Rdesfx |
Dim VarLr As Variant
For Each VarLr In Me!MaListe. ItemsSelected
Me!MaListe. Selected (VarLr) = False
Next VarLr
|
|
| 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
|
|
| 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
|
|
| 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.).
|
| 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
Me. MaZoneListe . Requery
|
|
| auteur : Demco | Il suffit de modifier la propriété RowSource de la zone de liste modifiable : Me. MaListe . RowSource = " Select .... "
|
|
| auteur : Demco | MsgBox Me. MaListe . ListIndex
|
|
| 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)
Me!list. ColumnHeads = True
Me!list. ColumnCount = 2
Me!list. ColumnWidths = " 4320;4320 "
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
|
| auteur : Team Access | Définir la propriété SelectionMultiple (MultiSelect) à "étendue" ou "simple" suivant la méthode de sélection souhaitée.
|
| 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
|
|
| auteur : Gaël Donat | Private Sub MaListeModifiable_BeforeUpdate (Cancel As Integer)
Cancel = True
End Sub
|
|
| 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.
|
| 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
|
|
| 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
|
|
| 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
|
|
| 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
|
Où 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 : A quoi correspond le Me. que je vois devant le nom de certains objets dans des lignes de code ?
|
| 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
Dim b As Byte
With MyComboBox
ou une chaîne de longeur nulle _
ou égale au premier item, _
alors aucune Maj de la liste n
If Nz (. Value , " " ) = " " Or . Value = . Column (0 , 0 ) Then Exit Sub
on va parcourir tous les éléments _
pour éliminer un éventuel doublon avant d
For b = 1 To . ListCount - 1
If . Column (0 , b) = . Value Then . RemoveItem b: Exit For
Next b
. AddItem Item:= . Value , Index:= 0
If . ListCount = NB_ITEMS Then . RemoveItem NB_ITEMS - 1
End With
End Sub
|
|
| 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).
|
| 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 : Comment dérouler une liste modifiable lors de sa réception du Focus ?
|
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.
|