OVH Cloud OVH Cloud

liste modifiable

12 réponses
Avatar
lou
bonjour
dans un form j'ai une liste modifiable (pour éffectuer mes recherches) qui
est basée sur le champ NOM d"une table CLIENTS

bien entendu touts les NOMS se retrouvent dans cette liste modifiable

est-il possible de limiter le nombre d' enregistrements de cette liste
exemple je tape la premiere lettre du nom a rechercher
dans la liste exemple: A
je voudrais (si c'est possible) qu'il n'y ait que le ou les NOMS qui
commencent par la lettre A qui soient apparents dans la liste

merci de votre aide

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

c'est faisable mais difficile d'application, car il faudra faire un requery
de la liste à chaque composition de caractères, mais le requery ne pouvant
pas intervenir avant la sortie du champ. il faut donc boucler sur les
caractères composés avec sortie et remise en place de la sélection pour se
positionner en fin de champ. Sinon il faut dissocier la composition de la
liste et faire un requery de la liste à chaque changement de valeur de la
composition, à condition que la table ne soit pas trop grosse car la requête
va demander du temps.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"lou" a écrit dans le message de
news:40ac75df$0$8416$
bonjour
dans un form j'ai une liste modifiable (pour éffectuer mes recherches) qui
est basée sur le champ NOM d"une table CLIENTS

bien entendu touts les NOMS se retrouvent dans cette liste modifiable

est-il possible de limiter le nombre d' enregistrements de cette liste
exemple je tape la premiere lettre du nom a rechercher
dans la liste exemple: A
je voudrais (si c'est possible) qu'il n'y ait que le ou les NOMS qui
commencent par la lettre A qui soient apparents dans la liste

merci de votre aide





Avatar
Pierre CFI [mvp]
bonjour
je pense que nos 2 jeunes loups (eric et anor) pourraient faire çà, au lieu de rester à rien faire au soleil, attendant qu'une
hypothétique jeune starlette passe aux environs :o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Raymond [mvp]" a écrit dans le message de news:uxIk$
Bonjour.

c'est faisable mais difficile d'application, car il faudra faire un requery
de la liste à chaque composition de caractères, mais le requery ne pouvant
pas intervenir avant la sortie du champ. il faut donc boucler sur les
caractères composés avec sortie et remise en place de la sélection pour se
positionner en fin de champ. Sinon il faut dissocier la composition de la
liste et faire un requery de la liste à chaque changement de valeur de la
composition, à condition que la table ne soit pas trop grosse car la requête
va demander du temps.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"lou" a écrit dans le message de
news:40ac75df$0$8416$
bonjour
dans un form j'ai une liste modifiable (pour éffectuer mes recherches) qui
est basée sur le champ NOM d"une table CLIENTS

bien entendu touts les NOMS se retrouvent dans cette liste modifiable

est-il possible de limiter le nombre d' enregistrements de cette liste
exemple je tape la premiere lettre du nom a rechercher
dans la liste exemple: A
je voudrais (si c'est possible) qu'il n'y ait que le ou les NOMS qui
commencent par la lettre A qui soient apparents dans la liste

merci de votre aide









Avatar
Eric
"Pierre CFI [mvp]" écrivait
news::

bonjour
je pense que nos 2 jeunes loups (eric et anor) pourraient faire çà, au
lieu de rester à rien faire au soleil, attendant qu'une hypothétique
jeune starlette passe aux environs :o)))



Bonjour Pierre

Les starlettes ne m'ont pas gardé à déjeuner, aussi je rejoins les
intermittents d'Acces, jamais en grève eux ;-)))

Entre 2 couches de lait bronzant et avec la new technologie Wi-Fi,eh oui
on ne peut pas faire mieux à Cannes, je poste un début de réponse:

La liste déroulante s'appelle Modifiable0, sa source est basée sur une
table client ordonnée sur le nom.

Il s'agit d'afficher que les noms commençant par une ou plusieurs lettres
dans la liste et non tous les noms possibles(sauf si rien de saisie-cas
du démarrage). La méthode employée est de faire une MAJ de la liste
caractère après caractère saisi, donc évènement Touche Activée.
Réinitialisation de la Modifiable sur prise de focus.

On peut certainement mieux faire mais le soleil, la mer ...

A+
Eric

________________________________________________________
Option Compare Database
Dim caractere As String

Private Sub Form_Open(Cancel As Integer)
Me.Modifiable0.RowSource = "Select societe_client from tclient order
by societe_client;"
Me.Modifiable0.Requery
End Sub

Private Sub Modifiable0_GotFocus()
caractere = ""
Modifiable0 = ""
End Sub

