Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Imprimer ligne à ligne VBA Access 2002

9 réponses
Avatar
Yves COUETTE
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120


Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un module
VBA.

J'ai consulté 2 livres. Ils indiquent comment imprimer dans un fichier
texte :

Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2

[ Et aussi d'exporter vers Word ou Excel. ]

Cela écrit bien dans le fichier texte, que je peux imprimer après, mais ce
n'est pas ce que je cherche.

Je souhaite une instruction (du même genre ?) envoyant de la même façon,
ligne à ligne, à l'imprimante.

Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus ou
moins direct d'imprimer à partir du module VBA ?

Merci d'éclairer ma lanterne.

Yves

9 réponses

Avatar
Jac
Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même
page. Donc après chaque ligne, tu auras un saut de page. Donc une page
par ligne ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture
de l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un module
VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer dans un fichier
texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais ce
n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves




Avatar
Yves COUETTE
Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans ce
cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille
Excel que j'utilise depuis plusieurs années et que je peux continuer à
utiliser), j'ai rencontré une difficulté à laquelle je n'avais pas pensé en
entreprenant cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à disposer
sur 6 colonnes ; pas de problème pour les 25 premiers enregistrements, mais
comment, du 26ème au 50ème passer à trois autres colonnes me donnant sur
l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3);
colonne 4 T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3);
colonne 4 T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3);
colonne 4 T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai pensé
faire un petit module VBA, j'en fait de temps en temps (par plaisir, étant
retraité, cela me permet de ne pas abandonner la programmation que j'ai
commencé à pratiquer, en différents langages, depuis 1980 ; et peut-être
aussi empêcher les neurones de rouiller trop vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module VBA
; cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être totalement
compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible ???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant de
nombreuses années dBase II, puis dBase III et enfin Paradox sous lequel j'ai
développé pas mal de modules programmés et en particulier des états me
permettant de faire exactement ce que je voulais au point de vue de la mise
en page, n'utilisant que rarement ou pas du tout les états "préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par ligne
ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer dans
un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais
ce n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves








Avatar
Gilbert
Bonjour,

As-tu regardé du côté de la mise en page de ton état?
Tu vas dans Fichier/Mise en page, puis dans l'onglet Colonnes et là tu
choisis les paramètres qui te conviennent.

Cordialement,
Gilbert



"Yves COUETTE" a écrit dans le message de news:

Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans
ce cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille
Excel que j'utilise depuis plusieurs années et que je peux continuer à
utiliser), j'ai rencontré une difficulté à laquelle je n'avais pas pensé
en entreprenant cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à disposer
sur 6 colonnes ; pas de problème pour les 25 premiers enregistrements,
mais comment, du 26ème au 50ème passer à trois autres colonnes me donnant
sur l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3); colonne 4
T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3); colonne 4
T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3);
colonne 4 T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai
pensé faire un petit module VBA, j'en fait de temps en temps (par plaisir,
étant retraité, cela me permet de ne pas abandonner la programmation que
j'ai commencé à pratiquer, en différents langages, depuis 1980 ; et
peut-être aussi empêcher les neurones de rouiller trop vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module
VBA ; cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être totalement
compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible
???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant de
nombreuses années dBase II, puis dBase III et enfin Paradox sous lequel
j'ai développé pas mal de modules programmés et en particulier des états
me permettant de faire exactement ce que je voulais au point de vue de la
mise en page, n'utilisant que rarement ou pas du tout les états
"préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par
ligne ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer dans
un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais
ce n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même
façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus
ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves













Avatar
Yves COUETTE
Merci Gilbert,

non je n'ai pas regardé de ce côté ; je vais le faire.

Cependant, je reste curieux de la possibilité d'imprimer à travers VBA.

Amitiés

Yves

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

Bonjour,

As-tu regardé du côté de la mise en page de ton état?
Tu vas dans Fichier/Mise en page, puis dans l'onglet Colonnes et là tu
choisis les paramètres qui te conviennent.

Cordialement,
Gilbert



