Dans une procédure visant à supprimer tous les paragraphes vides d'un
document, je souhaite concerver les paragraphes qui contiennent des sauts
(page, section, colonne).
Ce que je sais faire : Compter les sauts sur une page :
Set objBreaks = ActiveDocument.ActiveWindow.Panes(1).Pages(Compt).Breaks
NbSaut = objBreaks.count
Ce que j'e n'arrive pas à faire :
- définir le type du saut (wdPageBreak, wdSectionBreakNextPage...)
- définir le numéro du paragraphe qui contient le saut
Ma procédure passe en revue tous les paragraphes, mais ne les sélectionne
pas.
Ce que je cherche à faire :
If ActiveDocument.Paragraphs(X) ....contient saut de type.... then
Je travaille avec la version 2003 de Word
en partant de la fin, je trouve comme valeur : 0, 0, 2, 0, 0, 2
Ce qui veut dire que SectionStart, pour un même type (continu), renvoi une fois 0, une fois 2
Pourquoi ?
a+
"Geo" a écrit dans le message de news:
Bonsoir
Voici le résultat guère encourageant, d'une série d'essai.
PageBreakBefore retourne toujours zéro. La seule façon de savoir s'il y a un saut de page serait donc un caractère à 12 et que le paragraphe qui suit est dans le même section que celui qui précède. Pas pratique mais efficace. Pour savoir dans quelle section est un paragraphe : MonParagraphe.Range.Sections(1).index
Tous les paragraphes d'une section ont la même valeur pour PageSetup.SectionStart, y compris l'éventuel caractère de saut de section qui est en fin de section. La nouvelle section ne commence qu'au paragraphe suivant.
Bien qu'ayant mis un saut de colonne, je n'ai pas pu obtenir la valeur correspondante.
La première section a pour valeur : page impaire, je ne vois pas pourquoi.
Saut continu a l'air bien détecté.
Testé aussi sur 2010 avec les mêmes résultats, j'ai fait remonter le problème.
bon courage.
-- A+
Bonjour
Je crois que je suis tombé vraiment sur un os...
Sur un nouveau document, j'ai inséré successivement :
Un paragraphe vide
Un saut de section continu
Un paragraphe vide
Un saut de section continu
Un paragraphe vide
Un saut de section page suivante
Et la même succession sur la deuxième page
Je détermine dans quelle section se trouve le paragraphe :
X = ThisDocument.Paragraphs(A).Range.Sections(1).Index
Quand je cherche la valeur du saut par l'instruction suivante,
en partant de la fin, je trouve comme valeur : 0, 0, 2, 0, 0, 2
Ce qui veut dire que SectionStart, pour un même type (continu), renvoi une
fois 0, une fois 2
Pourquoi ?
a+
"Geo" <Geo@sans.pub> a écrit dans le message de news:
mn.e5027da10aff2124.41568@sans.pub...
Bonsoir
Voici le résultat guère encourageant, d'une série d'essai.
PageBreakBefore retourne toujours zéro.
La seule façon de savoir s'il y a un saut de page serait donc un caractère
à 12 et que le paragraphe qui suit est dans le même section que celui qui
précède. Pas pratique mais efficace.
Pour savoir dans quelle section est un paragraphe :
MonParagraphe.Range.Sections(1).index
Tous les paragraphes d'une section ont la même valeur pour
PageSetup.SectionStart, y compris l'éventuel caractère de saut de section
qui est en fin de section. La nouvelle section ne commence qu'au
paragraphe suivant.
Bien qu'ayant mis un saut de colonne, je n'ai pas pu obtenir la valeur
correspondante.
La première section a pour valeur : page impaire, je ne vois pas pourquoi.
Saut continu a l'air bien détecté.
Testé aussi sur 2010 avec les mêmes résultats, j'ai fait remonter le
problème.
en partant de la fin, je trouve comme valeur : 0, 0, 2, 0, 0, 2
Ce qui veut dire que SectionStart, pour un même type (continu), renvoi une fois 0, une fois 2
Pourquoi ?
a+
"Geo" a écrit dans le message de news:
Bonsoir
Voici le résultat guère encourageant, d'une série d'essai.
PageBreakBefore retourne toujours zéro. La seule façon de savoir s'il y a un saut de page serait donc un caractère à 12 et que le paragraphe qui suit est dans le même section que celui qui précède. Pas pratique mais efficace. Pour savoir dans quelle section est un paragraphe : MonParagraphe.Range.Sections(1).index
Tous les paragraphes d'une section ont la même valeur pour PageSetup.SectionStart, y compris l'éventuel caractère de saut de section qui est en fin de section. La nouvelle section ne commence qu'au paragraphe suivant.
Bien qu'ayant mis un saut de colonne, je n'ai pas pu obtenir la valeur correspondante.
La première section a pour valeur : page impaire, je ne vois pas pourquoi.
Saut continu a l'air bien détecté.
Testé aussi sur 2010 avec les mêmes résultats, j'ai fait remonter le problème.
bon courage.
-- A+
MiMa
Bonjour
Merci pour ce bout de code.
Il répond au but recherché en laissant effectivement les différents sauts en place.
Mais il me laisse sur mes interrogations sur la façon de gérer les sauts.
Encore merci
Cordialement
"michdenis" a écrit dans le message de news:
Est-ce que ceci fait le travail ?
'------------------------------------- Sub Supprimer_Paragraphes() Dim Nb As Long, A As Long Nb = ThisDocument.Paragraphs.Count For A = Nb To 1 Step -1 With ThisDocument.Paragraphs If InStr(1, .Item(A).Range.Text, _ Chr(12), vbTextCompare) > 0 Then If Len(Trim(.Item(A).Range.Text)) = 2 Then 'Afficher le message n'est pas obligatoire ! MsgBox "paragraphe avec un saut de page" End If Else If Len(Trim(.Item(A).Range.Text)) = 1 Then .Item(A).Range.Delete End If End If End With Next End Sub '-------------------------------------
"Mima" a écrit dans le message de groupe de discussion : e299# C'est vrai que la programation dans Excel est bien plus facile...Mais cela n'empêche pas de relever des défits ! J'ai réussi à 90% ce que je voulais obtenir. Il me reste à traiter ce problème de saut de page ou de section. Quand on utilise l'enregistreur de macro , il donne le type de saut. Il doit bien avoir un moyen de faire l'inverse et de faire renvoyer par macro ce type d'information. Encore merci pour votre aide a+
"Geo" a écrit dans le message de news:
Bonjour
Non, je ne peux pas uitiliser la méthode Rechercher/Remplacer car je veux conserver la mise en page originale. Pour cela, avant de supprimer un paragraphe vide, je récupère les valeurs "espace avant", "espace après", "taille de la police" du paragraphe et j'injecte la somme de ces valeurs soit au paragraphe précédent, soit au suivant en fonction des circonstances (début ou fin de document, tableau...). Voilà pourquoi je cherche à récuperer les sauts et leurs propriétés afin de pouvoir, soit garder le paragraphe lié, soit remettre les saut en bonne place.
Ah ! oui .... Vous êtes sur de ne pas vouloir passer à Excel ? Parce que là au moins la taille des cases est fixe. J'ai peur que vous ne suiviez les pas de Sisyphe. A toutes fins utiles je vous signale la propriété Range.Information, avec la valeur wdVerticalPositionRelativeToPage, elle vous donne la position du texte dans la page. Ça vous permettra au moins de vérifier que les texte est au bon endroit.
-- A+
Bonjour
Merci pour ce bout de code.
Il répond au but recherché en laissant effectivement les différents sauts
en place.
Mais il me laisse sur mes interrogations sur la façon de gérer les sauts.
Encore merci
Cordialement
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
C2C56E8F-9B9A-4D65-A616-BF545B8E61B5@microsoft.com...
Est-ce que ceci fait le travail ?
'-------------------------------------
Sub Supprimer_Paragraphes()
Dim Nb As Long, A As Long
Nb = ThisDocument.Paragraphs.Count
For A = Nb To 1 Step -1
With ThisDocument.Paragraphs
If InStr(1, .Item(A).Range.Text, _
Chr(12), vbTextCompare) > 0 Then
If Len(Trim(.Item(A).Range.Text)) = 2 Then
'Afficher le message n'est pas obligatoire !
MsgBox "paragraphe avec un saut de page"
End If
Else
If Len(Trim(.Item(A).Range.Text)) = 1 Then
.Item(A).Range.Delete
End If
End If
End With
Next
End Sub
'-------------------------------------
"Mima" <nonspamecemima@voila.fr> a écrit dans le message de groupe de
discussion :
e299#7CoKHA.4648@TK2MSFTNGP06.phx.gbl...
C'est vrai que la programation dans Excel est bien plus facile...Mais cela
n'empêche pas de relever des défits !
J'ai réussi à 90% ce que je voulais obtenir. Il me reste à traiter ce
problème de saut de page ou de section.
Quand on utilise l'enregistreur de macro , il donne le type de saut.
Il doit bien avoir un moyen de faire l'inverse et de faire renvoyer par
macro ce type d'information.
Encore merci pour votre aide
a+
"Geo" <Geo@sans.pub> a écrit dans le message de news:
mn.e3c97da1e96ab4e8.41568@sans.pub...
Bonjour
Non, je ne peux pas uitiliser la méthode Rechercher/Remplacer car je
veux
conserver la mise en page originale.
Pour cela, avant de supprimer un paragraphe vide, je récupère les
valeurs
"espace avant", "espace après", "taille de la police" du paragraphe et
j'injecte la somme de ces valeurs soit au paragraphe précédent, soit au
suivant en fonction des circonstances (début ou fin de document,
tableau...).
Voilà pourquoi je cherche à récuperer les sauts et leurs propriétés afin
de pouvoir, soit garder le paragraphe lié, soit remettre les saut en
bonne place.
Ah ! oui ....
Vous êtes sur de ne pas vouloir passer à Excel ? Parce que là au moins la
taille des cases est fixe.
J'ai peur que vous ne suiviez les pas de Sisyphe.
A toutes fins utiles je vous signale la propriété Range.Information, avec
la valeur wdVerticalPositionRelativeToPage, elle vous donne la position
du
texte dans la page.
Ça vous permettra au moins de vérifier que les texte est au bon endroit.
Il répond au but recherché en laissant effectivement les différents sauts en place.
Mais il me laisse sur mes interrogations sur la façon de gérer les sauts.
Encore merci
Cordialement
"michdenis" a écrit dans le message de news:
Est-ce que ceci fait le travail ?
'------------------------------------- Sub Supprimer_Paragraphes() Dim Nb As Long, A As Long Nb = ThisDocument.Paragraphs.Count For A = Nb To 1 Step -1 With ThisDocument.Paragraphs If InStr(1, .Item(A).Range.Text, _ Chr(12), vbTextCompare) > 0 Then If Len(Trim(.Item(A).Range.Text)) = 2 Then 'Afficher le message n'est pas obligatoire ! MsgBox "paragraphe avec un saut de page" End If Else If Len(Trim(.Item(A).Range.Text)) = 1 Then .Item(A).Range.Delete End If End If End With Next End Sub '-------------------------------------
"Mima" a écrit dans le message de groupe de discussion : e299# C'est vrai que la programation dans Excel est bien plus facile...Mais cela n'empêche pas de relever des défits ! J'ai réussi à 90% ce que je voulais obtenir. Il me reste à traiter ce problème de saut de page ou de section. Quand on utilise l'enregistreur de macro , il donne le type de saut. Il doit bien avoir un moyen de faire l'inverse et de faire renvoyer par macro ce type d'information. Encore merci pour votre aide a+
"Geo" a écrit dans le message de news:
Bonjour
Non, je ne peux pas uitiliser la méthode Rechercher/Remplacer car je veux conserver la mise en page originale. Pour cela, avant de supprimer un paragraphe vide, je récupère les valeurs "espace avant", "espace après", "taille de la police" du paragraphe et j'injecte la somme de ces valeurs soit au paragraphe précédent, soit au suivant en fonction des circonstances (début ou fin de document, tableau...). Voilà pourquoi je cherche à récuperer les sauts et leurs propriétés afin de pouvoir, soit garder le paragraphe lié, soit remettre les saut en bonne place.
Ah ! oui .... Vous êtes sur de ne pas vouloir passer à Excel ? Parce que là au moins la taille des cases est fixe. J'ai peur que vous ne suiviez les pas de Sisyphe. A toutes fins utiles je vous signale la propriété Range.Information, avec la valeur wdVerticalPositionRelativeToPage, elle vous donne la position du texte dans la page. Ça vous permettra au moins de vérifier que les texte est au bon endroit.
-- A+
michdenis
| Mais il me laisse sur mes interrogations sur la | façon de gérer les sauts.
Tu retrouves le code publié dans ce message à cette adresse sous la plume de Helmut Weber.
Tu copies ce qui suit dans un module standard. '--------------------------------------------- Sub test012() Dim rDcm As Range ' the documents range Set rDcm = ActiveDocument.Range Selection.StartOf Unit:=wdStory, Extend:=wdMove With Selection.Find .Text = Chr(12) While .Execute MsgBox KindofBreak12(Selection.Range) Wend End With 'wdSectionContinuous ' 0 'wdSectionNewColumn ' 1 'wdSectionNewPage ' 2 'wdSectionEvenPage ' 3 'wdSectionOddPage '4
End Sub '--------------------------------------------- Public Function KindofBreak12(ByVal rTmp As Range) As String Dim lSct1 As Long ' counter for sections Dim lSct2 As Long ' counter for sections Dim lKoSc As Long ' kind of section.pagesetup.sectionstart rTmp.Start = ActiveDocument.Range.Start lSct1 = rTmp.Sections.Count ' count sections rTmp.End = rTmp.End + 1 ' extend range lSct2 = rTmp.Sections.Count ' count sections again If lSct1 = lSct2 Then ' next caracter is in the same section KindofBreak12 = "ordinary page break" Exit Function End If ' next character is in the next section lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart Select Case lKoSc Case 0: KindofBreak12 = "wdSectionContinuous" Case 2: KindofBreak12 = "wdSectionNewPage" Case 3: KindofBreak12 = "wdSectionEvenPage" Case 4: KindofBreak12 = "wdSectionOddPage" End Select
End Function '---------------------------------------------
| Mais il me laisse sur mes interrogations sur la
| façon de gérer les sauts.
Tu retrouves le code publié dans ce message à
cette adresse sous la plume de Helmut Weber.
Tu copies ce qui suit dans un module standard.
'---------------------------------------------
Sub test012()
Dim rDcm As Range ' the documents range
Set rDcm = ActiveDocument.Range
Selection.StartOf Unit:=wdStory, Extend:=wdMove
With Selection.Find
.Text = Chr(12)
While .Execute
MsgBox KindofBreak12(Selection.Range)
Wend
End With
'wdSectionContinuous ' 0
'wdSectionNewColumn ' 1
'wdSectionNewPage ' 2
'wdSectionEvenPage ' 3
'wdSectionOddPage '4
End Sub
'---------------------------------------------
Public Function KindofBreak12(ByVal rTmp As Range) As String
Dim lSct1 As Long ' counter for sections
Dim lSct2 As Long ' counter for sections
Dim lKoSc As Long ' kind of section.pagesetup.sectionstart
rTmp.Start = ActiveDocument.Range.Start
lSct1 = rTmp.Sections.Count ' count sections
rTmp.End = rTmp.End + 1 ' extend range
lSct2 = rTmp.Sections.Count ' count sections again
If lSct1 = lSct2 Then ' next caracter is in the same section
KindofBreak12 = "ordinary page break"
Exit Function
End If
' next character is in the next section
lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart
Select Case lKoSc
Case 0: KindofBreak12 = "wdSectionContinuous"
Case 2: KindofBreak12 = "wdSectionNewPage"
Case 3: KindofBreak12 = "wdSectionEvenPage"
Case 4: KindofBreak12 = "wdSectionOddPage"
End Select
End Function
'---------------------------------------------
Tu copies ce qui suit dans un module standard. '--------------------------------------------- Sub test012() Dim rDcm As Range ' the documents range Set rDcm = ActiveDocument.Range Selection.StartOf Unit:=wdStory, Extend:=wdMove With Selection.Find .Text = Chr(12) While .Execute MsgBox KindofBreak12(Selection.Range) Wend End With 'wdSectionContinuous ' 0 'wdSectionNewColumn ' 1 'wdSectionNewPage ' 2 'wdSectionEvenPage ' 3 'wdSectionOddPage '4
End Sub '--------------------------------------------- Public Function KindofBreak12(ByVal rTmp As Range) As String Dim lSct1 As Long ' counter for sections Dim lSct2 As Long ' counter for sections Dim lKoSc As Long ' kind of section.pagesetup.sectionstart rTmp.Start = ActiveDocument.Range.Start lSct1 = rTmp.Sections.Count ' count sections rTmp.End = rTmp.End + 1 ' extend range lSct2 = rTmp.Sections.Count ' count sections again If lSct1 = lSct2 Then ' next caracter is in the same section KindofBreak12 = "ordinary page break" Exit Function End If ' next character is in the next section lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart Select Case lKoSc Case 0: KindofBreak12 = "wdSectionContinuous" Case 2: KindofBreak12 = "wdSectionNewPage" Case 3: KindofBreak12 = "wdSectionEvenPage" Case 4: KindofBreak12 = "wdSectionOddPage" End Select
End Function '---------------------------------------------
Geo
Bonsoir
Je crois que je suis tombé vraiment sur un os...
C'est sûr.
je ne reproduis pas votre cas, mais il ne faut pas oublier que le caractère de saut de section appartient à la section précédente. Donc le caractère de saut continu peut avoir code : NewPage.
Par contre en faisant votre exercice je suis tombé sur un autre cas marrant.
Soit le document suivant : http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie : mettez un saut continu immédiatement suivi d'un saut nouvelle page. Supprimer le saut nouvelle page, c'est le saut continu qui disparaît. Et là on n'est plus en vba.
Bon courage
-- A+
Bonsoir
Je crois que je suis tombé vraiment sur un os...
C'est sûr.
je ne reproduis pas votre cas, mais il ne faut pas oublier que le
caractère de saut de section appartient à la section précédente.
Donc le caractère de saut continu peut avoir code : NewPage.
Par contre en faisant votre exercice je suis tombé sur un autre cas
marrant.
Soit le document suivant :
http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie :
mettez un saut continu immédiatement suivi d'un saut nouvelle page.
Supprimer le saut nouvelle page, c'est le saut continu qui disparaît.
Et là on n'est plus en vba.
je ne reproduis pas votre cas, mais il ne faut pas oublier que le caractère de saut de section appartient à la section précédente. Donc le caractère de saut continu peut avoir code : NewPage.
Par contre en faisant votre exercice je suis tombé sur un autre cas marrant.
Soit le document suivant : http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie : mettez un saut continu immédiatement suivi d'un saut nouvelle page. Supprimer le saut nouvelle page, c'est le saut continu qui disparaît. Et là on n'est plus en vba.
Bon courage
-- A+
MiMa
Génial, mais je ne risquais pas de trouver tout seul !!!! En fouillant dans l'aide de Word et les forums, je n'ai jamais réussi à trouver ce genre d'explications ! Merci à tous les deux pour cet échange passionant. J'ai réussi à intégrer la ligne de code qui teste le car(12) et ma procédure fonctionne à priori comme je le souhaite. Reste à faire un certain nombre de tests pour débusquer des bugs éventuels. Encore merci Cordialement
"michdenis" a écrit dans le message de news:
| Mais il me laisse sur mes interrogations sur la | façon de gérer les sauts.
Tu retrouves le code publié dans ce message à cette adresse sous la plume de Helmut Weber.
Tu copies ce qui suit dans un module standard. '--------------------------------------------- Sub test012() Dim rDcm As Range ' the documents range Set rDcm = ActiveDocument.Range Selection.StartOf Unit:=wdStory, Extend:=wdMove With Selection.Find .Text = Chr(12) While .Execute MsgBox KindofBreak12(Selection.Range) Wend End With 'wdSectionContinuous ' 0 'wdSectionNewColumn ' 1 'wdSectionNewPage ' 2 'wdSectionEvenPage ' 3 'wdSectionOddPage '4
End Sub '--------------------------------------------- Public Function KindofBreak12(ByVal rTmp As Range) As String Dim lSct1 As Long ' counter for sections Dim lSct2 As Long ' counter for sections Dim lKoSc As Long ' kind of section.pagesetup.sectionstart rTmp.Start = ActiveDocument.Range.Start lSct1 = rTmp.Sections.Count ' count sections rTmp.End = rTmp.End + 1 ' extend range lSct2 = rTmp.Sections.Count ' count sections again If lSct1 = lSct2 Then ' next caracter is in the same section KindofBreak12 = "ordinary page break" Exit Function End If ' next character is in the next section lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart Select Case lKoSc Case 0: KindofBreak12 = "wdSectionContinuous" Case 2: KindofBreak12 = "wdSectionNewPage" Case 3: KindofBreak12 = "wdSectionEvenPage" Case 4: KindofBreak12 = "wdSectionOddPage" End Select
End Function '---------------------------------------------
Génial, mais je ne risquais pas de trouver tout seul !!!!
En fouillant dans l'aide de Word et les forums, je n'ai jamais réussi à
trouver ce genre d'explications !
Merci à tous les deux pour cet échange passionant.
J'ai réussi à intégrer la ligne de code qui teste le car(12) et ma procédure
fonctionne à priori comme je le souhaite. Reste à faire un certain nombre de
tests pour débusquer des bugs éventuels.
Encore merci
Cordialement
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
2DBF8AEF-0B2E-4914-90FF-FA1C560DBCB1@microsoft.com...
| Mais il me laisse sur mes interrogations sur la
| façon de gérer les sauts.
Tu retrouves le code publié dans ce message à
cette adresse sous la plume de Helmut Weber.
Tu copies ce qui suit dans un module standard.
'---------------------------------------------
Sub test012()
Dim rDcm As Range ' the documents range
Set rDcm = ActiveDocument.Range
Selection.StartOf Unit:=wdStory, Extend:=wdMove
With Selection.Find
.Text = Chr(12)
While .Execute
MsgBox KindofBreak12(Selection.Range)
Wend
End With
'wdSectionContinuous ' 0
'wdSectionNewColumn ' 1
'wdSectionNewPage ' 2
'wdSectionEvenPage ' 3
'wdSectionOddPage '4
End Sub
'---------------------------------------------
Public Function KindofBreak12(ByVal rTmp As Range) As String
Dim lSct1 As Long ' counter for sections
Dim lSct2 As Long ' counter for sections
Dim lKoSc As Long ' kind of section.pagesetup.sectionstart
rTmp.Start = ActiveDocument.Range.Start
lSct1 = rTmp.Sections.Count ' count sections
rTmp.End = rTmp.End + 1 ' extend range
lSct2 = rTmp.Sections.Count ' count sections again
If lSct1 = lSct2 Then ' next caracter is in the same section
KindofBreak12 = "ordinary page break"
Exit Function
End If
' next character is in the next section
lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart
Select Case lKoSc
Case 0: KindofBreak12 = "wdSectionContinuous"
Case 2: KindofBreak12 = "wdSectionNewPage"
Case 3: KindofBreak12 = "wdSectionEvenPage"
Case 4: KindofBreak12 = "wdSectionOddPage"
End Select
End Function
'---------------------------------------------
Génial, mais je ne risquais pas de trouver tout seul !!!! En fouillant dans l'aide de Word et les forums, je n'ai jamais réussi à trouver ce genre d'explications ! Merci à tous les deux pour cet échange passionant. J'ai réussi à intégrer la ligne de code qui teste le car(12) et ma procédure fonctionne à priori comme je le souhaite. Reste à faire un certain nombre de tests pour débusquer des bugs éventuels. Encore merci Cordialement
"michdenis" a écrit dans le message de news:
| Mais il me laisse sur mes interrogations sur la | façon de gérer les sauts.
Tu retrouves le code publié dans ce message à cette adresse sous la plume de Helmut Weber.
Tu copies ce qui suit dans un module standard. '--------------------------------------------- Sub test012() Dim rDcm As Range ' the documents range Set rDcm = ActiveDocument.Range Selection.StartOf Unit:=wdStory, Extend:=wdMove With Selection.Find .Text = Chr(12) While .Execute MsgBox KindofBreak12(Selection.Range) Wend End With 'wdSectionContinuous ' 0 'wdSectionNewColumn ' 1 'wdSectionNewPage ' 2 'wdSectionEvenPage ' 3 'wdSectionOddPage '4
End Sub '--------------------------------------------- Public Function KindofBreak12(ByVal rTmp As Range) As String Dim lSct1 As Long ' counter for sections Dim lSct2 As Long ' counter for sections Dim lKoSc As Long ' kind of section.pagesetup.sectionstart rTmp.Start = ActiveDocument.Range.Start lSct1 = rTmp.Sections.Count ' count sections rTmp.End = rTmp.End + 1 ' extend range lSct2 = rTmp.Sections.Count ' count sections again If lSct1 = lSct2 Then ' next caracter is in the same section KindofBreak12 = "ordinary page break" Exit Function End If ' next character is in the next section lKoSc = ActiveDocument.Sections(lSct2).PageSetup.SectionStart Select Case lKoSc Case 0: KindofBreak12 = "wdSectionContinuous" Case 2: KindofBreak12 = "wdSectionNewPage" Case 3: KindofBreak12 = "wdSectionEvenPage" Case 4: KindofBreak12 = "wdSectionOddPage" End Select
End Function '---------------------------------------------
Geo
Bonjour
Par contre en faisant votre exercice je suis tombé sur un autre cas marrant.
Soit le document suivant : http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie : mettez un saut continu immédiatement suivi d'un saut nouvelle page. Supprimer le saut nouvelle page, c'est le saut continu qui disparaît.
Sur 2010, c'est encore pire, un saut de section *précédent* change de nature ! Réponse des développeurs : trop tard pour le corriger. :'(
-- A+
Bonjour
Par contre en faisant votre exercice je suis tombé sur un autre cas marrant.
Soit le document suivant :
http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie :
mettez un saut continu immédiatement suivi d'un saut nouvelle page.
Supprimer le saut nouvelle page, c'est le saut continu qui disparaît.
Sur 2010, c'est encore pire, un saut de section *précédent* change de
nature !
Réponse des développeurs : trop tard pour le corriger.
:'(
Par contre en faisant votre exercice je suis tombé sur un autre cas marrant.
Soit le document suivant : http://cjoint.com/?bDwttMv4Y2
On copie/colle un saut continu et on récupère un saut nouvelle page.
Autre anomalie : mettez un saut continu immédiatement suivi d'un saut nouvelle page. Supprimer le saut nouvelle page, c'est le saut continu qui disparaît.
Sur 2010, c'est encore pire, un saut de section *précédent* change de nature ! Réponse des développeurs : trop tard pour le corriger. :'(