Private Sub Modifiable0_KeyPress(KeyAscii As Integer)
Dim strSQL As String
Dim strWhere As String, strOrder As String
If KeyAscii = vbKeyTab Then Exit Sub
If KeyAscii = 27 Then
caractere = ""
Modifiable0 = ""
Exit Sub
End If
If KeyAscii = vbKeyBack And Len(caractere) > 0 Then
caractere = Left(caractere, Len(caractere) - 1)
ElseIf KeyAscii = vbKeyBack Then
KeyAscii = 0
Else
caractere = caractere & Chr(KeyAscii)
End If
KeyAscii = 0
strSQL = "select Societe_client from tclient "
strWhere = "where societe_client like '" & caractere & "*' "
strOrder = "order by societe_client;"
Modifiable0.RowSource = strSQL & strWhere & strOrder
Modifiable0.Undo
Modifiable0.Requery
Modifiable0.Text = caractere
Modifiable0.SelStart = Len(caractere)
Modifiable0.Dropdown
End Sub

________________________________________________________

Avatar
Pierre CFI [mvp]
Raymond, Pierrot je crois que le zozo nous pousse vers la sortie, snif :o(((

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
"Pierre CFI [mvp]" écrivait
news::

bonjour
je pense que nos 2 jeunes loups (eric et anor) pourraient faire çà, au
lieu de rester à rien faire au soleil, attendant qu'une hypothétique
jeune starlette passe aux environs :o)))



Bonjour Pierre

Les starlettes ne m'ont pas gardé à déjeuner, aussi je rejoins les
intermittents d'Acces, jamais en grève eux ;-)))

Entre 2 couches de lait bronzant et avec la new technologie Wi-Fi,eh oui
on ne peut pas faire mieux à Cannes, je poste un début de réponse:

La liste déroulante s'appelle Modifiable0, sa source est basée sur une
table client ordonnée sur le nom.

Il s'agit d'afficher que les noms commençant par une ou plusieurs lettres
dans la liste et non tous les noms possibles(sauf si rien de saisie-cas
du démarrage). La méthode employée est de faire une MAJ de la liste
caractère après caractère saisi, donc évènement Touche Activée.
Réinitialisation de la Modifiable sur prise de focus.

On peut certainement mieux faire mais le soleil, la mer ...

A+
Eric

________________________________________________________
Option Compare Database
Dim caractere As String

Private Sub Form_Open(Cancel As Integer)
Me.Modifiable0.RowSource = "Select societe_client from tclient order
by societe_client;"
Me.Modifiable0.Requery
End Sub

Private Sub Modifiable0_GotFocus()
caractere = ""
Modifiable0 = ""
End Sub

Private Sub Modifiable0_KeyPress(KeyAscii As Integer)
Dim strSQL As String
Dim strWhere As String, strOrder As String
If KeyAscii = vbKeyTab Then Exit Sub
If KeyAscii = 27 Then
caractere = ""
Modifiable0 = ""
Exit Sub
End If
If KeyAscii = vbKeyBack And Len(caractere) > 0 Then
caractere = Left(caractere, Len(caractere) - 1)
ElseIf KeyAscii = vbKeyBack Then
KeyAscii = 0
Else
caractere = caractere & Chr(KeyAscii)
End If
KeyAscii = 0
strSQL = "select Societe_client from tclient "
strWhere = "where societe_client like '" & caractere & "*' "
strOrder = "order by societe_client;"
Modifiable0.RowSource = strSQL & strWhere & strOrder
Modifiable0.Undo
Modifiable0.Requery
Modifiable0.Text = caractere
Modifiable0.SelStart = Len(caractere)
Modifiable0.Dropdown
End Sub

________________________________________________________




Avatar
GregLo
Ou mise à jour de la liste sur evenement "Sur Changement"


"Eric" a écrit dans le message de
news:
"Pierre CFI [mvp]" écrivait
news::

bonjour
je pense que nos 2 jeunes loups (eric et anor) pourraient faire çà, au
lieu de rester à rien faire au soleil, attendant qu'une hypothétique
jeune starlette passe aux environs :o)))



Bonjour Pierre

Les starlettes ne m'ont pas gardé à déjeuner, aussi je rejoins les
intermittents d'Acces, jamais en grève eux ;-)))

Entre 2 couches de lait bronzant et avec la new technologie Wi-Fi,eh oui
on ne peut pas faire mieux à Cannes, je poste un début de réponse:

La liste déroulante s'appelle Modifiable0, sa source est basée sur une
table client ordonnée sur le nom.

Il s'agit d'afficher que les noms commençant par une ou plusieurs lettres
dans la liste et non tous les noms possibles(sauf si rien de saisie-cas
du démarrage). La méthode employée est de faire une MAJ de la liste
caractère après caractère saisi, donc évènement Touche Activée.
Réinitialisation de la Modifiable sur prise de focus.

On peut certainement mieux faire mais le soleil, la mer ...

A+
Eric

