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

Noir c'est noir - [VBA] [WRD 2002] Dimensions de l'image de fond le retour

17 réponses
Avatar
Demokos
Bonjour à toutes et à tous.

Suite à l'aide de Géo, j'utlise le script VBA suivant pour insérer une
image de fond (un papier à en-tête) en fonction de la société choisie
dans un champ de formulaire de type liste déroulante :

Sub Societe()
Dim aShape As Shape
Dim MonImageILS As InlineShape
Dim MonImage As Shape
Dim Fichier As String
If Not IsNull(ActiveDocument.Shapes.Count) Then
For Each aShape In ActiveDocument.Shapes
aShape.Delete
Next
End If

Application.ScreenUpdating = False

PosSte = ActiveDocument.FormFields("LdSte_01").DropDown.Value
FichImg = ActiveDocument.Path & Application.PathSeparator & PosSte
& ".jpg"

Selection.HomeKey Unit:=wdStory

Set MonImageILS =
Selection.InlineShapes.AddPicture(FileName:=FichImg, LinkToFile:=False,
SaveWithDocument:=True)

Set MonImage = MonImageILS.ConvertToShape

With MonImage
'Position à gauche :
.RelativeHorizontalPosition =
wdRelativeHorizontalPositionLeftMarginArea

.RelativeVerticalPosition = wdRelativeVerticalPositionPage

.LockAspectRatio = msoFalse
.ZOrder msoSendBehindText 'option pour image en arrière plan
derrière le texte
' Taille
.Height = CentimetersToPoints(28.1)
.Width = CentimetersToPoints(19.4)

End With

ActiveWindow.View.Type = wdPrintView

Application.ScreenUpdating = True

ActiveDocument.FormFields("LdSte_01").DropDown.Value = PosSte

End Sub

Mon problème actuel est que, après l'insertion de l'image, qui se fait
parfaitement, il y a toute une partie de la télécopie dont le fond
devient noir en vue "Page" uniquement. Ci-joint les images (floutées
!!!) de cette télécopie

http://cjoint.com/?kmsS7kp8iH

http://cjoint.com/?kmsTSUavvL

http://cjoint.com/?kmsUrJesno

Les vues "Web", "Normal" et l'aperçu avant impression ne reproduisent
pas le phénomène. Y a-t-il quelque chose à faire pour éviter cette
"peinture" ?

Par avance merci pour vos réponses.

10 réponses

1 2
Avatar
Geo
Bonjour

Personnellement je pencherais pour une question de taille mémoire du
fax.
Essayez en réduisant la définition de l'image ou voyez si vous ne
pouvez pas mettre un image en haut de la page et une autre en bas pour
l'alléger.

Juste une remarque sur le code :

If Not IsNull(ActiveDocument.Shapes.Count) Then
For Each aShape In ActiveDocument.Shapes
aShape.Delete
Next
End If



Le test isNull me parait inutile, le for each va sortir s'il n'y a
aucune image.
D'autre part, pour supprimer des éléments dune collection il vaut mieux
Utiliser l'indice en partant de la fin, par exemple :
Nb = ActiveDocument.Shapes.Count
for i = Nb, 1, step-1
ActiveDocument.Shapes(i).delete
next i

ou

Nb = ActiveDocument.Shapes.Count
for i = 1, nb
ActiveDocument.Shapes(1).delete ' "1" et non "i"
next i

Il y a des cas où votre programmation fonctionne bien et d'autres où
elle laisse des éléments, je n'ai jamais bien su dans lesquels, il vaut
mieux être prudent.

--
A+
Avatar
Demokos
Une question de taille mémoire du fax ? Non, j'imprime et ensuite je
faxe ce qui a été imprimé, car au boulot, pas de fax sur le PC.

Mais un problème de taille mémoire sur le PC ? Peut-être. Chez moi je
bosse sur mon Eee Box. Je verrai sur le PC du boulot si ça me fait la
même chose.

Le test isNull est probablement inutile, en effet.
Au début, j'avais mis

i = ActiveDocument.Shapes.Count
For x = 1 To i
ActiveDocument.Shapes(i).delete
Next i

qui fonctionnait aussi.

Merci pour le conseil concernant le For, par contre VBE a poussé de
hauts cris avec "for i = Nb, 1, step-1". Il préfère "For i = 1 To Nb
step -1".