"Yves COUETTE" a écrit dans le message de news:

Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans
ce cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille
Excel que j'utilise depuis plusieurs années et que je peux continuer à
utiliser), j'ai rencontré une difficulté à laquelle je n'avais pas pensé
en entreprenant cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à
disposer sur 6 colonnes ; pas de problème pour les 25 premiers
enregistrements, mais comment, du 26ème au 50ème passer à trois autres
colonnes me donnant sur l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3); colonne 4
T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3); colonne 4
T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3);
colonne 4 T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai
pensé faire un petit module VBA, j'en fait de temps en temps (par
plaisir, étant retraité, cela me permet de ne pas abandonner la
programmation que j'ai commencé à pratiquer, en différents langages,
depuis 1980 ; et peut-être aussi empêcher les neurones de rouiller trop
vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module
VBA ; cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être
totalement compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible
???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant
de nombreuses années dBase II, puis dBase III et enfin Paradox sous
lequel j'ai développé pas mal de modules programmés et en particulier des
états me permettant de faire exactement ce que je voulais au point de vue
de la mise en page, n'utilisant que rarement ou pas du tout les états
"préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par
ligne ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer
dans un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais
ce n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même
façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus
ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves

















Avatar
Yves COUETTE
OK, Gilbert,

j'ai obtenu le résultat souhaité avec l'état après quelques tâtonnements
sur les marges, hauteur du pied de page...

Finalement, cela fonctionne bien. Alors, grand merci à toi.

En fait, je ne m'étais jamais penché sur les états à plusieurs colonnes n'en
ayant pas eu besoin jusqu'alors.

Me reste la question d'origine : comment imprimer à partir d'un module VBA ?

Amicalement et @+

Yves


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

Bonjour,

As-tu regardé du côté de la mise en page de ton état?
Tu vas dans Fichier/Mise en page, puis dans l'onglet Colonnes et là tu
choisis les paramètres qui te conviennent.

Cordialement,
Gilbert



"Yves COUETTE" a écrit dans le message de news:

Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans
ce cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille
Excel que j'utilise depuis plusieurs années et que je peux continuer à
utiliser), j'ai rencontré une difficulté à laquelle je n'avais pas pensé
en entreprenant cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à
disposer sur 6 colonnes ; pas de problème pour les 25 premiers
enregistrements, mais comment, du 26ème au 50ème passer à trois autres
colonnes me donnant sur l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3); colonne 4
T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3); colonne 4
T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3);
colonne 4 T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai
pensé faire un petit module VBA, j'en fait de temps en temps (par
plaisir, étant retraité, cela me permet de ne pas abandonner la
programmation que j'ai commencé à pratiquer, en différents langages,
depuis 1980 ; et peut-être aussi empêcher les neurones de rouiller trop
vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module
VBA ; cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être
totalement compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible
???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant
de nombreuses années dBase II, puis dBase III et enfin Paradox sous
lequel j'ai développé pas mal de modules programmés et en particulier des
états me permettant de faire exactement ce que je voulais au point de vue
de la mise en page, n'utilisant que rarement ou pas du tout les états
"préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par
ligne ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer
dans un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais
ce n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même
façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus
ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves

















Avatar
Yves COUETTE
Bonjour,

pour ce même état, je dois mettre dans le bas un total (des montants
Mtt) et un nombre (celui des chèques) :

= Somme(Mtt)
= Compte(Mtt)

si je mets cela dans un pied de page, j'obtiens "erreur" (mais... je peux la
placer où je veux :-)
si je mets cela dans un pied d'état, j'obtiens la bonne somme et le bon
nombre...
mais je n'ai pas encore trouvé comment les placer sur la même page
(détail)
il y a toujours un saut à la page suivante :-(

C'est un tout simple bordereau de remise de chèques que je fais
habituellement sous Excel. Une seule page suffit.

J'ai aussi fait un petit essai en créant un groupe, mais sans succès !

Une suggestion ?

(Une remarque : il est si facile d'écrire avec un petit programme ! L'ennui
c'est qu'on ne peut pas l'imprimer !)

Amitiés

Yves
----------------------------------------------------
"Gilbert" a écrit dans le message de news:

Bonjour,

As-tu regardé du côté de la mise en page de ton état?
Tu vas dans Fichier/Mise en page, puis dans l'onglet Colonnes et là tu
choisis les paramètres qui te conviennent.

Cordialement,
Gilbert



"Yves COUETTE" a écrit dans le message de news:

Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans
ce cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille
Excel que j'utilise depuis plusieurs années et que je peux continuer à
utiliser), j'ai rencontré une difficulté à laquelle je n'avais pas pensé
en entreprenant cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à
disposer sur 6 colonnes ; pas de problème pour les 25 premiers
enregistrements, mais comment, du 26ème au 50ème passer à trois autres
colonnes me donnant sur l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3); colonne 4
T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3); colonne 4
T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3);
colonne 4 T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai
pensé faire un petit module VBA, j'en fait de temps en temps (par
plaisir, étant retraité, cela me permet de ne pas abandonner la
programmation que j'ai commencé à pratiquer, en différents langages,
depuis 1980 ; et peut-être aussi empêcher les neurones de rouiller trop
vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module
VBA ; cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être
totalement compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible
???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant
de nombreuses années dBase II, puis dBase III et enfin Paradox sous
lequel j'ai développé pas mal de modules programmés et en particulier des
états me permettant de faire exactement ce que je voulais au point de vue
de la mise en page, n'utilisant que rarement ou pas du tout les états
"préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par
ligne ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer
dans un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais
ce n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même
façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus
ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves










Avatar
Jac
… en fait, entre ta question initiale et ce que tu as besoin, il y a
quand même un monde... Gilbert t'a renvoyé vers une mise en page
multi-colonnes qui finit par te convenir. C'est bien.

Yves COUETTE avait énoncé :
Bonjour Jac,

merci de ta réponse. Elle semble me confirmer qu'il n'y a pas de manière
simple d'imprimer en VBA !

Depuis 2002 où je suis passé à Access, j'ai toujours fait mes requêtes et
états avec les options "Créer une nouvelle requête ou un nouvel état...".
Je ne me rappelle pas avoir eu de difficulté particulière à imprimer dans ce
cas ; je trouve Access bien pratique pour cela.

Dans le petit état que je fais actuellement (pour remplacer une feuille Excel
que j'utilise depuis plusieurs années et que je peux continuer à utiliser),
j'ai rencontré une difficulté à laquelle je n'avais pas pensé en entreprenant
cet état par la méthode habituelle.

En deux mots : la requête de cet état est constitué de 3 champs à disposer
sur 6 colonnes ; pas de problème pour les 25 premiers enregistrements, mais
comment, du 26ème au 50ème passer à trois autres colonnes me donnant sur
l'état :

ligne 1 : colonne 1 T(1,1); colonne 2 T(1,2); colonne 3 T(1,3); colonne 4
T(26,1); colonne 5 T(26,2); colonne 6 T(26,3)
ligne 2 : colonne 1 T(2,1); colonne 2 T(2,2); colonne 3 T(2,3); colonne 4
T(27,1); colonne 5 T(27,2); colonne 6 T(27,3).
...........
ligne 25 : colonne 1 T(25,1); colonne 2 T(25,2); colonne 3 T(25,3); colonne 4
T(50,1); colonne 5 T(50,2); colonne 6 T(50,3).

Ne trouvant pas immédiatement la solution avec un état standard, j'ai pensé
faire un petit module VBA, j'en fait de temps en temps (par plaisir, étant
retraité, cela me permet de ne pas abandonner la programmation que j'ai
commencé à pratiquer, en différents langages, depuis 1980 ; et peut-être
aussi empêcher les neurones de rouiller trop vite ?).

Dans mon module VBA :
- je commence par garnir une table à 3 entrées T(x,y,z)...
- puis mise au point avec des "debug.print" (pratique)
- pour finir la mise en page, j'ai voulu envoyer à l'imprimante...
- c'est la que j'ai constaté que la recherche dans mes bouquins et sur
Internet ne me donnait rien !
- je n'avais vu cela dans aucun langage utilisé jusqu'alors (Basic, C,
Paradox, éditeur muni dans langage,...)
- cela ne ma parait pas pensable qu'un langage quel qu'il soit ne sache
pas "parler" à l'imprimante ?
- voulant aller un peu plus loin, j'ai testé le " Print #FichierTexte,
Tab(5) ; Texte1 ; Tab(30) ; Texte2 "
- OK, j'obtiens bien un fichier texte, mais ce n'est pas ce que je
cherche.

Voilà donc pourquoi je souhaite parvenir à imprimer à travers un module VBA ;
cela pourrait, en outre, m'être utile dans une autre appli ?

Sans doute y a-t-il une solution par un état ? en modifiant la requête de
telle sorte qu'à partir du 26ème enregistrement le nom de l'alias soit
différent ?
Mais, à travers VBA ?