________________________________________________________
Option Compare Database
Dim caractere As String

Private Sub Form_Open(Cancel As Integer)
Me.Modifiable0.RowSource = "Select societe_client from tclient order
by societe_client;"
Me.Modifiable0.Requery
End Sub

Private Sub Modifiable0_GotFocus()
caractere = ""
Modifiable0 = ""
End Sub

Private Sub Modifiable0_KeyPress(KeyAscii As Integer)
Dim strSQL As String
Dim strWhere As String, strOrder As String
If KeyAscii = vbKeyTab Then Exit Sub
If KeyAscii = 27 Then
caractere = ""
Modifiable0 = ""
Exit Sub
End If
If KeyAscii = vbKeyBack And Len(caractere) > 0 Then
caractere = Left(caractere, Len(caractere) - 1)
ElseIf KeyAscii = vbKeyBack Then
KeyAscii = 0
Else
caractere = caractere & Chr(KeyAscii)
End If
KeyAscii = 0
strSQL = "select Societe_client from tclient "
strWhere = "where societe_client like '" & caractere & "*' "
strOrder = "order by societe_client;"
Modifiable0.RowSource = strSQL & strWhere & strOrder
Modifiable0.Undo
Modifiable0.Requery
Modifiable0.Text = caractere
Modifiable0.SelStart = Len(caractere)
Modifiable0.Dropdown
End Sub

________________________________________________________




Avatar
lou
bonjour merci pour votre aide

voici le code reçu avec une petite adaptation
et bien ça ne marche pas ou est l'erreur ?????


POUR GREGLO
TU DIS Ou mise à jour de la liste sur evenement "Sur Changement"
je fais quoi ??????
merci

Option Compare Database
Dim caractere As String
Private Sub Form_Open(Cancel As Integer)
Me.Modifiable0.RowSource = "SELECT CLIENTS.NOM FROM CLIENTS ORDER BY
CLIENTS.NOM;"
Me.Modifiable0.Requery
End Sub
Private Sub Modifiable0_AfterUpdate()
Me.Refresh
End Sub
Private Sub Modifiable0_GotFocus()
caractere = ""
Modifiable0 = ""
End Sub
Private Sub Modifiable0_KeyPress(KeyAscii As Integer)
Dim strSQL As String
Dim strWhere As String, strOrder As String
If KeyAscii = vbKeyTab Then Exit Sub
If KeyAscii = 27 Then
caractere = ""
Modifiable0 = ""
Exit Sub
End If
If KeyAscii = vbKeyBack And Len(caractere) > 0 Then
caractere = Left(caractere, Len(caractere) - 1)
ElseIf KeyAscii = vbKeyBack Then
KeyAscii = 0
Else
caractere = caractere & Chr(KeyAscii)
End If
KeyAscii = 0
strSQL = "SELECT CLIENTS.NOM FROM CLIENTS ; "
strWhere = "where CLIENTS.NOM like '" & caractere & "*' "
strOrder = "ORDER BY CLIENTS.NOM;"
Modifiable0.RowSource = strSQL & strWhere & strOrder
Modifiable0.Undo
Modifiable0.Requery
Modifiable0.Text = caractere
Modifiable0.SelStart = Len(caractere)
Modifiable0.Dropdown
End Sub







"GregLo" <gregoire; a écrit dans le message de news:
40acdb04$0$21561$
Ou mise à jour de la liste sur evenement "Sur Changement"


"Eric" a écrit dans le message de
news:
"Pierre CFI [mvp]" écrivait
news::

bonjour
je pense que nos 2 jeunes loups (eric et anor) pourraient faire çà, au
lieu de rester à rien faire au soleil, attendant qu'une hypothétique
jeune starlette passe aux environs :o)))



Bonjour Pierre

Les starlettes ne m'ont pas gardé à déjeuner, aussi je rejoins les
intermittents d'Acces, jamais en grève eux ;-)))

Entre 2 couches de lait bronzant et avec la new technologie Wi-Fi,eh oui
on ne peut pas faire mieux à Cannes, je poste un début de réponse:

La liste déroulante s'appelle Modifiable0, sa source est basée sur une
table client ordonnée sur le nom.

Il s'agit d'afficher que les noms commençant par une ou plusieurs
lettres


dans la liste et non tous les noms possibles(sauf si rien de saisie-cas
du démarrage). La méthode employée est de faire une MAJ de la liste
caractère après caractère saisi, donc évènement Touche Activée.
Réinitialisation de la Modifiable sur prise de focus.

On peut certainement mieux faire mais le soleil, la mer ...

A+
Eric

________________________________________________________
Option Compare Database
Dim caractere As String

Private Sub Form_Open(Cancel As Integer)
Me.Modifiable0.RowSource = "Select societe_client from tclient order
by societe_client;"
Me.Modifiable0.Requery
End Sub

