[Access] Définir zone d'impression formulaire
Résolumatrix -
Je voulais savoir s'il était possible de définir une zone d'impression dans un formulaire access, ou à défaut, si l'on pouvait exclure de l'impression certains éléments (combobox, liste, etc.)
Merci d'avance.
Cdlt
--
Sheraf
Configuration: Office 2000 Win XP Pro
- Imprimer un formulaire access
- Imprimer un tableau excel - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Imprimer livret a5 - Guide
- Un formulaire rempli - Guide
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
43 réponses
- 1
- 2
- 3
Il est question de savoir s'il est possible de définir une zone d'impression dans un formulaire Access ou d'exclure certains éléments (combobox, liste) de l'impression. La solution recommandée est d'utiliser les états (rapports) pour imprimer, car le formulaire n'est pas conçu pour l'impression et offre une mise en page adaptée. Si l'impression d'un formulaire est impérative, il faut recourir à du VBA pour rendre invisibles les contrôles non imprimables, ce qui peut complexifier le flux et n'est pas idéal. Des échanges soulignent aussi que la gestion multi-utilisateur et les performances réseau peuvent influencer la disponibilité des impressions via Access.
Un formulaire n'est pas fait pour être imprimé, pour les impressions, il y a les états...
Si vraiment tu veux absolumment imprimer un formulaire, le seul moyen serait de passer par du vba et de rendre la propriété visible des éléments à ne pas imprimer à false.
Mais je me répète, un formulaire sert à consulter et / ou saisir des données à l'écran, pas sur papier...
dans un regroupement, tu regroupes des enregistrements.
Exemple : tu as une table commande avec num_produit et code_client qui ne forment pas une clé primaire.
Tu as dans ta table commande ces enregistrements là :
num_produit code_client
1 4
1 4
2 5
1 5
1 4
Tu fais une requête avec regoupement sur le champ num_produit et également sur le champ code_client.
Le résultat de ta requête sera :
1 4
2 5
1 5
Imagines que tu veuilles, dans le résultat de la requête, changer le 4 en 6. Access ne peut pas savoir à quelle ligne le 4 correspond...
Une explication : http://www.asp-magazine.com/fr/sql/sql3.asp
C'est pour ça que je te posais la question toute à l'heure, tu faisais des regroupements sur tous les champs sans autre opération, je voyais pas l'intérêt (mis à part celui d'éliminer les doublons).
Autre chose :
Quand tu écris
WHERE (((Horaires.login)=[Login :]) AND ((Horaires.date)>[Date de début de période :] And (Horaires.date)<[Date de fin de période :]));j'imagines qu'access demande à l'utilisateur de saisir le login, et 2 dates.
Tu n'aurais pas meilleur compte de faire saisir ces choix dans un formulaire (avec liste de choix pour le login et soit zone de texte soit calendrier pour les dates ? C'est + sympa et si jamais tu dois lancer une autre requête avec ces mêmes renseignements, ça évite de les ressaisir...
Je fais vraiment de l'apprentissage (j'aurais pu dire en autodidacte si tu n'étais pas la :D ) sur le tas, et beaucoup de notions m'échappent.
J'imagine qu'il est possible de faire un code VBA pour obtenir exactement la même requête, ou bien utiliser les variables du code et les intégrer à la requête, mais je sais po faire, et je pense que j'ai largement abusé de ta générosité et de ton temps pour te demander un cours par posts interposés :).
Cela dit, quand ma base sera parfaitement opérationnelle, je n'exclue pas l'idée de me pencher un peu plus sur ces notions qui sont primordiales pour une utilisation efficace d'Access.
En tout cas, encore merci pour tes explications. Je n'ai pas encore été voir le lien, mais j'irai avant ce soir.
a++
Merci pour ta réponse. Comme quoi il faut vraiment que je me perfectionne sur les rudiments du développement.
Au point où j'en suis je vais imprimer mon formulaire tel quel faute de temps, je me pencherai plus avant sur les états plus tard.
Et désolé pour le remerciement tardif.
cdlt
Sous office 2002, tu as une possibilité pour créer ton état rapidement. A voir si sous 2000 c'est possible.
Dans la fenêtre base de données, fais un clic droit sur ton formulaire, enregistrer sous, et mets en tant qu'état. Là tu auras un état comme ton formulaire, et tu peux facilement supprimer des éléments dans l'état en mode création.
Bon courage et même s'il est tardif un remerciement est toujours apprécié !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionMerci pour tes conseils encore une fois.
Sur Access 2000 il y a bien un moyen d'enregistrer le formulaire sous un état, mais le problème est que mon formulaire se remplit automatiquement en fonction de l'utilisateur qui s'authentifie au démarrage. Il s'agit d'une application (le mot est bien présomptueux :s ) qui permet aux employés de pointer puis d'afficher et imprimer leurs horaires selon un période choisi.
Donc je ne sais pas s'il est possible d'enregistrer le formulaire sous un état de façon 'dynamique'. J'imagine que ça l'est mais j'avoue que je ne suis pas sûr d'avoir le temps de me pencher dessus tout de suite.
Pour conclure je suis quand même arrivé à mes fins en ajoutant un bouton d'impression à mon formulaire qui modifie légèrement la mise en page pour que tout s'imprime correctement sur une seule page.
Voila pour le suivi des affaire :)
Encore merci pour tes conseils, et si tu connais une solution pour exporter le formulaire de façon dynamique, elle est la bienvenue. :-)
Cdlt
Quand tu dis que le formulaire dépend de l'utilisateur qui s'est loggé, c'est le contenu des controles qui change, ou l'emplacement, l'affichage des controles ?
Je ne me suis pas encore trop penché dessus, mais j'ai cru comprendre qu'il fallait SQL server (?)
De toutes facons ce n'est pas bien grave, je peux me contenter d'un raccourci, la solicitation du fichier n'est pas herculéenne.
Encore merci mille fois
Si c'est le contenu qui change, il n'y a pas de problème. Crées ton état soit manuellement, soit via le formulaire, et tu crées un bouton depuis le formulaire. Laisses toi guider par l'assistant.
Ensuite, va modifier le code de la manière suivante.
Dim stDocName As String / tu laisses
stDocName = "nom_de_ton_etat" / tu laisses
DoCmd.OpenReport stDocName, acPreview, , "le_champ_de_ton_etat_qui_represente_la_cle_primaire = Forms!ton_formulaire!cle_primaire"
Il t'imprimera bien "la fiche" en cours...
Pour ta seconde question, tu veux que la base soit utilisée par +sieurs personnes en même temps ? C'est géré par access sans aucun souci, tu as juste à vérifier les paramètres de partage de la base et des différents formulaires.
Vraiment c'est très sympa de ta part de m'aider comme ça.
Pour la première solution que tu m'apportes, c'est très interressant, je ne connaissais pas, et je vais m'y interresser de plus près.
Pour le partage de la base, je vais avoir deux utilisateurs en permanence dessus (les deux postes dans l'entreprise qui vont servir aux employés à pointer), plus les chefs de service et la paie qui vérifieront les horaires et les éditeront.
Voila, encore merci.
Cdlt
Merci pour ta visite sur mon site...
Si tu as un problème avec ta base, reviens dans ce post...
Pour le partage, si les gens sont souvent plusieurs dessus, je te conseille de scinder ta base en deux.
Voici un lien intéressant : http://www.self-access.com/access/index.php?url=%2Faccess%2Fdossiers%2Findex.php
(en bas Installer Access en réseau).
Bye.
Merci, c'est super génial. Je ne connaissais pas cette méthode encore une fois, et encore une fois je suis heureux que tu me l'ai faite découvrir.
Si j'ai un problème je te redemanderais ici, mais je ne vais quand meme pas trop abuser de ta dévotion :p
a+
C'est que ça a marché alors vu ton contentement...
Pas de problème, reviens quand tu veux, un forum (celui-ci en particulier) est fait pour ça !
@ bientôt et bonne continuation !
En effet, le fractionnement de la base a fonctionné, et c'est nickel.
Je reviens pour une question sur les modifications de tables.
J'ai une requete qui m'affiche les horaires par employé et par période.
Elle est destinée aux chefs de services qui peuvent controler les horaires apporter des modification (surtout pour les fois où les employés oublient de pointer :x)
Le chef de service entre donc le nom de l'employé, et les dates de la période concernée.
La requête affiche bien tous les champs.
Ma question est la suivante :
Comment faire pour qu'une telle requête (ou quelque chose de similaire) m'offre la possibilité de modifier à souhait les résultats retournés.
Merci d'avance.
Un copier/coller vaut parfois mieux qu'un long discours :)
SELECT Horaires.login, Horaires.date, Horaires.debut, Horaires.fin, Horaires.repas, Horaires.pause, Horaires.absence, Horaires.comment
FROM Horaires
GROUP BY Horaires.login, Horaires.date, Horaires.debut, Horaires.fin, Horaires.repas, Horaires.pause, Horaires.absence, Horaires.comment
HAVING (((Horaires.login)=[Login :]) AND ((Horaires.date)>[Date de début de période :] And (Horaires.date)<[Date de fin de période :]));
Elle a été faite à partir de QBE.
Encore merci pour ton aide.
Si tu essaie ça :
SELECT Horaires.login, Horaires.date, Horaires.debut, Horaires.fin, Horaires.repas, Horaires.pause, Horaires.absence, Horaires.comment FROM Horaires WHERE (((Horaires.login)=[Login :]) AND ((Horaires.date)>[Date de début de période :] And (Horaires.date)<[Date de fin de période :]));
Ca te renvoie + d'enregistrements ou tu as le même résultat ?
Ta requete fonctionne à merveille, et j'ai pas besoin de me prendre la tête pour effectuer les modifs.
Je ne sais pas comment te remercier, pourtant je vais quand meme te poser une autre question :
Pourquoi est-ce qu'un regroupement empeche de modifier les enregistrements ?
J'imagine que ce genre d'explications permettent de comprendre Access plus en profondeur, ce qui me manque amplement.
Merci encore.
C'est tout simple.
Tu crées un formulaire avec tes zones à saisir. On appellera ici le formulaire form1 et les zones zone1, zone2 et zone3.
Dans ta requête tu changes :
WHERE (((Horaires.login)=[Login :]) AND ((Horaires.date)>[Date de début de période :] And (Horaires.date)<[Date de fin de période :]));
par :
WHERE (((Horaires.login)=forms!form1!zone1) AND ((Horaires.date)>forms!form1!zone2 And (Horaires.date)<forms!form1!zone3));
Dans ce form, tu mets un bouton de commande qui t'ouvre soit la requête, soit un état, soit ce que tu veux (passe par l'assistant).
Si tu veux, tu peux cacher ce form, tu rajoutes me.visible=false.
Voili voilou
Nickel ca fonctionne avec le login mais pas avec les dates (et franchement c'est pas plus mal, ca évite d'avoir à saisir dans un format à 6 chiffres)
Je ne sais vraiment pas comment te remercier, avec les quelques conseils que tu m'as donné, tu m'as fais économiser un nombre d'heure de recherche que je ne saurais pas estimer.
Encore merci mille fois.
Pour les dates, ça doit fonctionner. Ton champs 'date' dans ta table horaires et de quel type ? Mets le en date, dans ton formulaire mets tes zones en type date également.
quand tu dis "ça évite de saisir dans un format à 6 chiffres", tu veux dire quoi ? Pour une date, c'est le minimum, le standard c'est 8 chiffres (jjmmaaaa).
Tant qu'à faire, autant faciliter la tâches des utilisateurs au maximum.
Bonne soirée / journée et bon courage.
N'hésite pas à poster dans ce fil au lieu de t'arracher les cheveux, si on peut d'être de quelconque utilité :-)
- 1
- 2
- 3