Word, supprimer la dernière page sur 200 documents

Word, supprimer la dernière page sur 200 documents - Logiciels - Windows & Software

Marsh Posté le 13-01-2011 à 16:44:03    

Bonjour,
 
Je dois supprimer la page 2/2 sur des centaines de documents word, ces pages sont générés automatiquement par un autre logiciel (je n'ai ni le nom ni la possibilité de mettre la main dessus).
 
Peut-on faire cela en masse ?  
 
Merci

Reply

Marsh Posté le 13-01-2011 à 16:44:03   

Reply

Marsh Posté le 14-01-2011 à 13:31:00    

:bounce:

Reply

Marsh Posté le 14-01-2011 à 14:22:23    

Ca doit pouvoir se faire via un vbscript par exemple.
 
Je teste rapidement et je te poste un truc.

Reply

Marsh Posté le 14-01-2011 à 14:44:25    

Un petit script qui traite tous les fichiers contenus dans un répertoire :
 


' Script VBS qui supprime une page sélectionnée dans tous les fichiers d'un répertoire
 
Dim fso, oWord, f, Compteur, iPageToDelete
Set fso = CreateObject("Scripting.FileSystemObject" )
 
Set objWord = CreateObject("Word.Application" )
objWord.Visible = False
objWord.DisplayAlerts = FALSE  
 
iPageToDelete = 2
 
' Sélection du dossier ou sont stockés les fichiers
BIF_returnonlyfsdirs   = &H0001
BIF_dontgobelowdomain  = &H0002
BIF_editbox            = &H0010
BIF_validate           = &H0020
BIF_browseforcomputer  = &H1000
 
wdGoToPage         = 1
wdGoToLine         = 3
wdGoToAbsolute     = 1
wdGoToRelative     = 2
wdDoNotSaveChanges = 0
wdLine             = 5
wdParagraph        = 4
wdExtend           = 1
 
 
Dim shell, item
Set shell = WScript.CreateObject("Shell.Application" )
flag=BIF_returnonlyfsdirs  
titre="Dossier dans lequel sont stockés les fichiers Word"
Set Item = shell.BrowseForFolder(0,titre,flag, dirinit)
If isvalue(Item) Then
 Result=Item.Title
 
 ' Test si on a sélectionné la racine d'une partition  
 If InStr(1,Result,":" )=0 Then
  Result=Item.ParentFolder.ParseName(Item.Title).Path
  End If
else
 Wscript.quit
End If
 
Compteur = 0
' Traitement des fichiers Word contenus dans le répertoire sélectionné
Set f = fso.GetFolder(Result)
Set fc = f.Files
   For Each f1 in fc
      if StrComp(LCase(Right(f1.Name,4)),".doc",1 ) = 0  Then
   ' Traitement du fichier
   Set objWordFile = objWord.Documents.Open(Result + "\" + f1.Name)  
   objWord.Selection.GoTo(wdGoToPage, wdGoToAbsolute, iPageToDelete).Bookmarks("\Page" ).Range.Delete  
   objWordFile.Save()
  objWordFile.close()  
 Compteur = Compteur + 1
   End If
   Next
 
objWord.Quit  
 
MsgBox Cstr(Compteur) + " fichiers ont été traités."
'--------------------------------------------------------------
' Test de validité de l'objet retourné par BrowseForFolder
' On ne peut pas utiliser "IsObject", qui retourne toujours "true"
Function IsValue(obj)
Dim tmp
On Error Resume Next
tmp = " " & obj
If Err <> 0 Then IsValue = False Else IsValue = True
On Error GoTo 0
End Function


Message édité par ccp6128 le 14-01-2011 à 14:45:24
Reply

Marsh Posté le 18-01-2011 à 13:07:50    

Merci pour cette réponse, j'ai créé le script comme ci dessus mais cela ne fonctionne pas, la page 2 est toujours présente, pourtant le script a bien interagi avec car la date de modification a bien été modifiée.
Il semble que les documents ne soient pas créés de la même manière car pour quelques uns d'entre eux il ne reste plus que la page 1/1 qui est blanche (tout est effacé)

Reply

Marsh Posté le 18-01-2011 à 13:19:14    

L'idéal serait d'adapter le code pour effectuer un "suppr" à la ligne 15 pour retirer la page 2 qui est vide.

Reply

Marsh Posté le 18-01-2011 à 13:24:57    

Si tu peux m'envoyer un modèle de fichier, je pourrai regarder comment il est fait et adapter le script en conséquence.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed