Tutoriel réalisé avec Access 2016
Aujourd’hui, pour l’évènement interblogueurs Les cadeaux des blogueurs, je vous propose un article sur Access.
Dans ce tutoriel, nous allons faire en sorte que les champs d’un formulaire se mettent à jour après une sélection dans une liste déroulante Access. Nous allons pour cela utiliser une requête comme source d’enregistrement pour la liste déroulante et un peu de VBA.
Au bas de l’article, vous retrouverez la base de données utilisée.
Préparation du formulaire et de ses contrôles
Dans la base de données que j’ai mise à votre disposition, vous constaterez que le formulaire de saisie présent est un formulaire classique c’est-à-dire qu’il a été créé à partir de la table Clients et qu’il contient, pour chaque champ, une source contrôle différente.
Ici, nous avons besoin de contrôles indépendants (ce n’est pas obligatoire, mais cela vous évitera d’avoir des champs remplis alors que rien n’est sélectionné dans la liste déroulante). Dans ce cas, il est préférable de réinsérer les contrôles. Nous allons donc passer en Mode création et supprimer tous les contrôles présents (ce qui a pour effet de supprimer les étiquettes par la même occasion).
Dans l’onglet Création, vous allez insérer un contrôle Zone de texte et le placer sur la partie Détail de votre formulaire : ce premier contrôle sera notre liste déroulante. Insérez également les autres contrôles pour la Civilité, le Prénom, le Nom, l’Adresse, le Code postal, la Ville, le Téléphone et l’E-mail (je n’ajoute pas la Raison sociale, car ce sera la donnée de la liste déroulante que nous verrons plus tard). Pour aller plus vite, vous pouvez faire un copier‑coller du précédent contrôle créé (vous devrez vous retrouver avec 9 contrôles indépendants au total).
Un point très important que vous devez retenir, quand vous travaillez sur une base de données, est de toujours nommer vos contrôles et leurs étiquettes, cela se passe dans l’onglet Autres de la Feuille de propriétés (si elle n’est pas affichée, cliquez sur l’onglet Création > Feuille de propriétés
) à la ligne Nom (cela sera beaucoup plus facile pour quelqu’un d’autre de reprendre votre travail, mais, pour vous aussi, ce sera plus agréable de savoir à quoi chaque élément correspond).
Personnellement, je nomme toujours mon contrôle par sa Source contrôle et son étiquette du même nom suivi d’un underscore (_) et du mot Étiquette (par exemple ID_Client pour le contrôle et ID_Client_Étiquette pour son étiquette). Il faut à tout prix éviter les espaces et les caractères spéciaux, car si vous utilisez un contrôle ou son étiquette en VBA, il ou elle ne sera pas reconnu, et les accents sont à éviter, mais je ne les utilise que pour Étiquette puisque c’est le nom donné par défaut aux étiquettes par Access suivi par un nombre. Je vous suggère également de remplacer les tirets (-) par des underscores (_).
Étant donné que nos contrôles n’ont pas de Source contrôle, nous allons les nommer par la donnée qu’ils sont censés recevoir, de même que pour leurs étiquettes. Ce qui donne dans l’ordre des contrôles créés :
- Client et Client_Étiquette
- Civilite et Civilite_Étiquette
- Prenom et Prenom_Étiquette
- Nom_contact (car nommer un champ Nom peut poser des soucis puisque c’est un mot réservé par Access) et Nom_contact_Étiquette
- Adresse et Adresse_Étiquette
- CP et CP_Étiquette
- Ville et Ville_Étiquette
- Telephone et Telephone_Étiquette
- Email et Email_Étiquette
Profitez-en pour légender vos étiquettes, c’est-à-dire remplacer Texte avec le nombre que vous avez par un titre dans l’onglet Format de la Feuille de propriétés , à la ligne Légende, ou en double‑cliquant directement sur l’étiquette. Par exemple, dans l’ordre, Raison sociale, Civilité, Prénom, Nom, Adresse, CP, Ville, Téléphone et E-mail. Vous pouvez également appliquer un peu de mise en forme à votre formulaire.
Étant donné que nos contrôles vont être indépendants, cela ne sert à rien de leur laisser la possibilité d’être modifiés. Sélectionnez donc tous les contrôles, sauf le premier avec la liste déroulante, puis dans l’onglet Données de la Feuille de propriétés , à la ligne Activé, choisissez Non dans la liste déroulante ou faites un double-clic : les champs sont grisés.
Pour terminer la préparation du formulaire, faites un clic droit sur le premier contrôle Remplacer par > Zone de liste déroulante .
Saisie du contenu de la liste déroulante
Sélectionnez le contrôle Client et, toujours dans l’onglet Données, à la ligne Contenu, cliquez sur les 3 petits points : cela vous ouvre le Générateur de requêtes. Sélectionnez la table Clients qui contient les données affichées dans la liste déroulante ainsi que dans les autres champs, puis double-cliquez sur chacun des champs de la table, sauf Date_demarrage pour les ajouter à la requête (si vous voulez vérifier que tous les champs sont présents, vous pouvez cliquer sur l’image du bouton Affichage pour aller directement en Mode feuille de données
, puis recliquez dessus pour revenir en Mode création
).
Une fois que tout est correct, faites un clic droit sur l’onglet du Générateur de requête > Fermer. On vous demande si vous souhaitez enregistrer les modifications apportées à l’instruction SQL, cliquez sur Oui.
De retour sur la Feuille de propriétés , vous constaterez que le Contenu a été traduit en langage SQL.
Pour l’instant, si j’utilise mon formulaire, il ne se passe strictement rien, je n’ai que les numéros clients, je ne sais pas à qui ils correspondent et rien ne se passe après sa mise à jour.
Saisie du code VBA pour mettre à jour les champs suite au choix dans la liste déroulante et paramétrage de la liste
Gardez sélectionné le contrôle Client et allez dans l’onglet Évènement de la Feuille de propriétés , cliquez sur les 3 petits points
de la ligne Après MAJ. Une fenêtre s’ouvre en vous demandant de choisir le Générateur de macro, Générateur d’expression ou Générateur de code :
Choisissez le Générateur de code en double cliquant dessus ou en le choisissant et en cliquant sur OK.
Une fenêtre VBA s’ouvre et vous n’avez plus qu’à saisir le code désiré entre Private Sub
et End Sub
. C’est ici que les noms que vous avez donnés à vos différents contrôles vont être très importants.
Concernant le premier champ qui doit se mettre à jour suite au choix de la liste déroulante (il s’agit de Civilité), je vais donc écrire :
Civilite = Client.column(2)
J’ai saisi le chiffre 2 entre parenthèses, car la Civilité se trouve en 3e position et que la « numérotation » commence à zéro dans l’instruction SQL. Si j’avais souhaité que le champ Civilité récupère les raisons sociales, j’aurais saisi 1 entre parenthèses, car ce champ se trouve en 2e position. Il est très important que votre champ soit une liste déroulante, car, si en saisissant le mot column, la saisie semi-automatique ne vous le suggère pas, c’est qu’il doit y avoir un problème de ce côté-là (c’est surement ce qui a dû se passer pour les commentateurs du tutoriel sur la création de factures avec Access).
Je continue sur le même principe pour les autres champs :
Prenom = Client.Column(3)
Nom_contact = Client.Column(4)
Adresse = Client.Column(5)
CP = Client.Column(6)
Ville = Client.Column(7)
Telephone = Client.Column(8)
Email = Client.Column(9)
Refermez la fenêtre VBA, essayez votre formulaire et voyez ce qu’il se passe : il ne se passe toujours rien, car nous avons indiqué dans notre code de sélectionner la colonne 2, 3, 4 etc. dans une liste qui n’a qu’une seule colonne. Pour remédier à cela, repassez en Mode création , toujours sur le contrôle Client, à l’onglet Format de la Feuille de propriétés
et à la ligne Nbre colonnes, remplacez le 1 par 10 (car j’ai 10 champs dans mon instruction SQL). En revenant au Mode formulaire
et en sélectionnant un client au hasard, vous verrez que les champs se mettent à jour, mais vous ne devez pas y voir grand-chose.
Retournez de nouveau sur l’onglet Format du contrôle Client en Mode création et, à la ligne Largeurs colonnes, saisissez 3 cm pour toutes les colonnes (vous pouvez saisir 3;3;3;3;3;3;3;3;3;3 et Access le réécrira lorsque vous changerez de ligne).
Si vous le souhaitez, vous pouvez afficher les en-têtes de colonnes (c’est-à-dire afficher le titre de vos champs en haut de la liste) en changeant le Non par Oui à la ligne En-têtes colonnes et le nombre de lignes affichées dans la liste, sans avoir à utiliser la scrollbar, en modifiant le champ Lignes affichées qui est par défaut à 16.
Modifiez ensuite la largeur de la liste (ligne Largeur liste) qui est par défaut à Auto à 30 pour commencer (notez que si vous mettez une largeur de liste plus grande que le total des largeurs colonnes, le dernier champ récupérera le surplus). Ne confondez pas la Largeur liste et la Largeur : la première est la largeur de la liste lorsque vous cliquez dessus et la seconde est la largeur de base.
Retournez en Mode formulaire et choisissez un client : vous verrez que le champ client conserve le numéro client, car c’est son premier champ affiché. Dans ce cas, peu nous importe le numéro client, nous allons donc le masquer. Retournez dans l’onglet Format de la Feuille de propriétés
en Mode création
et, à la ligne Largeurs colonnes, remplacez le premier 3 par 0. Désormais, en Mode formulaire
, la Raison sociale reste dans le champ Client. Il ne vous reste plus qu’à modifier la propriété Largeur colonnes en fonction des données qui doivent s’afficher dans votre liste déroulante.
Concaténer deux ou plusieurs champs en code VBA
Si je souhaite concaténer les champs Adresse, Code postal et Ville en un seul champ, il me suffit de l’écrire en VBA. Pour cela, je peux déjà supprimer les contrôles CP et Ville ainsi que leurs étiquettes en Mode création et agrandir en hauteur et en largeur le contrôle Adresse (8 cm de largeur et 1,5 cm de hauteur suffisent).
Puis, à l’onglet Évènement de la Feuille de propriétés pour le contrôle Client, à la ligne Après MAJ, je me place à la suite de
Adresse = Client.column(5)
et je supprime le saut de ligne et CP =
afin de ramener Client.column(6)
sur la même ligne. Entre ces deux expressions, je saisis une esperluette (&). Je fais de même avec la ligne Ville.
Votre code doit ressembler à cela :
Private Sub Client_AfterUpdate()
Civilite = Client.Column(2)
Prenom = Client.Column(3)
Nom_contact = Client.Column(4)
Adresse = Client.Column(5) & Client.Column(6) & Client.Column(7)
Telephone = Client.Column(8)
Email = Client.Column(9)
End Sub
Si je laisse mon code tel quel, les trois champs vont être collés (sans espaces). Je vais donc ajouter une espace entre chaque champ en remplaçant la ligne de code de l’adresse par :
Adresse = Client.Column(5) & " " & Client.Column(6) & " " & Client.Column(7)
Si vous souhaitez aller plus loin en ajoutant du texte entre chaque champ, il vous suffit d’utiliser la même syntaxe que pour les espaces (n’oubliez jamais que les appels aux colonnes doivent toujours être encadrés d’esperluettes auquel cas vous aurez droit à une erreur de compilation).
Pour terminer, si vous souhaitez ajouter des retours à la ligne, voire même des tirets, voici une syntaxe que vous pouvez utiliser :
Adresse = Client.Column(5) & Chr(13) + Chr(10) & Client.Column(6) & " - " & Client.Column(7)
Pour obtenir ce résultat :
Vous savez désormais comment mettre à jour des champs en VBA pour Access après une sélection dans une liste déroulante.
Note : ce tutoriel vous permet de rechercher des informations dans un formulaire basé sur 2 ou plusieurs tables, mais, pour un formulaire n’ayant qu’une seule table comme source, l’article Rechercher un enregistrement avec une liste déroulante dans un formulaire Access sera plus simple et rapide.
Toujours aussi excellent, merci pour vos cours.
Besoin d’aide.
Cela fait un bon 5 heures que je travaille sur le problème et je n’y arrive pas.
Mes contrôles n’affichent rien après avoir sélectionné un item dans la liste déroulante.
Pour info :
Noms des contrôles :
– Liste déroulante = Cours
– 1er contrôle = Titre
– 2e contrôle = Prix
Mon code :
Option Compare Database
Private Sub Cours_AfterUpdate()
Me.Titre = Me.Cours.Column(1)
Me.Prix = Me.Cours.Column(2)
End Sub
Ma liste déroulante affiche bien les colonnes et les données des champs.
J’utilise Access 2016.
Merci.
Avez-vous essayé sans les
Me
? Et à l’écriture de.Column
, est-ce que la saisie était suggérée ? Titre et Prix ne sont pas des listes déroulantes ?Bonsoir Lydia et merci pour tous ces tutos qui m’ont été bénéfiques, cependant, j’ai un bémol concernant une liste déroulante (avec l’évènement après mise à jour) que j’ai mis dans un formulaire et qui est relative aux noms des aérodromes. Sachant que j’ai la table « aérodrome » composée de sa clé et du nom de l’aérodrome et que j’ai une autre table « équipement » qui a sa clé et dans laquelle j’ai ajouté la clé de la table « aérodrome » pour faire le lien. En effet, je voudrais utiliser la condition « Si » en code VB pour tester si la valeur de ma liste est égale à un certain aérodrome, je récupère alors le code relatif à cet aérodrome de la table des aérodromes pour le mettre dans un champ du même formulaire d’une manière automatique et, à la fin, en cliquant sur le bouton sauvegarder, tout va dans la table équipement puisque le formulaire est porté sur la table équipement, je n’arrive pas à trouver la structure du code.
J’ai essayé :
If Nom_Site.value="LFLF"
(qui est le code d’un aérodrome en France)Then Code_Site = 1
, ceci est un exemple.Sachant que Nom_Site est ma liste déroulante sur le formulaire et Code_Site est un champ dans le même formulaire.
Merci et au plaisir de vous lire.
Bonjour Karima,
Avez-vous essayé avec le numéroauto de « LFLF », car la valeur de la liste déroulante, même si la clé primaire est cachée, est numérique ?
Salut, moi c’est Djodjo, je suis étudiant en informatique de gestion.
J’ai un problème, je suis encore au début de mes cours alors par rapport au cours d’Access je n’arrive pas à comprendre la programmation sur Access et comment créer une application de gestion de vente sur Access.
Merci pour vos cours en ligne, mais j’ai besoin de comprendre comment créer une application de gestion de vente sur Access.
Bonjour,
La création d’applications est un long travail (c’est d’ailleurs mon métier), je vous invite donc à commencer par les bases en consultant les premiers articles du blog.
Bonjour,
Merci pour ce bon tutoriel.
J’ai un souci : quand je sélectionne le Client, le champ Civilité se met bien à jour.
Mais quand je change d’enregistrement, si je ne re-sélectionne pas le Client, le champ Civilité reste sur l’ancienne valeur.
Avez-vous une solution ?
Cordialement.
Bonjour,
C’est normal, car il n’y a pas de source contrôle sur la civilité.
Autre possibilité : vous insérez vos champs comme lorsque vous créez le formulaire (avec les sources contrôle) et vous insérez une liste déroulante en choisissant la 3e option à la première étape de l’assistant (« Rechercher… »). Mais dans ce cas, pas de possibilité de concaténer des champs.
Merci Lydia pour ce tuto ! Tout marche très bien pour moi sauf pour le champ correspondant à une photo insérée en tant que pièce jointe qui ne se met pas à jour et qui provoque une erreur… Est-ce que le code VBA est différent pour insérer une photo ? Je ne comprends pas…
Merci 🙂
Bonjour Erwan,
Je vous conseille d’utiliser une liste déroulante dont vous choisirez la 3e option de l’assistant « Rechercher un enregistrement dans mon formulaire basé sur la valeur que j’ai sélectionnée dans la liste déroulante ». De cette manière, le contrôle de pièce jointe sera mieux géré.
Merci, Lydia, pour tout. Dites, est-ce que les champs doivent être obligatoirement des listes déroulantes ?
Oui, puisque les informations affichées sont dans les colonnes non visibles de la liste.
En lieu et place d’une table, là où vous avez pris la table tarif avec tous ses champs pour la liste déroulante, j’ai utilisé une requête et ça ne marche pas, y a-t-il une disposition particulière à prendre ?
Pour la même raison que précédemment. Si vous utilisez une requête, c’est que vous n’avez pas plusieurs colonnes dans votre liste, donc ça ne fonctionnera pas (si vous parlez du tutoriel sur les factures où la désignation et le prix se remplissent automatiquement sur choix de la liste).
Voilà ce qui s’affiche :
Le champ en cours doit correspondre à la clé de jointure « ? » de la table du côté 1 d’une relation de un à plusieurs…
Que dois-je faire ?
Ce message apparaît quand il y a violation de la clé. Il y a un problème d’intégrité, il faut revoir vos données.
Bonjour Lydia,
Je viens de suivre votre tuto qui est très explicite et j’ai un souci. En effet, je crée ma liste déroulante sans problème (base vierge ou base existante), par contre, lorsque je suis en code VBA, la saisie semi-automatique n’est pas suggérée.
Le champ est bien une liste déroulante et le champ de destination est un texte brut.
J’utilise Access 2016.
Merci de votre aide.
Bonjour Sébastien,
Votre liste déroulante contient-elle des colonnes (onglet Format de la Feuille de propriétés) ?
Je viens de trouver la solution et c’est entièrement de ma faute… Je partais comme référence dans le script de ma table et non de la liste déroulante.
Maintenant, cela fonctionne beaucoup mieux. Merci.
Bonjour,
J’ai utilisé, pour faire un suivi des jobs en cours dans mon entreprise, votre exemple et cela fonctionne parfaitement.
Toutefois, j’ai une problématique. En effet, j’aimerais que lorsque je fais la sélection dans la liste, les champs qui se mettent à jour puissent être modifiés (par exemple, le champ remarque lié à un numéro de job préalablement sélectionné puisse être modifié dans le formulaire et enregistré dans la base liée).
J’ai essayé en activant le champ et en désactivant le verrouillage du champ. Je peux écrire, mais rien n’est enregistré automatiquement. J’ai pensé faire un bouton update, mais je ne sais pas le faire et cela me semble fastidieux pour Access dans ce contexte.
Merci de votre aide.
Bonjour,
Pour cela, il faut procéder autrement, car les champs sont indépendants donc ils ne se mettront pas à jour dans les tables. Si votre formulaire est basé sur une seule table, créez une liste déroulante en choisissant la 3e option dans l’assistant (rechercher etc.) et insérez les champs de la table dans le formulaire (qu’ils ne soient plus indépendants). À chaque choix, les champs se mettront à jour et pourront être modifiés.
Bonjour,
Merci pour ce retour, j’avoue ne pas savoir complètement comment mettre en œuvre votre solution sous Access 2016, mais je vais chercher.
Dans l’assistant pour créer une liste, j’ai juste soit basée sur une table ou requête ou alors sur des données manuelles. La mienne est sur une requête, car j’ai un filtre sur certaines conditions et des dates.
Et là où je me sens bête, c’est sur le comment insérer des champs d’une table dans un formulaire… mais je vais essayer de trouver. En tout cas merci pour votre piste de recherche.
EDIT :
Bonjour,
Tout d’abord, je viens de voir que vous avez répondu rapidement à mon premier message et, moi, 4 jours plus tard, car j’ai reçu la notification que ce matin, donc ne voyez pas cela comme un manque de sérieux de ma part.
Bref, je viens de faire quelques recherches et l’option : Rechercher un enregistrement dans mon formulaire basé sur la valeur que j’ai sélectionnée dans la liste déroulante comme 3ème choix dans l’assistant de création d’une liste déroulante n’est pas visible pour moi, je n’ai que les deux premières options.
Merci de votre aide.
EDIT :
Bonjour, encore moi lol.
Je viens de rajouter les champs de la table en question (table attachée je ne sais pas si c’est important) au formulaire.
J’ai refait une liste déroulante comme dans votre tuto (je n’ai pas l’option : Rechercher un enregistrement dans mon formulaire basé sur la valeur que j’ai sélectionnée dans la liste déroulante).
Les champs se mettent à jour, mais ne sont pas modifiables, snif…
Y a-t-il un moyen de contourner cette fameuse 3ème option ?
Merci.
EDIT :
Re Bonjour Lydia,
J’ai trouvé, pour avoir la troisième option, il ne faut pas essayer dans un formulaire vierge, mais créer un formulaire basé sur une requête ou une table et ensuite rajouter une liste déroulante ou zone de liste.
Là, le miracle de la troisième option arrive et, effectivement, les champs sont mis à jour et modifiables.
Merci.
Bonjour Sébastien,
Ravie que vous ayez trouvé. Concernant les 4 jours de réponse, c’est bien moi qui ai mis 4 jours (fêtes obligent 😉 ) à répondre, mais pour avoir des commentaires qui se suivent j’ai toujours pris l’habitude de modifier l’heure et la date de ma réponse pour qu’elle se situe une minute après la question, d’où la notification reçue après.
Bonnes fêtes de fin d’année.
Bonjour Lydia,
Merci pour votre aide et vos aiguillages de réflexion.
Bonjour Lydia,
Je voulais savoir si c’était possible de faire les mêmes étapes que tu viens d’énumérer, mais être en mesure de modifier ces champs et de pouvoir les enregistrer ?
Merci.
Bonjour Olivier,
Je n’ai pas encore eu le temps de créer le tuto correspondant, mais lorsque le formulaire est basé sur une seule table, il suffit d’insérer les champs dépendants des données correspondantes, puis d’ajouter une liste déroulante et, dans l’assistant, de choisir la 3e option.
Bonjour Lydia,
Merci pour ces tutos.
J’ai un souci : j’ai plus d’un contact par entreprise. Par exemple, dans l’entreprise A, il y a le contact X et le contact Y. Les deux contacts apparaissent dans la liste déroulante, mais quand je sélectionne le deuxième, Y, c’est l’info de X – le premier contact – qui s’inscrit dans les champs.
Comment faire pour faire apparaître l’info du deuxième contact ?
Merci bien.
Désolée, j’ai révisé les étapes et là, tout fonctionne.
Merci quand même !
Très impressionné par la qualité, article et vidéo super détaillés !
Bonjour,
Merci pour vos tutos. Grâce à vous, je me passionne pour Access depuis quelques semaines, mais j’ai un petit souci pour la création de mon formulaire.
En insérant un n° de bâtiment, je souhaiterais que les champs Adresse et Ville se remplissent automatiquement. J’ai donc suivi votre tuto, tout est bien correct. Quand je suis en mode affichage, j’ai bien mes n° de bâtiment avec l’adresse et la ville, mais une fois que je veux les sélectionner, l’adresse et la ville ne se mettent pas dans leur emplacement ??? Où ai-je foiré ??
Bonjour,
Cela peut être le code qui n’est pas correct, l’évènement qui n’est pas placé après MAJ etc.
Toutefois, si votre formulaire n’est basé que sur une seule table, vous pouvez faire plus simple : créez une liste déroulante et, via l’assistant qui s’affiche, choisir la 3e option (rechercher…). Vous n’aurez ensuite qu’à modifier les contrôles Adresse et Ville pour que leurs sources soient leurs champs respectifs et qu’ils ne soient plus indépendants.
Bonjour Lydia, je suis étudiant en informatique développeur d’applications, débutant en Access. Je crée actuellement une application qui permet de numériser le rapport d’intervention du groupement sapeurs-pompiers, j’ai déjà fait les tables ainsi que le formulaire, mais je n’arrive pas à faire l’état du formulaire. J’ai besoin de ton aide, Lydia. Merci.
Bonjour Yao-Charles,
Je vous invite à consulter cet article sur les états Access.
Bonjour,
Cela fait des heures que j’essaie et j’essaie encore, mais impossible de faire comme vous.
Pourtant, j’utilise exactement le même exemple que vous et rien n’y fait, cela ne fonctionne pas…
Access 2007
Bonjour,
Y a-t-il un message d’erreur ? Avez-vous une liste déroulante de plusieurs colonnes pour le choix et l’évènement apparaît-il bien sur cette liste ?
Bonjour Lydia,
Je vais vous décevoir, mais :
– Oui, j’ai bien la liste déroulante avec plusieurs colonnes ;
– Oui, le
.Column
s’affiche bien dans les suggestions ;– Et non, je n’ai aucun message d’erreur.
C’est très frustrant sachant que j’ai fait votre exemple de facturation et cet exemple-ci aussi, deux fois le même résultat. Il ne se passe rien après la MAJ.
Je vous remercie de me consacrer du temps.
Bonjour Arnaud,
Dernière suggestion (après, désolée, je n’en ai plus 🙁 ) : utilisez-vous les bons noms de champ (Client est-il bien le nom de votre liste déroulante sur laquelle porte l’évènement) ?
Bonjour,
J’ai appliqué ce tuto hier (c’est le 1er que j’ai fait en fait), mais je n’y vois pas de formulaire et sous-formulaire pour modifier des champs issus de plusieurs tables… ???
Ou alors je n’ai pas tout compris…
Bonjour,
Non, je vous ai dit de créer votre formulaire de gestion et de mettre l’historique en tant que sous-formulaire et, dans ce cas-là seulement, vous pouvez utiliser l’autre tutoriel, pas celui de cette page.
Si vous utilisez l’article ci-dessus, vous ne pourrez, de toute façon, pas modifier les informations.
Bonjour,
Votre tuto m’a beaucoup aidé et cela fonctionne vraiment bien.
J’ai voulu essayer avec deux listes déroulantes afin de permettre de rechercher soit sur « Nom_contact » soit sur « Prenom ». Les champs se remplissent correctement sauf le champ « Prenom » lorsque la recherche est effectuée sur « Nom_contact ».
J’ai recommencé l’exercice plusieurs fois, mais toujours avec le même résultat.
Je suis novice et ne connais pas toutes les subtilités. Où aurais-je pu faire une erreur ?
Merci d’avance.
Loicq
Bonjour,
Votre formulaire est-il basé sur une seule table ? Car, si c’est le cas, vous pouvez tout simplement passer par ce tutoriel pour la recherche d’enregistrement.
Sinon, peut-être est-ce une erreur au niveau du code.
Bonjour,
J’ai les deux situations, mais ça ne fonctionne pas avec ce tuto.
J’ai vérifié le code et recommencé plusieurs fois.
Je vais recommencer.
Merci.
Bonsoir,
Est-il possible de partir du formulaire créé automatiquement par Access et ensuite adapter le VBA pour reprendre les noms des zones de texte fournies, plutôt que tout supprimer et tout recréer ?
Cordialement.
Bonsoir,
Oui, bien sûr. Le tout est de les rendre indépendants (pas de source contrôle) si vous utilisez ce tutoriel.
Ok, merci ! Je regarderai ce point plus précisément alors (début du tuto, je crois, de mémoire…) !
Hmmm… J’ai tout relu, mais je ne vois pas où vous expliquez comment rendre les zones de texte indépendantes. Vous dîtes qu' »ils vont être indépendants », mais c’est tout, du coup, je suis perdu, je ne vois pas comment faire ça… 🙁
Je vous l’ai indiqué dans mon dernier message 😉 Il faut simplement enlever la source contrôle (dans la Feuille de propriétés).
Ah ? C’est tout ??? Cool !!! J’imaginais une manip’ genre clic-droit sur la zone de texte et aller dans un menu xxx…
Merci !!!
Bonjour,
Je me nomme Lionel et j’ai un souci avec Access.
J’ai créé une macro en VBA Excel pour gérer une base Access.
Quand je crée une nouvelle table, je souhaiterais qu’à son ouverture, elle s’affiche triée sur un champ.
J’ai essayé la copie de table, la création aussi, mais impossible de trouver comment pouvoir modifier les valeurs de la feuille de propriétés de la table.
J’ai essayé en VBA, en SQL et en DAO…rien trouvé.
Pourriez-vous me dire comment faire ?
D’avance, merci.
Bonjour,
C’est la macro qui pose souci ou juste la table ? Car si vous appliquez un tri à votre table et que vous l’enregistrez, vous retrouverez votre tri.
Bonsoir,
Je vous remercie beaucoup pour vos tuto. Seulement, j’ai des difficultés avec la mise à jour, j’ai beau suivre le tuto à la lettre, le code VBA, on dirait qu’il ne se met pas en place. Moi, j’aimerais que le montant de l’item dans la facture ne change pas lorsque je mets à jour les tarifs, j’ai suivi les tutos création de facture, mais en vain, y aurait-il une étape à rajouter ? J’utilise Access 2007, merci.
Bonjour,
D’autres abonnés utilisant 2007 m’ont rapporté ce problème, mais n’ayant pas cette version, je ne peux pas tester. Il faudrait vérifier que la liste est bien à plusieurs colonnes et que le code est bien écrit et actif (procédure évènementielle écrite sur la ligne Après MAJ).
Concernant la MAJ de tarifs, je vous conseille de n’utiliser le champ ID_Tarif que pour « récupérer » les désignations et prix unitaires que vous stockez dans 2 autres champs (comme le prix unitaire dans le tutoriel).
Bonjour,
Merci pour ce tuto qui fonctionne parfaitement.
Par contre, je m’en sers pour rapatrier une liste de diffusion e-mail et je suis limité à 255 caractères. J’ai vérifié et j’ai mis le paramétrage en « texte long » partout et, aussi, j’ai mis des champs autoextensibles.
Pourtant, dans ma table, j’ai bien la totalité des caractères et si je les saisis à la main dans mon formulaire, il garde tout aussi.
J’ai l’impression que c’est la taille de la colonne de la liste déroulante qui est limitée.
Auriez-vous la solution ou une solution de contournement ?
Merci.
Bonjour,
C’est normal que cela tronque, car une liste n’est pas censée garder autant de données. Que souhaitez-vous faire à la base en « rapatriant la liste de diffusion e-mail » ?
Bonjour, je me sers d’un formulaire pour envoyer des e-mails.
Si destinataire choisi dans la liste = « X » alors envoi à la liste de diffusion « LD_X ».
Peut-être que je devrais plutôt passer par une requête, mais là, je sèche !
En tout cas, un grand merci de me consacrer un peu de temps !
Yann
Bonjour, je pense qu’il faudrait le programmer en VBA : si X dans la liste, alors envoyer un e-mail à chaque personne se trouvant dans la requête filtrée (requête filtrée avec le critère X).
Bonjour Lydia. Merci beaucoup pour tous ces tutos qui m’aident vraiment.
Je suis en train de créer un formulaire avec sous-formulaire qui reprend les coordonnées des adhérents et leur inscription à des cours. Pour ne pas ressaisir toutes les infos des adhérents qui sont là depuis plusieurs années, j’ai essayé de mettre à jour les champs à partir du code source de ma table adhérents (pour pouvoir la modifier en même temps). Mais j’ai un message qui s’affiche « pour modifier cet enregistrement, vous devez d’abord l’enregistrer ». Or, il existe puisque je l’ai repris avec la liste déroulante !
Merci d’avance pour l’aide que vous pourrez m’apporter !
Bonjour Sylvie,
Votre formulaire est-il basé sur une seule table ?
Non, il est basé sur deux tables + le sous formulaire sur une autre table.
Pouvez-vous me l’envoyer par e-mail ?
Salut Lydia, moi à mon expérience, je m’adapte plus au tutoriel que vous nous les faites partager avec un bon résultat auquel je vous remercie et bonne continuation avec votre blog. Ma question : sur la gestion du parc roulant automobile auquel je voudrais d’un formulaire rempli l’affectation modèle de voiture à un chantier sachant que j’ai 4 tables : marque (maison), type (modèle), chantier (affectation), chauffeur (acquéreur).
Bonjour Serradj,
Désolée, je n’ai pas compris la question.
Bonjour,
Tout d’abord, merci beaucoup pour votre blog !
J’ai 2 questions :
– La liste déroulante apparaît bien, mais je ne peux pas sélectionner une ligne.
– Serait-il possible de faire une recherche dans cette liste : par exemple de taper les 1ères lettres du 1er critère (pour moi une référence produit donc code unique) ce qui permettrait d’être plus rapide que de devoir chercher dans la liste (qui chez moi va comporter au moins une centaine de lignes) ?
Bonjour,
Je vous invite à suivre ce tutoriel si votre formulaire ne contient qu’une seule table. Toutefois, d’une façon ou d’une autre, la liste doit pouvoir être sélectionnable et est automatiquement semi-automatique.