Excuse-moi d'avoir été un peu long, c'était pour essayer d'être totalement
compris.

Amitiés et merci encore.

Conclusion : alors, impression à travers VBA ? Possible ou pas possible ???

Yves

Pour info : je me suis mis à Access en 2002 après avoir utilisé pendant de
nombreuses années dBase II, puis dBase III et enfin Paradox sous lequel j'ai
développé pas mal de modules programmés et en particulier des états me
permettant de faire exactement ce que je voulais au point de vue de la mise
en page, n'utilisant que rarement ou pas du tout les états "préfabriqués".

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


Bonjour Yves,

si l'impression se fait depuis un état, pas besoin de vba, il suffit de
dimentionner verticalement le groupe qui contient ta ligne (détail ou
regroupement) pour qu'il ne puisse pas y en avoir deux sur la même page.
Donc après chaque ligne, tu auras un saut de page. Donc une page par ligne
ou une ligne par page, c'est comme tu préfères.

Donc ton vba, c'est juste pour lancer l'impression. Et ça, tu pourrais
aussi le faire par macro : impression directe de l'état à l'ouverture de
l'état.

Jac


Après mûre réflexion, Yves COUETTE a écrit :
Environnement :

Windows XP
Access 2002
Imprimante Canon Laser Shot LBP-1120

Bonjour.

Je n'ai pas trouvé l'instruction permettant d'imprimer à partir d'un
module VBA. J'ai consulté 2 livres. Ils indiquent comment imprimer dans
un fichier texte



