OVH Cloud OVH Cloud

Changement de Bac

77 réponses
Avatar
o.0
Est-ce que le changement de bac est censé être automatique sous Word
lorsqu'il y a un saut de section ?

10 réponses

Avatar
Geo
Bonjour o.0


Je sais bien que ça aurait du marcher sans la macro.
Exemple, hier j'ai réinstallé une des nbreuses bécanes ici (même OS,
même version d'Office que l'autre bécane où ça ne marche pas
"automatiquement"), j'ouvre un des fameux docs je fais mise en page
(c'est une LaserJet 2200 sur ce poste) et là , stupeur ! ça marche
automatiquement.

Effectivement, il y a qque chose de pas très logique ds tout ça...à
creuser donc, mais creuser où, telle est la question...


Bon j'ai trouvé le fin mot de l'histoire en "installant" une 4300 sur
ma bécane.
En fait c'est pas un "Bac 1" qu'elle a, mais un " Bac 1".
L'espace supplémentaire fait tout capoter.
Bon voici la macro qui marche sous réserve de vérifier les lignes :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
c'est ce que j'ai compris dans ta définition.
Un message indique si ça a marché ou pas.
Pas testé avec une 2200.

Sub SectionsAvecBacsAlternés()
Dim i As Integer
Dim ValBac1 As Long
Dim ValBac2 As Long
Dim P1 As Long
Dim S1 As Long
Dim P2 As Long
Dim S2 As Long
Dim P3 As Long
Dim S3 As Long

Dim Bac1 As Boolean
Dim Bac2 As Boolean
Debug.Print ActivePrinter
ValBac1 = 0
Bac1 = False
ValBac2 = 0
Bac1 = False

For i = 0 To 2000
Options.DefaultTrayID = i
If Options.DefaultTrayID = i Then
Select Case Trim(Options.DefaultTray)
Case "Bac 1"
ValBac1 = Options.DefaultTrayID
Bac1 = True
Case "Bac 2"
ValBac2 = Options.DefaultTrayID
Bac2 = True
End Select
End If
Next

' choix de bacs A PROGRAMMER :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
If Bac1 Or Bac2 Then
Debug.Print "Au moins un bac identifié"
Else
MsgBox "Aucun Bac 1 ni 2 de trouvé pour " & ActivePrinter
End
End If
' Première section (traitée à part)
With ActiveDocument.Sections(1).PageSetup
'première page du document
.FirstPageTray = P1
' le reste de la première section
.OtherPagesTray = S1
End With
'Autres sections
For i = 2 To ActiveDocument.Sections.Count
If i Mod 2 = 1 Then
' sections 3, 5, 7, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P3
' autres pages
.OtherPagesTray = S3
End With
Else
' sections 2, 4, 6, 8, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P2
' autres pages
.OtherPagesTray = S2
End With
End If
Next
MsgBox "Adaptation effectuée pour l'imprimante " & ActivePrinter
End Sub

Avatar
Anacoluthe
Bonjour !

'Geo' nous a écrit ...
Bon j'ai trouvé le fin mot de l'histoire


ahhhhhhh je tenais plus dans le bac avec ce suspense ..... :-D

A+
A~

Avatar
o.0
Oui mais il faut toujours lancer cette macro avant impression ou je me
trompe ?

"Geo" a écrit dans le message de
news:
Bonjour o.0


Je sais bien que ça aurait du marcher sans la macro.
Exemple, hier j'ai réinstallé une des nbreuses bécanes ici (même OS,
même version d'Office que l'autre bécane où ça ne marche pas
"automatiquement"), j'ouvre un des fameux docs je fais mise en page
(c'est une LaserJet 2200 sur ce poste) et là , stupeur ! ça marche
automatiquement.

Effectivement, il y a qque chose de pas très logique ds tout ça...à
creuser donc, mais creuser où, telle est la question...


Bon j'ai trouvé le fin mot de l'histoire en "installant" une 4300 sur
ma bécane.
En fait c'est pas un "Bac 1" qu'elle a, mais un " Bac 1".
L'espace supplémentaire fait tout capoter.
Bon voici la macro qui marche sous réserve de vérifier les lignes :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
c'est ce que j'ai compris dans ta définition.
Un message indique si ça a marché ou pas.
Pas testé avec une 2200.

Sub SectionsAvecBacsAlternés()
Dim i As Integer
Dim ValBac1 As Long
Dim ValBac2 As Long
Dim P1 As Long
Dim S1 As Long
Dim P2 As Long
Dim S2 As Long
Dim P3 As Long
Dim S3 As Long

Dim Bac1 As Boolean
Dim Bac2 As Boolean
Debug.Print ActivePrinter
ValBac1 = 0
Bac1 = False
ValBac2 = 0
Bac1 = False

For i = 0 To 2000
Options.DefaultTrayID = i
If Options.DefaultTrayID = i Then
Select Case Trim(Options.DefaultTray)
Case "Bac 1"
ValBac1 = Options.DefaultTrayID
Bac1 = True
Case "Bac 2"
ValBac2 = Options.DefaultTrayID
Bac2 = True
End Select
End If
Next

' choix de bacs A PROGRAMMER :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
If Bac1 Or Bac2 Then
Debug.Print "Au moins un bac identifié"
Else
MsgBox "Aucun Bac 1 ni 2 de trouvé pour " & ActivePrinter
End
End If
' Première section (traitée à part)
With ActiveDocument.Sections(1).PageSetup
'première page du document
.FirstPageTray = P1
' le reste de la première section
.OtherPagesTray = S1
End With
'Autres sections
For i = 2 To ActiveDocument.Sections.Count
If i Mod 2 = 1 Then
' sections 3, 5, 7, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P3
' autres pages
.OtherPagesTray = S3
End With
Else
' sections 2, 4, 6, 8, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P2
' autres pages
.OtherPagesTray = S2
End With
End If
Next
MsgBox "Adaptation effectuée pour l'imprimante " & ActivePrinter
End Sub




Avatar
o.0
comment as-tu découvert l'espace supplémentaire ?
Quel moyen ?

"Geo" a écrit dans le message de
news:
Bonjour o.0


Je sais bien que ça aurait du marcher sans la macro.
Exemple, hier j'ai réinstallé une des nbreuses bécanes ici (même OS,
même version d'Office que l'autre bécane où ça ne marche pas
"automatiquement"), j'ouvre un des fameux docs je fais mise en page
(c'est une LaserJet 2200 sur ce poste) et là , stupeur ! ça marche
automatiquement.

Effectivement, il y a qque chose de pas très logique ds tout ça...à
creuser donc, mais creuser où, telle est la question...


Bon j'ai trouvé le fin mot de l'histoire en "installant" une 4300 sur
ma bécane.
En fait c'est pas un "Bac 1" qu'elle a, mais un " Bac 1".
L'espace supplémentaire fait tout capoter.
Bon voici la macro qui marche sous réserve de vérifier les lignes :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
c'est ce que j'ai compris dans ta définition.
Un message indique si ça a marché ou pas.
Pas testé avec une 2200.

Sub SectionsAvecBacsAlternés()
Dim i As Integer
Dim ValBac1 As Long
Dim ValBac2 As Long
Dim P1 As Long
Dim S1 As Long
Dim P2 As Long
Dim S2 As Long
Dim P3 As Long
Dim S3 As Long

Dim Bac1 As Boolean
Dim Bac2 As Boolean
Debug.Print ActivePrinter
ValBac1 = 0
Bac1 = False
ValBac2 = 0
Bac1 = False

For i = 0 To 2000
Options.DefaultTrayID = i
If Options.DefaultTrayID = i Then
Select Case Trim(Options.DefaultTray)
Case "Bac 1"
ValBac1 = Options.DefaultTrayID
Bac1 = True
Case "Bac 2"
ValBac2 = Options.DefaultTrayID
Bac2 = True
End Select
End If
Next

' choix de bacs A PROGRAMMER :
P1 = ValBac1 ' page 1 de la section 1
S1 = ValBac2 ' autres pages de la section 1
P2 = ValBac1 ' page 1 des sections 2, 4, 6, etc
S2 = ValBac1 ' autres pages des sections 2, 4, 6, etc
P3 = ValBac2 ' page 1 des sections 3, 5, 7, etc
S3 = ValBac2 ' autres pages des sections 3, 5, 7, etc
If Bac1 Or Bac2 Then
Debug.Print "Au moins un bac identifié"
Else
MsgBox "Aucun Bac 1 ni 2 de trouvé pour " & ActivePrinter
End
End If
' Première section (traitée à part)
With ActiveDocument.Sections(1).PageSetup
'première page du document
.FirstPageTray = P1
' le reste de la première section
.OtherPagesTray = S1
End With
'Autres sections
For i = 2 To ActiveDocument.Sections.Count
If i Mod 2 = 1 Then
' sections 3, 5, 7, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P3
' autres pages
.OtherPagesTray = S3
End With
Else
' sections 2, 4, 6, 8, etc
With ActiveDocument.Sections(i).PageSetup
'première page
.FirstPageTray = P2
' autres pages
.OtherPagesTray = S2
End With
End If
Next
MsgBox "Adaptation effectuée pour l'imprimante " & ActivePrinter
End Sub




Avatar
Geo
Bonjour o.0


Oui mais il faut toujours lancer cette macro avant impression ou je
me

trompe ?


Oui, sauf si tu la nommes DocumentBeforePrint
Elle se lancera toute seule à l'impression.
Mais tu ne m'as pas dit que ça marchait chez toi ?

--

A+

Avatar
Geo
Bonjour o.0


comment as-tu découvert l'espace supplémentaire ?


Je suis allé sur le site HP charger le pilote de la 4300 PCL6, puis
installé l'imprimante sur mon poste, puis exécuté la macro qui aurait
dû marcher, en pas à pas et avec des debug.print un peu partout.
Et là :
Horreur, la macro ne reconnaît pas le Bac 1 alors qu'il était bien
dans la liste.
Retour à la macro "Correspondance", en entourant le nom des bacs de
deux caractères, je m'attendais à trouver des espaces à la fin.
Ce fut celui de tête qui arriva.
Un vrai Waterloo.
Après ce fut simple : ajout de la fonction Trim, quelques
améliorations glanées dans les macros superfétatoires de ces derniers
jours, un peu de nettoyage, re-test avec la 4300 puis avec la mienne.
Et voilà.
Tu pourras remercier HP de notre part ;-)

