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 16/02/2011, 08h49   #1
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Par défaut Rechercher/remplacer saut de page

Bonjour,
voilà j'aimerais remplacer les sauts de sections de mon document par des sauts de page.

J'ai essayé ça :
Code :
1
2
3
4
5
6
7
For Each myRange In ActiveDocument.StoryRanges
     With myRange.Find
         .Text = "^b"
         .Replacement.Text = "^m"
     End With
     myRange.Find.Execute Replace:=wdReplaceAll
Next myRange
Mais une erreur (Argument non facultatif) survient sur le .Find

Avez vous une idée ?
Merci
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 09h05   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

As-tu essayé de passer par l'enregistreur de macro ?
__________________
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/02/2011, 10h21   #3
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Oui l'enregistreur me donne ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^b"
        .Replacement.Text = "^m"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
On me donne une erreur sur la première ligne :
''Nombre d'arguments incorrects ou affection à une propriété incorrecte''

En réalité j'effectue du publipostage puis je fusionne les documents créés.
La meilleure solution serait de faire un publipostage avec des sauts de page(manuel) à la place des sauts de section.
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 10h53   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

Pourrais-tu nous expliquer un peu plus ?
Peut-être existe-t-il une autre solution.
__________________
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/02/2011, 11h41   #5
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Voilà je dois générer un document de test "général" pour cela j'ai créé des documents "type" pour chaque test à effectuer (Test Vanne, Test Moteur...).

Pour chaque document je fais mon publipostage, puis je rassemble tout les documents de test dans le document général.

Le problème lorsque je fais le publipostage, un saut de section s'effectue à chaque nouvel élément.
Exemple : Un saut de section entre la vanne1 et la vanne2

Et donc la numérotation des sous-titre recommence tout le temps à 1.1.1 (ce que le saut de page fait pas !)

Donc les solutions serait soit
1.- De générer le publipostage avec des sauts de page
2.- Remplacer par la suite les sauts de section -> en sauts de page

J'espère avoir été clair.
Merci
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h08   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

Peut-être une piste ?

Code :
1
2
3
4
5
6
7
8
9
 
Sub NumerotationPage()
Dim mys As Section
 
For Each mys In ActiveDocument.Sections
mys.Footers(wdHeaderFooterPrimary).PageNumbers.RestartNumberingAtSection = False
Next mys
 
End Sub
Changer le format de numérotation pour chaque section.
__________________
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/02/2011, 15h02   #7
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Salut,
merci de ta réponse. La numérotation des pages fonctionne grâce à toi maintenant, mais la numérotation des titres n'est toujours pas bonne.

J'ai essayé d'adapter ton code pour cibler la numérotation des titres mais je ne suis pas arrivé.

Je cherche, je cherche.
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 15h52   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

Peut-être comme ça ?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Sub NumerotationTitre()
Dim oPar As Paragraph
 
For Each oPar In ActiveDocument.Paragraphs
If Left(oPar.Style, 5) = "Headi" Then
oPar.Range.Select
 
Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries( _
        wdOutlineNumberGallery).ListTemplates(2), ContinuePreviousList:=True, _
        ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:= _
        wdWord10ListBehavior
End If
Next oPar
 
 
 
End Sub
__________________
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 17/02/2011, 07h59   #9
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Salut,

non aucun changement. Mais je ne comprends pas cette ligne, a quoi elle sert ? :
Code :
If Left(oPar.Style, 5) = "Headi" Then
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h45   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

Récupérer tous les styles dont le nom commence par Headi, comme Heading 1, Heading 2, Heading 3 qui sont normalement les titres d'un document, sauf si le style utilisé pour la numérotation est différent.
Dans ce cas, il faut changer le critère de recherche.
__________________
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 18/02/2011, 14h14   #11
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Une solution serait d'aller en fin de chaque page du document et de suprimer le saut de section et ensuite de faire un saut de page.
Je n'arrive pas a faire la programmation mais ce serait genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub SautPage
Dim wPage as Page
 
For Each Page In ActiveDocument
    With appWord.Selection
    .HomeKey Unit:=wdStory
    .EndKey Unit:=wdEndOfSection '------->Marche pas, je sais pas quoi mettre
    .Delete Unit:=wdCharacter, Count:=1
'ou 
    .TypeBackspace
    .InsertBreak Type:=wdPageBreak
    End With
Next wPage
 
End Sub

Voilà un truc de ce style ! C'est faisable ?
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 15h35   #12
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
En réalité comme je veux supprimer les sauts de section, ce serait pour chaque section au lieu de chaque page !
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 15h04   #13
Invité régulier
 
Homme
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 17
Points : 5
Points : 5
Voilà finalement j'ai réussi à faire un rechercher/remplacer des sauts de section en sauts de page comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
With appWord.Selection.Find
        .Text = "^b"
        .Replacement.Text = "^m"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    appWord.Selection.Find.Execute Replace:=wdReplaceAll
    appWord.ActiveWindow.ActivePane.VerticalPercentScrolled = 0
Mais un nouveau problème survient ensuite : les textes des champs se trouvant dans l'en-têtes et le pied de page ont sauté. Et les champs ont repris leur "statut".
Exemple : Avant le rechercher/remplacer j'avais le texte "Usine130" puis
il redevient «Projet» (mais en format texte).

Merci pour votre aide
eugiba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web