[Access] Définir zone d'impression formulaire [Résolu/Fermé]

Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
- - Dernière réponse :  matrix - 25 juin 2008 à 13:59
Bonjour,

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

Afficher la suite 

20/43 réponses

Meilleure réponse
1
Merci
Bonjour,
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...

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59118 internautes nous ont dit merci ce mois-ci

1
Merci
C'est par définition :
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...

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59118 internautes nous ont dit merci ce mois-ci

Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
1
Merci
Il est bien évident qu'un formulaire serait beaucoup plus pratique et convivial, mais j'avoue que les requêtes en VBA, je n'y arrive pas.
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++

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59118 internautes nous ont dit merci ce mois-ci

Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Bonjour,

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
Utilisateur anonyme -
Hello,
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é !
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Bonjour,

Merci 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
0
Merci
Hello,

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 ?
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Salut,

C'est le contenu qui change.
Pour l'affichage et l'emplacement tout est nickel.
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Ah tiens! Toi qui m'a l'air plutot averti en matière d'Access, saurais-tu comment faire un fichier client qui permettrait à plusieurs utilisateurs de modifier la base via le réseau ?
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
0
Merci
Re,
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.

Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Re Bonjour,

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
0
Merci
Re,

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.
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Salut,

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+
0
Merci
Hello,

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 !
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Bonjour,

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.

Utilisateur anonyme -
Salut,

Ta requête est de quelle forme ? Sélection ou analyse croisée, il y a t'il un regroupement sur un champ ?
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Re,

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.
0
Merci
Bon, il s'agit d'une requête avec opérations de regroupement (GROUP BY). Tu ne peux donc pas modifier les résultats de la requête.

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 ?
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
T'es trop fort !
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.
0
Merci
Re,

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
Messages postés
261
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
10 juin 2009
42
0
Merci
Re,

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.

0
Merci
Pas de mal...
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é :-)