Subdiviser un gros fichier Word
Fermé
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
-
5 janv. 2010 à 11:35
orionis - 11 janv. 2010 à 14:34
orionis - 11 janv. 2010 à 14:34
A voir également:
- Subdiviser un gros fichier Word
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Espace insécable word - Guide
- Ouvrir un fichier .bin - Guide
14 réponses
m@rina
Messages postés
21205
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 décembre 2024
11 370
5 janv. 2010 à 23:31
5 janv. 2010 à 23:31
Bonjour,
Je te propose de faire un recherche-remplace rapide :
Rechercher ta phrase
Remplacer par ta phrase + 1 saut de section
Ensuite, tu appliques cette macro :
https://faqword.com/index.php/faq/vba-solutions/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html
m@rina
Je te propose de faire un recherche-remplace rapide :
Rechercher ta phrase
Remplacer par ta phrase + 1 saut de section
Ensuite, tu appliques cette macro :
https://faqword.com/index.php/faq/vba-solutions/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html
m@rina
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
6 janv. 2010 à 08:20
6 janv. 2010 à 08:20
merci m@rina, je vais tenter ça.
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
6 janv. 2010 à 09:17
6 janv. 2010 à 09:17
Re,
J'ai trouvé comment insérer un saut de section :
Selection.InsertBreak Type:=wdSectionBreakContinuous
J'utilise le code suivant pour remplacer ma chaine 'bla' par 'bla2' (histoire de la distinguer), mais j'ignore comment ajouter à cette chaine 'bla2' le saut de section?
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "bla"
.Replacement.Text = "bla2"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Merci d'avance
J'ai trouvé comment insérer un saut de section :
Selection.InsertBreak Type:=wdSectionBreakContinuous
J'utilise le code suivant pour remplacer ma chaine 'bla' par 'bla2' (histoire de la distinguer), mais j'ignore comment ajouter à cette chaine 'bla2' le saut de section?
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "bla"
.Replacement.Text = "bla2"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Merci d'avance
m@rina
Messages postés
21205
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 décembre 2024
11 370
6 janv. 2010 à 13:21
6 janv. 2010 à 13:21
Bonjour,
Voici une macro qui ajoute après ta phrase un saut de section :
Sub sauts_section()
maphrase = "ceci est ma phrase"
With ActiveDocument.Content.Find
.Execute findtext:=maphrase, Forward:=True
Do While .Execute(findtext:=maphrase, Forward:=True) = True
With .Parent
.StartOf Unit:=wdParagraph, Extend:=wdMove
.InsertBreak Type:=wdSectionBreakContinuous
.Move Unit:=wdParagraph, Count:=1
End With
Loop
End With
m@rina
Voici une macro qui ajoute après ta phrase un saut de section :
Sub sauts_section()
maphrase = "ceci est ma phrase"
With ActiveDocument.Content.Find
.Execute findtext:=maphrase, Forward:=True
Do While .Execute(findtext:=maphrase, Forward:=True) = True
With .Parent
.StartOf Unit:=wdParagraph, Extend:=wdMove
.InsertBreak Type:=wdSectionBreakContinuous
.Move Unit:=wdParagraph, Count:=1
End With
Loop
End With
m@rina
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
6 janv. 2010 à 13:40
6 janv. 2010 à 13:40
Ah oui, rien à voir avec mon code, quand même... :o)
Merci beaucoup, j'essaie ça.
Merci beaucoup, j'essaie ça.
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
6 janv. 2010 à 14:25
6 janv. 2010 à 14:25
Hmm, ça ne fonctionne pas tout à fait comme je voudrais.
'bla' étant la chaine après laquelle je veux scinder mes pages, dans mon fichier original de 2 pages, j'ai les lignes suivantes :
page 1 :
aaaa
bbbb
bla
cccc
page 2 :
dddd
bla
eeee
Je voudrais donc obtenir au final 3 fichiers contenant :
fichier 1 :
aaaa
bbbb
bla
fichier 2 :
cccc
dddd
bla
fichier 3 :
eeee
Or, avec le code proposé, j'obtiens 2 fichiers contenant :
fichier 1 (2 pages):
aaaa
bbbb
bla
cccc
2ème page : dddd
fichier 2 :
bla
eeee
Bizarre...
'bla' étant la chaine après laquelle je veux scinder mes pages, dans mon fichier original de 2 pages, j'ai les lignes suivantes :
page 1 :
aaaa
bbbb
bla
cccc
page 2 :
dddd
bla
eeee
Je voudrais donc obtenir au final 3 fichiers contenant :
fichier 1 :
aaaa
bbbb
bla
fichier 2 :
cccc
dddd
bla
fichier 3 :
eeee
Or, avec le code proposé, j'obtiens 2 fichiers contenant :
fichier 1 (2 pages):
aaaa
bbbb
bla
cccc
2ème page : dddd
fichier 2 :
bla
eeee
Bizarre...
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
7 janv. 2010 à 11:30
7 janv. 2010 à 11:30
j'avance tout doucement, mais je bloque à présent sur ce souci : je parviens bien à trouver ma chaine de recherche, la remplacer par un saut de section, puis à éclater le fichier d'origine en autant de sous-fichiers qu'il existe de sauts.
Mon problème est que la toute première chaine n'est jamais détectée? Voici le code de la partie de recherche/remplacement.
With ActiveDocument.Content.Find
.Execute findtext:=MaPhrase, Forward:=True
Do While .Execute(findtext:=MaPhrase, Forward:=True) = True
With .Parent
.StartOf Unit:=wdWord, Extend:=wdMove
.InsertBreak Type:=wdSectionBreakNextPage
.Move Unit:=wdWord, Count:=1
End With
Loop
End With
D'où cela peut-il provenir?
Mon problème est que la toute première chaine n'est jamais détectée? Voici le code de la partie de recherche/remplacement.
With ActiveDocument.Content.Find
.Execute findtext:=MaPhrase, Forward:=True
Do While .Execute(findtext:=MaPhrase, Forward:=True) = True
With .Parent
.StartOf Unit:=wdWord, Extend:=wdMove
.InsertBreak Type:=wdSectionBreakNextPage
.Move Unit:=wdWord, Count:=1
End With
Loop
End With
D'où cela peut-il provenir?
m@rina
Messages postés
21205
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 décembre 2024
11 370
7 janv. 2010 à 12:57
7 janv. 2010 à 12:57
Bonjour,
Non pas bizarre... J'ai été un peu rapide sur ce coup là !! ;)
Essaie ça :
Non pas bizarre... J'ai été un peu rapide sur ce coup là !! ;)
Essaie ça :
Sub sauts_section2() maphrase = "bla" With ActiveDocument.Content.Find Do While .Execute(findtext:=maphrase, Forward:=True) = True With .Parent .Select .EndOf Unit:=wdWord .InsertBreak Type:=wdSectionBreakContinuous .Move Unit:=wdParagraph, Count:=1 End With Loop End With End Sub
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
7 janv. 2010 à 15:17
7 janv. 2010 à 15:17
Ah oui, ça fonctionne tout de suite beaucoup mieux! :o)
Merci beaucoup pour ton aide.
Merci beaucoup pour ton aide.
orionis
Messages postés
8
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
7 janv. 2010 à 15:23
7 janv. 2010 à 15:23
Il me reste un dernier problème à résoudre : je voudrais identifier les sous-fichiers générés à l'aide d'un code client qui se trouve toujours à la même place : c'est le 1er mot de la 1ère ligne de la section de chaque sous-fichier.
j'ai essayé d'utiliser
CodeClient = ActiveDocument.Paragraphs(1).Range.Words(1)
Mais ça ne fonctionne pas...
j'ai essayé d'utiliser
CodeClient = ActiveDocument.Paragraphs(1).Range.Words(1)
Mais ça ne fonctionne pas...
m@rina
Messages postés
21205
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 décembre 2024
11 370
7 janv. 2010 à 16:35
7 janv. 2010 à 16:35
Re...
Pourtant ton code est bon.... C'est curieux car je l'ai copié-collé (quelquefois il y a une faute qui ne saute pas au nez), et c'est le nom de la variable codeclient qui ne plait pas à Word... Bizarre...
Sinon, s'il s'agit du premier mot du document, on peut aussi faire ceci :
Et là, bizarrement, le nom de ta variable est acceptée !!!
m@rina
Pourtant ton code est bon.... C'est curieux car je l'ai copié-collé (quelquefois il y a une faute qui ne saute pas au nez), et c'est le nom de la variable codeclient qui ne plait pas à Word... Bizarre...
Sinon, s'il s'agit du premier mot du document, on peut aussi faire ceci :
codeclient = ActiveDocument.Words.First
Et là, bizarrement, le nom de ta variable est acceptée !!!
m@rina
bonjour,
désolé pour le retard de la réponse, j'étais un peu bloqué par la neige vendredi!
Ca ne fonctionne malheureusement pas mieux avec le code que tu proposes...
En fait, je n'ai pas besoin du 1er mot du document complet, mais du premier de chaque section constituant les sous-fichiers.
Pour l'instant, j'ai ce code, mais la MsgBox n'affiche rien.
Application.ScreenUpdating = False
Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum
Dim NomClient
Dim myParagraph As Paragraph
For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
NomClient = ActiveDocument.Words.First
MsgBox "nomclient->" & NomClient
ChangeFileOpenDirectory "C:\TEMP\"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".doc"
.Close
End With
Next S
J'ai aussi testé ça, pour tenter de récupérer le 1er mot de chaque paragraphe, mais là non plus, aucun résultat.
Set myParagraph = ActiveDocument.Paragraphs(1)
NomClient = myparagraph.Range.Select.Range.Words(1)
désolé pour le retard de la réponse, j'étais un peu bloqué par la neige vendredi!
Ca ne fonctionne malheureusement pas mieux avec le code que tu proposes...
En fait, je n'ai pas besoin du 1er mot du document complet, mais du premier de chaque section constituant les sous-fichiers.
Pour l'instant, j'ai ce code, mais la MsgBox n'affiche rien.
Application.ScreenUpdating = False
Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum
Dim NomClient
Dim myParagraph As Paragraph
For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
NomClient = ActiveDocument.Words.First
MsgBox "nomclient->" & NomClient
ChangeFileOpenDirectory "C:\TEMP\"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".doc"
.Close
End With
Next S
J'ai aussi testé ça, pour tenter de récupérer le 1er mot de chaque paragraphe, mais là non plus, aucun résultat.
Set myParagraph = ActiveDocument.Paragraphs(1)
NomClient = myparagraph.Range.Select.Range.Words(1)
m@rina
Messages postés
21205
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 décembre 2024
11 370
11 janv. 2010 à 14:31
11 janv. 2010 à 14:31
Bonjour orionis,
Ben oui, mais faut adapter... La variable nomclient ne doit pas être affectée à ActiveDocument mais au sousdoc. Ce qui donnerait :
m@rina
Ben oui, mais faut adapter... La variable nomclient ne doit pas être affectée à ActiveDocument mais au sousdoc. Ce qui donnerait :
Sub SectionsDansDocumentsSéparés2() Application.ScreenUpdating = False Dim SousDoc As Document Dim R As Range Dim S As Section Dim DocNum For Each S In ActiveDocument.Sections Set R = S.Range: R.End = R.End - 1 Set SousDoc = Documents.Add ChangeFileOpenDirectory "C:\TEMP\" With SousDoc .Content = R client = .Words.First .saveas FileName:=client & ".doc" .Close End With Next S Set SousDoc = Nothing Set R = Nothing Set S = Nothing Application.ScreenUpdating = False End Sub
m@rina