--

A+

Avatar
Geo
Bonjour Anacoluthe



ahhhhhhh je tenais plus dans le bac avec ce suspense ..... :-D


A propos, ce n'est pas toi qui es chargé de préparer les bacs de
rangement des macros dans la faq ?
T'as plus qu'à trier :-D

--

A+

Avatar
o.0
Donc si je comprends bien c'est ce qui explique pourquoi le *.dot ne
fonctionne pas avec cette imprimante ?

"Geo" a écrit dans le message de
news:
Bonjour o.0


comment as-tu découvert l'espace supplémentaire ?


Je suis allé sur le site HP charger le pilote de la 4300 PCL6, puis
installé l'imprimante sur mon poste, puis exécuté la macro qui aurait
dû marcher, en pas à pas et avec des debug.print un peu partout.
Et là :
Horreur, la macro ne reconnaît pas le Bac 1 alors qu'il était bien
dans la liste.
Retour à la macro "Correspondance", en entourant le nom des bacs de
deux caractères, je m'attendais à trouver des espaces à la fin.
Ce fut celui de tête qui arriva.
Un vrai Waterloo.
Après ce fut simple : ajout de la fonction Trim, quelques
améliorations glanées dans les macros superfétatoires de ces derniers
jours, un peu de nettoyage, re-test avec la 4300 puis avec la mienne.
Et voilà.
Tu pourras remercier HP de notre part ;-)