Geo a écrit :
Bonjour

Personnellement je pencherais pour une question de taille mémoire du fax.
Essayez en réduisant la définition de l'image ou voyez si vous ne pouvez
pas mettre un image en haut de la page et une autre en bas pour l'alléger.

Juste une remarque sur le code :

If Not IsNull(ActiveDocument.Shapes.Count) Then
For Each aShape In ActiveDocument.Shapes
aShape.Delete
Next
End If



Le test isNull me parait inutile, le for each va sortir s'il n'y a
aucune image.
D'autre part, pour supprimer des éléments dune collection il vaut mieux
Utiliser l'indice en partant de la fin, par exemple :
Nb = ActiveDocument.Shapes.Count
for i = Nb, 1, step-1
ActiveDocument.Shapes(i).delete
next i

ou

Nb = ActiveDocument.Shapes.Count
for i = 1, nb
ActiveDocument.Shapes(1).delete ' "1" et non "i"
next i

Il y a des cas où votre programmation fonctionne bien et d'autres où
elle laisse des éléments, je n'ai jamais bien su dans lesquels, il vaut
mieux être prudent.



Avatar
Geo
Re

Mais un problème de taille mémoire sur le PC ? Peut-être. Chez moi je bosse sur mon Eee
Box. Je verrai sur le PC du boulot si ça me fait la même chose.



Attendons, mais ça ne me parait pas lié à votre code.
Il me semble que les fax mémorisent la page avant de l'émettre, c'est
ce qui m'a fait penser à cette cause.

par contre VBE a poussé de hauts cris avec
"for i = Nb, 1, step-1". Il préfère "For i = 1 To Nb step -1".



En effet. Désolé, voilà ce que c'est de ne pas tester.

--
A+
Avatar
Demokos
Dans la mesure où je suis en (petites) vacances, je serai au boulot jeudi...

Geo a écrit :
Re

Mais un problème de taille mémoire sur le PC ? Peut-être. Chez moi je
bosse sur mon Eee Box. Je verrai sur le PC du boulot si ça me fait la
même chose.



Attendons, mais ça ne me parait pas lié à votre code.
Il me semble que les fax mémorisent la page avant de l'émettre, c'est ce
qui m'a fait penser à cette cause.

par contre VBE a poussé de hauts cris avec "for i = Nb, 1, step-1". Il
préfère "For i = 1 To Nb step -1".



En effet. Désolé, voilà ce que c'est de ne pas tester.



Avatar
Demokos
J'ai essayé en divisant le papier à en-tête en deux, le logo en haut et
les infos du bas en chargeant les images en en-tête et pied de page :
même résultat. Le fichier le plus gros des mes papiers à en-tête fait
411 Kos, et en le divisant en deux, les deux fichiers haut et bas
donnent 239 Kos. J'ai inséré les deux fichier manuellement, et le
résultat noir est le même. Au bureau, en insérant le fichier de papier à
en-tête à la main, je n'avais pas le problème. C'est sûrement l'Eee Box
qui ne tiens pas distance. Je vérifierai jeudi au boulot...

Geo a écrit :
Re

Mais un problème de taille mémoire sur le PC ? Peut-être. Chez moi je
bosse sur mon Eee Box. Je verrai sur le PC du boulot si ça me fait la
même chose.



Attendons, mais ça ne me parait pas lié à votre code.
Il me semble que les fax mémorisent la page avant de l'émettre, c'est ce
qui m'a fait penser à cette cause.

par contre VBE a poussé de hauts cris avec "for i = Nb, 1, step-1". Il
préfère "For i = 1 To Nb step -1".



En effet. Désolé, voilà ce que c'est de ne pas tester.



Avatar
Geo
Bonjour

Au bureau, en insérant le fichier de papier à en-tête à la
main, je n'avais pas le problème.



Et à la maison, vous n'avez pas essayé à la main ?

--
A+
Avatar
Demokos
Si si, le résultat est ... noir, que je fasse l'insertion en une fois ou
en deux.
Après divers tests, il semblerait que le phénomène apparaît quand je
fais Clic droit -> Propriétés -> Habillage -> Derrière le texte, ce qui
correspond à l'instruction : .ZOrder msoSendBehindText.
Je ne suis pas sûr d'avoir moins de mémoire sur mon Eee Box que sur le
PC du bureau, donc je ne vois pas pourquoi ça me fait ça. J'essayerai
demain au bureau mais l'insertion d'une image de papier à en-tête au
boulot ne me provoquait pas ce noir.