Private Sub Modifiable0_GotFocus()
caractere = ""
Modifiable0 = ""
End Sub

Private Sub Modifiable0_KeyPress(KeyAscii As Integer)
Dim strSQL As String
Dim strWhere As String, strOrder As String
If KeyAscii = vbKeyTab Then Exit Sub
If KeyAscii = 27 Then
caractere = ""
Modifiable0 = ""
Exit Sub
End If
If KeyAscii = vbKeyBack And Len(caractere) > 0 Then
caractere = Left(caractere, Len(caractere) - 1)
ElseIf KeyAscii = vbKeyBack Then
KeyAscii = 0
Else
caractere = caractere & Chr(KeyAscii)
End If
KeyAscii = 0
strSQL = "select Societe_client from tclient "
strWhere = "where societe_client like '" & caractere & "*' "
strOrder = "order by societe_client;"
Modifiable0.RowSource = strSQL & strWhere & strOrder
Modifiable0.Undo
Modifiable0.Requery
Modifiable0.Text = caractere
Modifiable0.SelStart = Len(caractere)
Modifiable0.Dropdown
End Sub

________________________________________________________








Avatar
Eric
Bonjour,

Tu as une erreur dans ton sql :
strSQL = "SELECT CLIENTS.NOM FROM CLIENTS ; "
strWhere = "where CLIENTS.NOM like '" & caractere & "*' "
strOrder = "ORDER BY CLIENTS.NOM;"


Enleves le ; apres From Clients dans le strSQL, tu laisses juste un espace
après CLIENTS

Si d'autres , précises où ca plante car ici no problème

Eric

Avatar
lou
rebonjour

ai réparé l'erreur ça marche tres bien maintenant

sauf que la j'ai un autre petit probleme je n'arrive pas a afficher dans le
form les donnéees du client selectionné dans ma liste modifiable (apres mise
a jour)
merci pour ton aide precieuse



"Eric" a écrit dans le message de news:

Bonjour,

Tu as une erreur dans ton sql :
strSQL = "SELECT CLIENTS.NOM FROM CLIENTS ; "
strWhere = "where CLIENTS.NOM like '" & caractere & "*' "
strOrder = "ORDER BY CLIENTS.NOM;"


Enleves le ; apres From Clients dans le strSQL, tu laisses juste un espace
après CLIENTS

Si d'autres , précises où ca plante car ici no problème

Eric




Avatar
Eric
re,

Sur AfterUpdate de ta liste Modifiable0, tu mets ca:

Private Sub Modifiable0_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Nom] = '" & Me![Modifiable0] & "'"
Me.Bookmark = rs.Bookmark
End Sub

et
Private Sub Modifiable0_GotFocus()
caractere = ""
End Sub

Ca devrait faire l'affaire, non ?

Eric



rebonjour

ai réparé l'erreur ça marche tres bien maintenant

sauf que la j'ai un autre petit probleme je n'arrive pas a afficher
dans le form les donnéees du client selectionné dans ma liste
modifiable (apres mise a jour)
merci pour ton aide precieuse



"Eric" a écrit dans le message de news:

Bonjour,

Tu as une erreur dans ton sql :
strSQL = "SELECT CLIENTS.NOM FROM CLIENTS ; "
strWhere = "where CLIENTS.NOM like '" & caractere & "*' "
strOrder = "ORDER BY CLIENTS.NOM;"


Enleves le ; apres From Clients dans le strSQL, tu laisses juste un
espace après CLIENTS

Si d'autres , précises où ca plante car ici no problème

Eric









Avatar
Pierre CFI [mvp]
Voilà, c'est exactement ce que je comptais repondre :o))) ma confiance était bien placée :o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
re,

Sur AfterUpdate de ta liste Modifiable0, tu mets ca:

Private Sub Modifiable0_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Nom] = '" & Me![Modifiable0] & "'"
Me.Bookmark = rs.Bookmark
End Sub

et
Private Sub Modifiable0_GotFocus()
caractere = ""
End Sub

Ca devrait faire l'affaire, non ?

Eric



rebonjour

ai réparé l'erreur ça marche tres bien maintenant

sauf que la j'ai un autre petit probleme je n'arrive pas a afficher
dans le form les donnéees du client selectionné dans ma liste
modifiable (apres mise a jour)
merci pour ton aide precieuse



"Eric" a écrit dans le message de news:

Bonjour,

Tu as une erreur dans ton sql :
strSQL = "SELECT CLIENTS.NOM FROM CLIENTS ; "
strWhere = "where CLIENTS.NOM like '" & caractere & "*' "
strOrder = "ORDER BY CLIENTS.NOM;"


Enleves le ; apres From Clients dans le strSQL, tu laisses juste un
espace après CLIENTS

Si d'autres , précises où ca plante car ici no problème

Eric












1 2