Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2011, 23h35   #1
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix pour sélection d'enregistrements

Bonjour à tous,

Pouvez-vous m'aider pour réaliser le fonctionnement génial que j'ai utilisé dans un programme comptable:

J'ai un formulaire pour la saisie de mes factures.
Pour sélectionner le client, j'ai une ZDL ,ID colonne clé cachée, et CléCli.

Voilà ce que je voudrais réaliser:
Dans cette ZDL, je tape n'importe quel mot contenu dans le champ CléCli de ma table Clients.

Si un seul enregistrement correspond, il est sélectionné, le curseur passe au champ suivant, et le remplissage automatique fonctionne directement.

Sinon, les champs correspondants sont affichés dans la liste déroulante, je choisis, en descendant, ou avec le pointeur, et sur enter ou clic, c'est parti pour le champ suivant et remplissage automatique.

Pourquoi c'est si utile?
Parce que à la création du client, je concatène les champs, "Nom, prénom, raison sociale, et localité"

Il suffit que je me souvienne d'un de ces champs, et je trouve directement mon client. Je peux même écrire "onville" si je sais qu'il habite à Thionville et que je ne suis pas certain de l'orthographe.

Encore plus utile pour les dénomination des articles.
Dans le programme que j'utilise, ils poussent même le confort plus loin: je peux, déterminer les champs dans lesquels je souhaite que le programme cherche le mot ou la chaine de caractères contenus.
(Ceci bien sûr sont des paramètres définis à l'avance dans un formulaire prévu pour)
Avec une concaténation bien choisie, je peux y arriver tout aussi bien.

Merci beaucoup pour votre aide.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 05h22   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Tout cela ressemble étrangement à un formulaire de recherche.

Je vais donc t'inviter à t'inspirer des ces différents tutos : Formulaires de recherche

Je vais également te donner une indication sur le fonctionnement de ton besoin avec ton exemple de Thionville.

Le principe est d'utiliser l'opérateur LIKE dans une requête SQL en utilisant les lettres entourés de * (caractères génériques), par exemple : *onville*.

Bonne lecture

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 09h07   #3
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Bonjour Philippe,

Citation:
Tout cela ressemble
C'est bien ressemble qui me perturbe.

Je ne veux pas devoir utiliser un autre formulaire pour effectuer une recherche quand je saisis des données dans un champ de mon formulaire. Ce n'est ni commode, ni usuel.

Mais puisque tu penses que je trouverai mon bonheur dans les tutoriels désignés, je vais les consulter, et voir si je ne loupe pas la compréhension d'un mécanisme.

Merci pour tes conseils.

Marcel.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 20h57   #4
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Lister les enregistrements

Cette procédure doit être impossible sous Access.
Merci à ceux qui ont ouvert et y ont réfléchi.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 14h25   #5
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
C'est surement possible en bricolant un peu.

Le plus simple serait d'utiliser une textbox et une combox plutot qu'une listbox.

Et faire en sorte que la source de la combox soit modifiee à chaque changement de la textbox.
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 23h11   #6
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Lister enregistrements

Bonjour Serfou, et un grand merci pour ta réponse.

Cependant, je ne peux, à mon avis me passer de la listbox, et je crois que tu comprendras lorsque tu auras lu, les explications que je
m'efforce de détailler le plus clairement possible.

Pour simplifier, je vais plutôt faire allusion aux lignes d'une facture, qu'à une recherche client.

J'ai besoin d'une requête multi-tables ainsi:
Une table FactLignes avec les champs - Quantité - TotalLigne - NumArt (Clé secondaire)
Une table Articles avec les champs - NumArt (Clé primaire) - Description - PrixVente

Dans ma table FactLignes, NumArt est une ZDL, avec une liaison de NumArt, vers NumArt de la table Articles, avec colonne 1 NumArt clé cachée
et colonne 2 Description.

J'ai besoin de cette liaison, vers l'identifiant de la table Articles pour obtenir PrixVente et TauxTva par exemple (Remplissage automatique)
J'ai aussi besoin du champ description, et aussi de cacher la clé NumArt pour forcer la recherche sur la description.
Si je pouvais mémoriser le N° de 10000 articles, je ne m'appellerais pas Marcel.

Ainsi, lorsque je tape la ou les premières lettres de la description, le reste apparaît, et je peux sélectionner.
Pourtant, dans un brico, par exemple qui compte de 10 à 50.000 articles ou références, qui peut se souvenir du début de toutes les descriptions, dautant plus
que celle-ci sont souvent subjectives, et très variables d'une firme ou usine à l'autre.

Pour y répondre, les auteurs du programme auquel j'ai fait allusion, ont mis un système de recherche génial que je décris ici, puisque j'ai eu une nouvelle
fois l'occasion d'y accéder ce week-end.

Dans le champ description, qui ne me semble pas être une ZDL, je tape une chaîne de caractères qui pourrait être contenu dans la description.
Une liste se déroule, me semble-t-il superposée sur mon formulaire, et répondant au critère.
Je sélectionne celui qui correspond, et sur enter, le champ description est rempli, et les autres champs de la requête suivent.
Je pourrais déjà bien me contenter de cela. Ils proposent par ailleurs un formulaire à paramétrer à l'avance, bien sûr, dans lequel je peux cocher,
le ou les champs dans lesquels je souhaite que la recherche s'effectue.

Je ne suis pas informaticien, et je loupe sûrement des procédures. Je m'autorise pourtant à penser que ces programmeurs ont trouvé une routine bien à eux et pas simple à reproduire.
Références de la société: TIP à Mons (Belgique) Intégral.

Encore merci, à toi Serfou, d'avoir essayé de m'aider, et si mes réflexions pouvaient t'apporter dans tes travaux futurs, j'en serais heureux.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 23h32   #7
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
Ce que tu demandes est possible et facile. Mais sans voir ta table et tes formulaires ça sera dur de t'expliquer. Si tu veux tu m'envoies ta BD ou une partie et je te le fais.
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h46   #8
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Bonjour Sefrou,

Puisque tu t'intéresses à la discussion, je la remets à l'ordre du jour.
Je ne vais pas t'envoyer ma base de données volumineuse. J'ai plutôt créé 2 tables, une requête et un formulaire.
J'ai encodé 20 enregistrements dans la table articles avec quelques champs basiques.
Volontairement, j'ai laissé un blanc devant la désignation du dernier enregistrement.
C'est donc sur le libellé du formulaire que portera la recherche.

Merci pour l'attention que tu portes.

A bientôt

Marcel.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 21h28   #9
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
Il faut double-clicker sur le champs description.
J'ai rajouté un mini fomulaire de recherche, il suffit de taper quelque chose et taper entrée.
J'espère que ça correspond à peu près à ce que tu pensais.
Fichiers attachés
Type de fichier : rar Recherche Articles2.rar (37,5 Ko, 14 affichages)
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 23h02   #10
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Bonsoir Sefrou,

Je dois tester et adapter à d'autres endroits de ma base de données, ce qui ne me permet pas encore de marquer comme résolu.
Les premiers essais sont encourageants, un peu différents de ce que j'avais utilisé, mais certainement aussi bien, et répondant à mes attentes.

Je te remercie encore d'avoir prêté attention à ma question, et reviendrai vite aux détails, et commentaires, ou interrogations.

Bonne nuit.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 14h43   #11
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut liste de choix

Bonjour Sefrou,

J'ai adapté cette recherche d'articles à une recherche clients. A première vue, le système fonctionne bien.

Je voudrais ton avis sur deux points:

1. Cette recherche des clients, je la fais dans plusieurs formulaires:
-Saisie des factures de ventes
-Encodage des fiches de réparations.
-Encodage des fiches de travail.
-Création des devis.
-Création des commandes

Je devrai donc créer un formulaire de recherche pour chacun de ces formulaires de saisie. A la lecture de ton code, je dirais oui, et je le ferai ainsi
sauf si tu me dis qu'il serait simple de créer un formulaire de recherche unique pour les clients par exemple.

2. En ce qui concerne l'accès au formulaire de recherche, ce double-click n'est pas très convivial, n'y a-t-il pas moyen d'y accéder avec une touche de fonction. Sinon, je m'en accommoderai, et remplacerai peut-être double-click par click.

Excuse-moi, si je suis pointilleux, mais j'aimerais être informé au maximum avant d'effectuer les modifications de code dans ma base de données.

Le système me semble efficace puisqu'il m'offre le choix d'utiliser la recherche, ou la saisie guidée sur le début du texte tapé dans la liste.
J'ai eu à faire à une petite anomalie dans la base que tu m'as envoyée:
Après avoir saisi quelques lignes tantôt avec l'aide du formulaire de recherche, tantôt sans, lorsque j'arrivais par exemple à la 7éme, les libellés des 2 ou 3 premières lignes s'effaçaient. Ils apparaissaient de nouveau sur click dans ces mêmes libellés. J'ai contrôlé dans la table, ils étaient pourtant présents.

J'avais aussi ouvert les modules pour voir le code, n'aurais-je pas par inadvertance, apporté une petite modification.
J'ai donc rechargé la base, et les tests suivants n'ont plus mis ce phénomène à vue.

Je te remercie pour le temps que tu as consacré, et signalerai s'il y a lieu, d'autres constats.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h28   #12
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
J'ai fait mieux. Pas de formlaire de recherche, tu tapes directement dans la ZDL.

Ce qu'il faut faire c'est mettre la propriété "auto étendre" sur "non" dans chaque zone de liste et remplir le code des événements "got focus" et "sur changement" comme sur l'exemple, en changeant le nom du controle et la requête source.
Fichiers attachés
Type de fichier : rar Recherche Articles3.rar (28,0 Ko, 4 affichages)
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h34   #13
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Bonjour à tous,

Désolé Serfou, j'aurais dû mieux chercher pour la touche de fonction.

J'ai trouvé dans un tutoriel du site http://access.developpez.com/faq/?pa...cProcRaccourci

En ce qui concerne 1 formulaire de recherche, pour 1 formulaire de saisie, ça ne pose vraiment aucun problème, vu le code restreint contenu, de copier le formulaire de recherche et d'adapter les quelques sources pour chacun.

J'ai transposé le système, avec l'usage de la touche de fonction dans deux formulaires de saisie de ma base de données. Tout fonctionne idéalement, et comme je l'espérais

Un tout grand merci pour ton intervention.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h40   #14
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
Jetes quand même un coup d'oeil à mon dernier exemple, c'est plus intéressant, la ZDL est filtrée au fur et à mesure que tu frappes.
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h45   #15
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Ah oui Serfou,

C'est un peu ce qu'on appelle deux réponses qui se croisent.

J'examinerai aussi ta nouvelle proposition.
S'il y a deux solutions, ça peut toujours servir.
Avec ma réponse précédente, tu auras pourtant compris ma satisfaction, d'autant plus qu'il ne s'agit plus de tests, mais d'utilisations réelles dans ma BD, avec lesquelles je travaille depuis ce matin.

Encore merci à toi.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h49   #16
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Je ne manquerai pas de tester ta nouvelle proposition, ce WE, et je te tiendrai au courant.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h41   #17
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Voilà Serfou,

Je viens juste de tester, ton nouvel exemple.
C'est encore mieux, rapide, convivial, plus simple puisqu'il n'y a plus de formulaire de recherche.
Un bémol pourtant:
On ne peut pas choisir l'enregistrement en descendant avec la flèche. Dès manipulation de celle-ci, le système sélectionne le premier enregistrement.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 15h11   #18
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
Ok, rajoute :

Code :
If DCount("IdArt", "Articles", "Désignation = '" & Replace(cmbFind.Text, "'", "''") & "'") > 0 Then Exit Sub

Dans (ligne 8):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub NumArt_Change()
 
Dim cmbFind As Control
Set cmbFind = NumArt
Dim reqZDL As String
reqZDL = "SELECT Articles.IdArt, Désignation FROM Articles"
 
If DCount("IdArt", "Articles", "Désignation = '" & Replace(cmbFind.Text, "'", "''") & "'") > 0 Then Exit Sub
 
cmbFind.RowSource = reqZDL & " WHERE Désignation Like '" & "*" & Replace(cmbFind.Text, "'", "''") & "*'"
 
cmbFind.Dropdown
 
If cmbFind.ListCount = 1 Then
     cmbFind.Selected(0) = True
     DoCmd.RunCommand acCmdSaveRecord
     cmbFind.RowSource = reqZDL
     cmbFind.Requery
End If
End Sub
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 16h24   #19
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Parfait!

Je ne l'ai pas encore intégré dans mon application, mais chaque fois que je l'avais fait avec tes précédentes propositions, je n'ai pas rencontré le moindre problème.

Cette dernière correspond de très près, à ce que je décrivais d'un autre programme au début de la discussion. Et je peux te dire pour l'avoir utilisé, que ça, c'est de l'assistance à la saisie des plus efficaces.

Je te dis encore et te remercie pour le temps que tu as consacré.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 17h12   #20
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Liste de choix

Bonjour à tous,

Bonjour Serfou,

J'ai déjà introduit le code dans plusieurs formulaires de mon application.
Un petit soucis:
Lorsque dans la liste des enregistrements, il n'y en a qu'un, ou plus qu'un, qui correspond au texte entré, je reçois le message d'erreur:

Erreur d'exécution 3314
Vous devez entrer une valeur pour le champ "xxxxxx".

Probablement à cause de la commande
Code :
DoCmd.RunCommand acCmdSaveRecord
et parce que derrière, il y a un champ null interdit que je n'ai pas encore rempli.

Si je clique sur fin, la boîte de dialogue se ferme, et je peux continuer.
Il y a peut-être un bout de code qui éviterait ce message et rendrait plus propre.

Merci.

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h24.


 
 
 
 
Partenaires

Hébergement Web