Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2007, 18h29   #1
Invité régulier
 
Inscription : avril 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 12
Points : 6
Points : 6
Par défaut Sélection effacement de la première page d'un document

Bonjour,

Malgré 4h d'essais infructueux, je n'ai pas réussi à trouver tout seul une réponse ^^.Voici mon problème, qui n'est pas monstrueux en plus.

Je possède un Document A, et un document B. Je désire une macro capable d'effacer la première page du document B, lorsqu'on lance la macro depuis le document A... Simple non ?
Et pourtant...


Actuellement, j'ai réussi péniblement à obtenir ça :
Code :
1
2
3
4
5
6
7
8
9
10
 
sub EffacePage
 
Dim objWord As New Word.Application
 
Set objWord = CreateObject("Word.Application")
   With objWord
   .WordBasic.DisableAutoMacros 1
   .Visible = True
   .Documents.Open ActiveDocument.Path & "\test\DocB.rtf"
Ce bout de code sert à ouvrir mon document B.
Mais ensuite... je n'arrive pas à effectuer des choses dessus, le document 'actif' reste le document A.
J'ai essayé des choses barbares du genre ( attention les yeux , âme sensible s'abstenir )

Code :
Set Doc = .Documents.Open ActiveDocument.Path & "\test\DocB.rtf"
, et d'ensuite de lancer mes recherches sur l'objet 'Doc'

Mais il y a quelque chose d'énorme qui m'échappe dans cette syntaxe VBA :-)


C'est un premier aspect du problème.

Le second aspect du problème consiste à sélectionner la première page de mon document... J'arrive à sélectionner des paragraphes, des lignes, des caractères... mais pas de page
J'ai fouillé du côté de PageNumbers, mais sans succès. D'après lecture d'une dizaine de topics en rapport sur ce forum, ce n'est pas si évident que ça les numéros de page :-).

Je décide alors d'attaquer le problème par un autre angle :
Dans ma problématique, je connais exactement le contenu de cette première page que j'essaie d'enlever. J'ai donc essayé une recherche du type "*Fin_de_ma_première_page", qui commencerait au début de mon document. Avec "Fin_de-ma-première-page" les caractères qui figurent à la fin de ma première page.... Et je me suis heurté au premier problème -_-


En résumé, quelqu'un pourrait-il m'expliquer comment
1) Ouvrir mon document B de façon à ce que je puisse en faire quelque chose après
2) Sélectionner la page numéro X de mon document WORD, à défaut la toute première page :-)
3) Le 2) est propre, mais me semble compliqué => comment puis-je lancer une recherche qui me renvoie une sélection de tout ce qui se trouve entre le début de mon document et une chaîne de caractère Fin-de-ma-première-page.
Bien entendu, il y a aussi des images sur cette fameuse page de garde, que je désire enlever dans la foulée.

En vous remerciant par avance.
vincent_phi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 22h55   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Tu dois chercher dans les InLinesShapes.

Je parviens à les compter, mais je n'ai pas encore trouvé comment y entrer !
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 12h02   #3
Invité régulier
 
Inscription : avril 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 12
Points : 6
Points : 6
Apparement, j'ai trouvé quelque chose qui permet de sélectionner , dieu soit loué, la première page du document:

Code :
1
2
Dim objPage As Paga
Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages.Item(1)
Mais ça ne règle pas le problème de pouvoir effectuer une opération sur un document que j'ouvre.

Code :
Set Doc=objWord.ActiveDocument règle ce problème
=> je suis sur la bonne voie

EDIT:
Mouais, ça sélectionne pas la première page, mais la première image ...
vincent_phi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 16h04   #4
Invité régulier
 
Inscription : avril 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 12
Points : 6
Points : 6
Bon, j'ai réussi bidouiller une solution finale.
La fameuse page de présentation que je voulais enlever se compose d'une image, puis de quelques lignes de texte.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
Dim objWord As New Word.Application
Dim Doc As Document
 
 
   'Là, on va ouvrir tous les fichiers sur lesquels on veut enlever la page de garde
 
   Set Search = Application.FileSearch
   With Search
   .FileName = "*.rtf"
   .LookIn = ActiveDocument.Path & "\SRS"       '1
   .Execute
 
For i = 1 to .FoundFiles.Count
   Set objWord = CreateObject("Word.Application")
   With objWord
      .WordBasic.DisableAutoMacros 1
      .Visible = False
      .Documents.Open Search.FoundFiles(i)
   Set Doc = objWord.ActiveDocument
 
'On a ouvert le fichier, et on est dedans
' on enlève la première image du début du fichier
 
Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages.Item(1)
   .Selection.Delete
 
'On va enlever les X premières lignes
 
Set Doc = objWord.ActiveDocument  '2
 
Set Range1 = .Selection.Document.Range(.Selection.Document.Paragraphs(1).Range.Start, .Selection.Document.Paragraphs(14).Range.End)
Range1.Delete
EndWith
objWord.Documents(1).Close
objWord.Quit
Set objWord = Nothing  ' libération de la mémoire
 
Next i
End With
End Sub
Citation:
'1: le répertoire où se situe les fichiers que je veux modifier s'appelle chemin_base /SRS, et ce sont tous les fichiers .rtf du répertoire"

'2: Surement moyen de faire autrement, mais c'est la seule façon que j'ai trouvé de mettre le document que j'ai ouvert en objet courant
Voili voilou, je trouve ça plus que bancale, mais ça a l'air de fonctionner
vincent_phi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web