Geo a écrit :
Bonjour

Au bureau, en insérant le fichier de papier à en-tête à la main, je
n'avais pas le problème.



Et à la maison, vous n'avez pas essayé à la main ?



Avatar
Circé
Bonjour,

Demokos a utilisé son clavier pour écrire :
Si si, le résultat est ... noir, que je fasse l'insertion en une fois ou en
deux.
Après divers tests, il semblerait que le phénomène apparaît quand je fais
Clic droit -> Propriétés -> Habillage -> Derrière le texte, ce qui correspond
à l'instruction : .ZOrder msoSendBehindText.
Je ne suis pas sûr d'avoir moins de mémoire sur mon Eee Box que sur le PC du
bureau, donc je ne vois pas pourquoi ça me fait ça. J'essayerai demain au
bureau mais l'insertion d'une image de papier à en-tête au boulot ne me
provoquait pas ce noir.



Moins de mémoire, peut être pas... ENcore que 1Go, ce n'est pas
énorme... Mais c'est plutôt du côté de la carte graphique que ça doit
pêcher.

Circé

Geo a écrit :
Bonjour

Au bureau, en insérant le fichier de papier à en-tête à la main, je
n'avais pas le problème.



Et à la maison, vous n'avez pas essayé à la main ?





Avatar
Geo
Bonjour

Si si, le résultat est ... noir,



C'est rassurant.

que je fasse l'insertion en une fois ou en deux.


En fait je partais sur l'hypothèse que votre papier avait en réalité un
pied de page et un en-tête, rien au milieu.
En scindant les deux on aurait peut-être allégé la taille du fichier.

Après divers tests, il semblerait que le phénomène apparaît quand je fais Clic droit ->
Propriétés -> Habillage -> Derrière le texte, ce qui correspond à l'instruction :
.ZOrder msoSendBehindText.



C'est aussi, au moins en partie, la fonction ConvertToShape.

Je ne suis pas sûr d'avoir moins de mémoire sur mon Eee Box que sur le PC du bureau,
donc je ne vois pas pourquoi ça me fait ça. J'essayerai demain au bureau mais
l'insertion d'une image de papier à en-tête au boulot ne me provoquait pas ce noir.



Peut-être la mémoire allouée au programme de fax.
Un fax est envoyé sous forme de points, le document est donc converti
au moins page par page.
Le phénomène constaté fait bien penser à une limite de taille mémoire
atteinte, voire dépassée.

Quel suspens insoutenable jusqu'à demain !

--
A+
Avatar
Demokos
Merci Circé,
Quand vous dites "Mais c'est plutôt du côté de la carte graphique que ça
doit pêcher.", je pense que vous avez raison. A la maison, je travaille
sur l'Eee Box en 1680 x 1050, alors qu'au bureau je suis en 1280 x 1024.
J'ai essayé de ramener la résolution sur l'Eee Box en 1280 x 1024 et, si
la barre noire existe toujours, elle couvre moins de surface. Il y a
donc de grandes chances que ce soit bien là la cause du problème.

Circé a écrit :
Bonjour,

Demokos a utilisé son clavier pour écrire :
Si si, le résultat est ... noir, que je fasse l'insertion en une fois
ou en deux.
Après divers tests, il semblerait que le phénomène apparaît quand je
fais Clic droit -> Propriétés -> Habillage -> Derrière le texte, ce
qui correspond à l'instruction : .ZOrder msoSendBehindText.
Je ne suis pas sûr d'avoir moins de mémoire sur mon Eee Box que sur le
PC du bureau, donc je ne vois pas pourquoi ça me fait ça. J'essayerai
demain au bureau mais l'insertion d'une image de papier à en-tête au
boulot ne me provoquait pas ce noir.



Moins de mémoire, peut être pas... ENcore que 1Go, ce n'est pas
énorme... Mais c'est plutôt du côté de la carte graphique que ça doit
pêcher.

Circé

Geo a écrit :
Bonjour

Au bureau, en insérant le fichier de papier à en-tête à la main, je
n'avais pas le problème.



Et à la maison, vous n'avez pas essayé à la main ?









1 2