Compteur sur deux zones de liste
Le
Jacques
Bonjour,
Dans mon formulaire jai deux zones de liste qui me permettent de
sélectionner des enregistrements, et je voudrais avoir deux zones de
texte
qui mindiquent le nombre denregistrements sélectionnés sur lun=
e et
le nombre restant sur lautre.
With lstSource
' déplacer que les élements sélectionnés,
If LimiteSelection Then
For I = 0 To .ListCount - 1
' inverse le champ selection
If .Selected(I) Then
Db.Execute "UPDATE [tbl Adhérents] SET Selection=NOT
Selection WHERE réfAdhérent=" & .Column(0, I)
End If
Next I
' permutte la globalité
Else
Db.Execute "UPDATE [tbl Adhérents] SET Selection=" & CInt
(bolSelection)
End If '22
Nom des deux zones de texte :
txtCompteurGauche
txtCompteurDroite
Nom des deux zones de liste :
lstChampsGauche
lstChampsDroite
Sur la source du ctrl txtCompteurDroite jai ce code qui nindique
rien :
=[lstChampsGauche].[itemsSelected].Compte
Sur lautre zone de texte txtCompteurGauche je ne sais pas quoi faire.
Merci de votre aide.
Salutations
Dans mon formulaire jai deux zones de liste qui me permettent de
sélectionner des enregistrements, et je voudrais avoir deux zones de
texte
qui mindiquent le nombre denregistrements sélectionnés sur lun=
e et
le nombre restant sur lautre.
With lstSource
' déplacer que les élements sélectionnés,
If LimiteSelection Then
For I = 0 To .ListCount - 1
' inverse le champ selection
If .Selected(I) Then
Db.Execute "UPDATE [tbl Adhérents] SET Selection=NOT
Selection WHERE réfAdhérent=" & .Column(0, I)
End If
Next I
' permutte la globalité
Else
Db.Execute "UPDATE [tbl Adhérents] SET Selection=" & CInt
(bolSelection)
End If '22
Nom des deux zones de texte :
txtCompteurGauche
txtCompteurDroite
Nom des deux zones de liste :
lstChampsGauche
lstChampsDroite
Sur la source du ctrl txtCompteurDroite jai ce code qui nindique
rien :
=[lstChampsGauche].[itemsSelected].Compte
Sur lautre zone de texte txtCompteurGauche je ne sais pas quoi faire.
Merci de votre aide.
Salutations

Poser une question


Je jette un coup d'il distrait à ta question, et a priori il me semb le
que tu t'embêtes beaucoup.
D'après ce que je comprends, tu veux voir à droite les éléments
sélectionnés d'une table, et à gauche les éléments non sélect ionnés.
Tu sais comment faire pour sélectionner (et donc pour désélectionne r)
donc je n'insiste pas (même si le SELECTION = NOT SELECTION, sans
guillemet à l'intérieur, m'intrigue).
La liste de gauche peut présenter quelque chose comme
SELECT * FROM table WHERE selection = false
et celle de droite
SELECT * FROM table WHERE selection = true
(étant entendu que selection est un champ booléen de table)
Une fois la sélection effectuée, on n'a plus qu'à lancer un Requery sur
chacune des deux listes et le tour est joué.
On peut compter les éléments sélectionnés par
COUNT * FROM table WHERE selection = true
ce qui m'évite de plonger dans la doc pour me rappeler comment on trouv e
le nombre d'éléments présents dans la liste.
ItemsSelected.Count indique le nombre d'éléments sélectionnés dan s la
liste, qui normalement doit revenir à zéro une fois qu'on effectue le
transfert.
Est-ce que la liste n'a pas une propriété Count ?
Je réponds avec un peu de distance, j'ai une machine avec Access mais
elle ne démarre pas.
______________________________________
Jacques a écrit, le 12/03/2009 11:58 :
Bonjour Gloops,
Merci pour ta réponse, Mais je n'y arrive pas et je suis vraiment
bloqué sur ce point.
Salutations
Bonjour,
Ce n'est pas très clair pour moi car dans le code(incomplet) que tu
donnes, tu travailles sur lstSource puis dans ta demande tu parles de
lstChampsGauche lstChampsDroite.
En supposant que tu fasses un requery après mise à jour de ta liste de
gauche pour rafraichir ta liste de droite, le nb d'éléments sélectionnés
dans la liste de gauche doit être affiché avant, je pense, que tu fasses
l'update dans la table par =lstChampsGauche.ItemsSelected.count
Pour ce qui est de la liste de droite, ne sachant pas comment, elle est
remplie, peut être que la différence entre le nb total d'éléments et le
nb d'éléments sélectionnés te donnerait le résultat, du genre :
=lstChampsDroite.listCount-lstChampsDroite.ItemsSelected.Count
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
Re Bonjour Eric,
Je complète le premier message.
Le premier code se trouve sur cette sub :
Private Sub TransposerElement(lstSource As ListBox, lstDestination As
ListBox, _
Optional LimiteSelection As Boolean =
True, Optional bolSelection As Boolean = True)
!!!!
!!!!
lstDestination.Requery
End Sub
Puis sur mon formulaire jai un groupe doption qui me permet de
choisir plusieurs sources
Private Sub Cadre48_AfterUpdate()
'--- liste de gauche Adhérents (strsql)
If Me!Cadre48 = 1 Then
E_EtatSql = ""
'--- Appel de la fonction RecupereSql
strNomRqt = "qdfAdhérents"
strSql = RecupereSQL(strNomRqt)
'--- liste de droite Adhérents (strsql1)
'--- On récupére le sql et on effectue le remplacement du critère
par la valeur
E_EtatSql = strSql
strSql1 = Replace(strSql, "(([tbl Adhérents].Selection)
úlse))", "(([tbl Adhérents].Selection)<>False))")
End If
'--- Copie de tous élements vers la liste de gauche
TransposerElement lstChampsDroite, lstChampsGauche, False, False
Me.lstChampsGauche.RowSource = strSql
Me.lstChampsGauche.Requery
Me.lstChampsDroite.RowSource = strSql1
Me.lstChampsDroite.Requery
End Sub
Salutations
Me faisant vieux, je suis moins perspicace ;-)
Est-il possible de glisser dans une bd au format Access2000, la(les)
table(s) avec quelques enregistrements (et seulement les champs
nécessaires) et le formulaire en question avec les procédures publiques
et évènementielles. Car il m'est difficile de comprendre ce que tu veux
faire exactement avec tes 2 listes.
Pour mémoire :
Pour dénombrer les items sélectionnés dans une liste, il faut utiliser
NomListe.ItemsSelected.Count
Pour tous les éléments d'une liste NomListe.ListCount
jacques a écrit :
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/micro...cess?hl=fr