cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014
-
11 sept. 2006 à 10:56
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014
-
14 sept. 2006 à 10:06
Hello
Je dois faire un script qui permet de remplacer un logo dans l'entête d'un document word par un autre et je ne sais pas du tout par où commencer et comment partir.
Vos propositions sont les bienvenues.
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 11 sept. 2006 à 12:00
Bonjour
Il existe 2 problématiques dans ta formulation
- Accès à l'entête d'un document (activeDocument.ActivePane.View.SeekView = wdSeekCurrentPageHeader)
- remplacer dans une zone du document une image (si le logo n'est pas inclus dans un champ du type "IncludePicture" avec liaison, ou dans un signet (Bookmark), ce sera difficile de remplacer un logo par un autre)
Mais la problématique du remplacement du logo est t'elle une problématique administrateur ou utilisateur?
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 11 sept. 2006 à 14:45
Ce n'est surtout pas une solution complète mais des éléments techniques à creuser : bon courage car il reste beaucoup de travail
Je rajoute ceci pour aider 3 techniques
1- le Bookmark pour marquer la zone logo (pour ensuite le remplacer),
2- l'insertion d'image (CHAMP IncludePicture ou methode Shape)
3- la recherche de Shape ou de champ INCLUDE Picture (pour ensuite remplacer l'objet)
1- Pour remplacer un logo inclus dans un signet "Logo" :
If ActiveDocument.Bookmarks.Exists("Logo") Then
ActiveDocument.bookmarks("Logo").Select
'Selection.Delete 'suprimer avant d'insérer = remplacer
2 - insérer une image
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"INCLUDEPICTURE ""c:\\logo.bmp"" \d ", PreserveFormatting:=True
'ou
Dim ils as Word.InLineShape
Dim objShapes as Shapes
Set ils = Selection.InlineShapes.AddPicture(FileName:="C:\newlogo.bmp", LinkToFile:=False, SaveWithDocument:=True)
ils.Height = 100
ils.Width = 100
3- rechercher les éléments CHAMP ou GRAPHIQUE insérés dans un document
il faut créer une forme avec deux Listbox et des bouton OK , Annuler
' il doit être possible de parcourir les éléments Shapes avec une recherche du type, il faut ensuite Appeler une fenetre avec 2 listbox , la 1ère listebox contenant tous les objets shape du document et la 2ème listbox qui contient tous les logos possibles
For Each s In ActiveDocument.Shapes
If s.Type = msoPicture Then
' à tester
ListBox1.Add s.LinkFormat.SourceName
End If
If s.Type = msoLinkedPicture then
Listbox1.Add s.LinkFormat.SourceName
End if
Next
Dim oFolder
Dim ofso
Set ofso = CreateObject("Scripting.FileSystemObject")
If oFSo.folderexists("c:\logos") Then
Set oFolder = oFSo.GetFolder("c:\logos")
For Each oFile In oFolder.Files
Listbox2.Add oFile.Name
Next
End if
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014 12 sept. 2006 à 09:36
J'ai testé ce que tu m'avais proposé mais j'ai un soucis lorsque je dois la remplacer.
Le gars qui a généré ces documents word (et qui s'est fait virer d'ailleurs) les a générés avec une entête qui a une marge de gauche réduite et sous forme de modèle word avec l'iimage originale en dehors de l'entête mais dans le cadre à marge réduite.
Du coup lorsque je colle l'image il me la met dans l'entête et dans le cadre et ça fait qu'il y à un espace vide à gauche.
J'ai essayé de régler cela avec le top et le left mais ça le met au coin gauche du cadre toujours.
Et sinon merci !
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 12 sept. 2006 à 10:01
L'image est collé dans l'entête, c'est ce que tu souhaitez.
Cependant il reste un espace vide à gauche, peux-tu le sélectionner facilement à la souris et demander sa suppression : si c'est toujours le cas, tu peux faire une macro avec l'enregistreur de macro pour supprimer cet espace.
Sinon, je ne comprend pas à quoi est du cet espace à gauche.
Il existe aussi une option Word pour accélérer le défilement du document qui génère des espèces sur l'insertion d'image.
Menu :"Outils / Options/ Affichage " : décocher "Espaces pour images"
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014 12 sept. 2006 à 10:59
Oui elle est dans l'entête mais avec l'espace elle est presque au milieu de la page alors qu'il faudrait qu'elle soit collée au bord gauche de la page.
En fait il a mis des colonnes dans l'entête et le logo que je dois remplacer se trouve à gauche de la colonne de gauche dans la marge c'est un peu spécial si tu veux je t'envoie par mail le fichier.
Cet espace a été mis en place par mon prédécesseur donc aucune idée pourquoi il a fait ça comme ça.
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 12 sept. 2006 à 11:31
S'il s'agit d'un tableau et qu'il faut rentrer dans la première cellule
pour aligner un paragraphe
Activedocument.Paragraphs.Alignment = wdAlignParagraphLeft
Si première cellule (col=1)de la première ligne d'un tableau (Row=1)
Row= 1
Col=1
ActiveDocument.Tables(1).Cells(Row,Col).Range.Select
selection.ParagraphFormat.Alignment= wdAlignParagraphLeft
Je ne tiens pas du tout à mettre mon email sur le net
Essayons de continuer comme ça
en fait le logo que je rajoute est dans le tableau mais le tableau commence à qqes centimètres du bord il faudrait que je puisse ramener le début de ce tableau plus à gauche.
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014 12 sept. 2006 à 15:38
Re.
En fait il faudrait pouvoir faire comme si tu vas voir sur le logo click-droit
-> Format de l'image... -> Habillage -> Avancé
-> Positionnement de l'image Horizontale -> Position absolue -2.31cm à droite de Colonne
et
-> Positionnement de l'image Verticale -> Position absolue -0.19cm au-dessous du Paragraphe
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 12 sept. 2006 à 16:13
Tu es rentré dans l'entete avant les 2 lignes
Dans ton doc final Ce que j_obtient.doc si j'éxécute le code ci-dessous cela me semble bien sympatique mais si je l'exéctue dans ton doc original cela n'est pas ce qui est recherché mais je ne sais pas pourquoi
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.Tables(1).Select
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014 13 sept. 2006 à 08:20
Et sais-tu comment définir ces valeurs en VBA :
-> Format de l'image... -> Habillage -> Avancé
-> Positionnement de l'image Horizontale -> Position absolue -2.31cm à droite de Colonne
Je crois que si j'arrive à les définirs pour le logo que j'insère le problème sera résolu.
cs_akaii
Messages postés109Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention14 février 2014 13 sept. 2006 à 11:48
C'est tout bon j'ai pu faire ce que je voulais faire.
Je tenais à te remercier particulièrement ça faisait 5 ans que j'avais plus fait de VB6 et VBA et la remise dans le bain n'aurait pas été autant rapide sans ton aide.