Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Detection et elimination de sections complète dans document word!

2 réponses
Avatar
Gregory Hilaire
Bien le bonjour le groupe,

Je débute en VBA pour Word, je dois pourvoir un formulaire de certaines
fonctionnalités qui permettent de le rendre plus convivial et surtout "plus
vert" (moins de papier à imprimer). Les utilisateurs voudraient pouvoir
enlever ( ou ajouter ) à volonté des sections du document simplement en
cliquant sur un bouton...

Je cherche un moyen par VBA de détecter de manière spécifique une section et
d'en ajouter ... Toute aide où début de piste dans cette direction sera
bienvenue!

Un gros merci d'avance

Greg

2 réponses

Avatar
Geo
Bonjour à Gregory Hilaire qui nous a écrit :

Je débute en VBA pour Word, je dois pourvoir un formulaire de certaines fonctionnalités
qui permettent de le rendre plus convivial et surtout "plus vert" (moins de papier à
imprimer). Les utilisateurs voudraient pouvoir enlever ( ou ajouter ) à volonté des
sections du document simplement en cliquant sur un bouton...

Je cherche un moyen par VBA de détecter de manière spécifique une section et d'en
ajouter ... Toute aide où début de piste dans cette direction sera bienvenue!



Un document est une collection (terme précis en VBA) de sections (terme
précis dans Word) .
Les Section ont un index dans l'ordre où elles se présentent :
Sections(1), sections(2) etc.
Le "s" de Sections est important, Sections désigne la collection des
sections du document, alors que Section n'en désigne qu'une.
On peut donc faire :
Dim MaSection As Section
Set MaSection = ActiveDocument.Sections(2)

Une section est délimitée par la fin de section qui précède (ou le
début du document) et sa propre fin, la fin de la section qui précède
ne fait pas partie de cette section.

Tout ça c'était un peu pour remplir la page.
Après il faut plus précisément décrire ce que vous voulez faire.
Supprimer une section c'est facile, on en supprime le contenu :
MaSection.Range.Delete
Tous les autres numéros de sections sont décalées d'autant.
Malheureusement on ne peut pas donner de noms aux sections, il faut
donc suivre les numéros.

En ajouter une l'est un peu moins,
ActiveDocument.Sections.Add Range:=MaPlage
a pour effet d'ajouter une saut de section avant MaPlage, mais n'en
ajoute pas après.

voilà de quoi amorcer la pompe.

--
A+
Avatar
Gregory Hilaire
Un très Gros merci Géo! Cela m'a tellement dépanner que je suis parti à une
vitesse telle que cela m'a pris du temps pour revenir te dire UN GROS MERCI.
Cela m'a donné des idées assez payantes. Vue que les bloc a effacer ne
correspondaient pas toujours à des sections Word, j'ai utilisé la technique
suivante j'ai mis des signets pour marquer les parties pouvant changer et
j'ai concocté une procédure pour effacer entre les deux ... Mille mercis

Sub EffacerEntre(SigDeb As String, SigFin As String, IsTab As Boolean)
Dim X As Long, Y As Long
Dim Plage As Range

With ActiveDocument
.Unprotect Password:=MotDePasse ' Avec la protection aucune édition
n'est possible
X = .Bookmarks(SigDeb).Start
Y = .Bookmarks(SigFin).End
Set Plage = .Range(Start:=X, End:=Y)

'Plage.Select 'pas necessaire
If IsTab Then
Plage.Rows.Delete
Else
Plage.Delete
End If

.Protect Password:=MotDePasse, NoReset:=True,
Type:=wdAllowOnlyFormFields
End With

End Sub

A très bientôt

Greg

"Geo" a écrit dans le message de news:

Bonjour à Gregory Hilaire qui nous a écrit :

Je débute en VBA pour Word, je dois pourvoir un formulaire de certaines
fonctionnalités qui permettent de le rendre plus convivial et surtout
"plus vert" (moins de papier à imprimer). Les utilisateurs voudraient
pouvoir enlever ( ou ajouter ) à volonté des sections du document
simplement en cliquant sur un bouton...

Je cherche un moyen par VBA de détecter de manière spécifique une section
et d'en ajouter ... Toute aide où début de piste dans cette direction
sera bienvenue!



Un document est une collection (terme précis en VBA) de sections (terme
précis dans Word) .
Les Section ont un index dans l'ordre où elles se présentent :
Sections(1), sections(2) etc.
Le "s" de Sections est important, Sections désigne la collection des
sections du document, alors que Section n'en désigne qu'une.
On peut donc faire :
Dim MaSection As Section
Set MaSection = ActiveDocument.Sections(2)

Une section est délimitée par la fin de section qui précède (ou le début
du document) et sa propre fin, la fin de la section qui précède ne fait
pas partie de cette section.

Tout ça c'était un peu pour remplir la page.
Après il faut plus précisément décrire ce que vous voulez faire.
Supprimer une section c'est facile, on en supprime le contenu :
MaSection.Range.Delete
Tous les autres numéros de sections sont décalées d'autant.
Malheureusement on ne peut pas donner de noms aux sections, il faut donc
suivre les numéros.

En ajouter une l'est un peu moins,
ActiveDocument.Sections.Add Range:=MaPlage
a pour effet d'ajouter une saut de section avant MaPlage, mais n'en ajoute
pas après.

voilà de quoi amorcer la pompe.

--
A+