--

A+








Avatar
o.0
Bonjour, ça va pour un Lundi ?


Tous les fameux documents qui nous sont envoyés pour impression sont faits à
partir d'un *.dot que nous n'avons pas mais qui est "fusionné" avec le
documents.
On peut s'en rendre compte en ouvrant un doc et en allant dans :

Outils > Modèles et Documents
là nous avons :


C:Documents and SettingsmarleneApplication DataMicrosoftModèlesCPA.dot

Donc ce point dot se trouve ds le répertoire user de la personne qui a tapé
le doc.

Ma question : est-il possible de détecter le nom du modèle associé aux docs
ouverts sur le poste de travail destiné à l'impression de ces docs...car ce
même poste de travail imprime d'autres docs qui n'ont pas besoin de cette
macro.

Alors la macro détecte si CPA.dot est attaché comme modèle de doc et si et
seulement si ce *.dot est attaché alors il lance la macro juste avant
l'impression avec le DocBeforeprint...

Est-ce compliqué à réaliser ?



"Geo" a écrit dans le message de
news:
Bonjour o.0


Oui mais il faut toujours lancer cette macro avant impression ou je
me

trompe ?


Oui, sauf si tu la nommes DocumentBeforePrint
Elle se lancera toute seule à l'impression.
Mais tu ne m'as pas dit que ça marchait chez toi ?

--

A+




Avatar
Geo
Bonjour o.0


Bonjour, ça va pour un Lundi ?


Je suis en congés, alors lundi ou pas c'est pareil.
Et il a plu un peu ce matin et ça fait bien plaisir.

Tous les fameux documents qui nous sont envoyés pour impression sont
faits à partir d'un *.dot que nous n'avons pas mais qui est
"fusionné" avec le documents.
On peut s'en rendre compte en ouvrant un doc et en allant dans :

Outils > Modèles et Documents
là nous avons :


C:Documents and SettingsmarleneApplication
DataMicrosoftModèlesCPA.dot

Donc ce point dot se trouve ds le répertoire user de la personne qui
a tapé le doc.

Ma question : est-il possible de détecter le nom du modèle associé
aux docs ouverts sur le poste de travail destiné à l'impression de
ces docs...car ce même poste de travail imprime d'autres docs qui
n'ont pas besoin de cette macro.


Oui on peut probablement,
dans quelle partie de la fenêtre apparaît cette référence ?
Dans la partie "modèle de document"
ou Modèles globaux et documents ?

Peux-tu passer cette macro (trouvée toute faite dans l'aide)
pour voir si c'est bien ce modèle qui est affiché ?
Sub testModele()
Dim MyTemplate As Template
Set MyTemplate = ActiveDocument.AttachedTemplate
MsgBox MyTemplate.Path & Application.PathSeparator _
& MyTemplate.name
End Sub


--

A+