Print #FichierTexte, Tab(5) ; Texte1 ; Tab(30) ; Texte2
[ Et aussi d'exporter vers Word ou Excel. ]



Cela écrit bien dans le fichier texte, que je peux imprimer après, mais ce
n'est pas ce que je cherche.
Je souhaite une instruction (du même genre ?) envoyant de la même façon,


ligne à ligne, à l'imprimante.
Si, par hasard cela n'existe pas, il doit bien y avoir un moyen plus ou


moins direct d'imprimer à partir du module VBA ?
Merci d'éclairer ma lanterne.
Yves










Avatar
Jac
… la question des totaux est de savoir si tu veux en bas de chaque
page, les totaux de la page et/ou si c'est les totaux cumulés depuis la
première page et/ou si c'est le total général que tu obtiens déjà dans
le pied d'état et aussi s'il faut renvoyer en haut de la page suivante
les reports des pages précédentes comme ça se faisait dans des livres
de compte version papier à 15 ou 30 colonnes.

La suggestion pour la question ci-dessous :
tu n'affiches pas le pied d'état, mais tu crées des zones de texte sur
ta page (groupe ou pied de page) dans lesquelles tu renvoies le nom des
zones de texte du pied d'état. De cette facon, tu devrais pouvoir
afficher les récultats attendus. En cas de problème parce que le pied
d'état se calcule après les pieds de page, tu fais tes calculs dans
l'entête d'état.

Quant à attaquer l'imprimante directement depuis le vba, je n'y crois
pas. Trop complexe et trop long à développer surtout sans enregistreur
de vba qui permet quand même de "noter" ce qui a été fait à l'écran.
Mais rien ne t'empêche d'exporter dans le format qui te convient (txt,
xls, ...) tes données pour les traiter avec un "petit programme"…

Il ne me viendrait jamais à l'idée de vouloir créer un état en mode
création. Quand l'assistant a mis tout ce qu'il faut dans l'état il
reste encore tellement de travail avant d'imprimer que je ne vois
vraiment pas pourquoi je me priverais de l'assistant.

@ +


Yves COUETTE a exposé le 22/06/2009 :
Bonjour,

pour ce même état, je dois mettre dans le bas un total (des montants Mtt)
et un nombre (celui des chèques) :

= Somme(Mtt)
= Compte(Mtt)

si je mets cela dans un pied de page, j'obtiens "erreur" (mais... je peux la
placer où je veux :-)
si je mets cela dans un pied d'état, j'obtiens la bonne somme et le bon
nombre...
mais je n'ai pas encore trouvé comment les placer sur la même page
(détail)
il y a toujours un saut à la page suivante :-(

C'est un tout simple bordereau de remise de chèques que je fais
habituellement sous Excel. Une seule page suffit.

J'ai aussi fait un petit essai en créant un groupe, mais sans succès !

Une suggestion ?

(Une remarque : il est si facile d'écrire avec un petit programme ! L'ennui
c'est qu'on ne peut pas l'imprimer !)

Amitiés

Yves


Avatar
Yves COUETTE
Bonjour Jac, Gilbert et les autres...

Merci, Jac, de ta nouvelle réponse ; juste quelques commentaires pour
conclure :

1- les totaux : au bas de l'unique page, constituée de deux colonnes
(chacune contenant les 2 mêmes champs)

2- suite à ta suggestion, j'ai :
2.1 créé un en-tête d'état non visible, dans lequel j'ai fait les
calculs
2.2 renvoyé dans le pied de page le résultat des calculs
2.3 fini la mise en page souhaitée. C'est OK

3- j'ai préparé des dizaines d'états :
3.1 répétitifs, listes diverses, étiquettes, papillons...
3.2 ne faisant pas appel au multicolonnage (je n'en avais pas eu
besoin)
3.3 quant aux pied de page, je ne l'utilisai que pour les titres ou des
fonctions de chaînes (dates,...)

4- adieu l'impression VBA, mais j'utilise depuis des années les exports vers
Excel pour certaines mises en page

5- je crée un module VBA, de temps en temps, pour le plaisir (la retraite me
permet de passer un peu de temps à cette activité cérébrale). C'est surtout
pour remplacer un ensemble de traitement ; j'y inclus souvent plusieurs
requêtes sql, l'édition de l'état préparé en mode création Access ; entre
les deux, j'écris les lignes me permettant le traitement que je souhaite
faire subir aux données, allant lire des tables, traiter des infos et
mettant à jour ou créant d'autres tables.

6- merci à vous de m'avoir lu et surtout aidé efficacement. Il y a des
années que je n'étais pas venu sur ce forum...

Amitiés et peut-être à une autre fois ? pour une nouvelle demande d'aide ?

Yves

---------------------------------------------------
"Jac" a écrit dans le message de news:

. la question des totaux est de savoir si tu veux en bas de chaque page,
les totaux de la page et/ou si c'est les totaux cumulés depuis la première
page et/ou si c'est le total général que tu obtiens déjà dans le pied
d'état et aussi s'il faut renvoyer en haut de la page suivante les reports
des pages précédentes comme ça se faisait dans des livres de compte version
papier à 15 ou 30 colonnes.

La suggestion pour la question ci-dessous :
tu n'affiches pas le pied d'état, mais tu crées des zones de texte sur ta
page (groupe ou pied de page) dans lesquelles tu renvoies le nom des zones
de texte du pied d'état. De cette facon, tu devrais pouvoir afficher les
récultats attendus. En cas de problème parce que le pied d'état se calcule
après les pieds de page, tu fais tes calculs dans l'entête d'état.

Quant à attaquer l'imprimante directement depuis le vba, je n'y crois pas.
Trop complexe et trop long à développer surtout sans enregistreur de vba
qui permet quand même de "noter" ce qui a été fait à l'écran. Mais rien ne
t'empêche d'exporter dans le format qui te convient (txt, xls, ...) tes
données pour les traiter avec un "petit programme".

Il ne me viendrait jamais à l'idée de vouloir créer un état en mode
création. Quand l'assistant a mis tout ce qu'il faut dans l'état il reste
encore tellement de travail avant d'imprimer que je ne vois vraiment pas
pourquoi je me priverais de l'assistant.

@ +


Yves COUETTE a exposé le 22/06/2009 :
Bonjour,

pour ce même état, je dois mettre dans le bas un total (des montants
Mtt) et un nombre (celui des chèques) :

= Somme(Mtt)
= Compte(Mtt)

si je mets cela dans un pied de page, j'obtiens "erreur" (mais... je peux
la placer où je veux :-)
si je mets cela dans un pied d'état, j'obtiens la bonne somme et le bon
nombre...
mais je n'ai pas encore trouvé comment les placer sur la même
page (détail)
il y a toujours un saut à la page suivante :-(

C'est un tout simple bordereau de remise de chèques que je fais
habituellement sous Excel. Une seule page suffit.

J'ai aussi fait un petit essai en créant un groupe, mais sans succès !

Une suggestion ?

(Une remarque : il est si facile d'écrire avec un petit programme !
L'ennui c'est qu'on ne peut pas l'imprimer !)

Amitiés

Yves