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

liste des signets pour controle

6 réponses
Avatar
gege
Bonjour,
J'ai cr=E9e un mod=E8le dans lequelle il y a pleins de=20
signets. Lors de la cr=E9ation des documents =E0 partir de ce=20
mod=E8le certains utilisateurs supprime sans le vouloir=20
quelques signets, ce qui me pose des probl=E8mes apr=E8s.
Existe il un moyen par vba de creer une liste des signets=20
existant dans le modele, pour pouvoir controler=20
l'existance dans le document creer a partir de celui ci.

Ex : modele.dot contient 10 signets
le document toto.doc fait a partir de ce mod=E8le contient=20
plus que 5 signets. =20
Comment signaler a l'utilisateur qu'il a supprimer 5 de=20
ces foutus signets ??=20

J'ai un bout de code mais ne focntionne pas :

Public Sub Count_Signet()
Dim Tableau_Signets() As String
Dim intNumBookmarks As Integer
Dim Signets As String

intNumBookmarks =3D ActiveDocument.Bookmarks.Count
ReDim Tableau_Signets(intNumBookmarks)

Set myTemplate =3D ActiveDocument.AttachedTemplate

For i =3D 0 To intNumBookmarks
' Signets =3D ActiveDocument.AttachedTemplate.Bookmarks
(i).Name '=3D=3D=3D=3D=3D> ici ne fonctionne pas ..=20

' =3D=3D=3D> le reste fonctionne

Signets =3D ActiveDocument.Bookmarks(i).Name
Tableau_Signets(i ) =3D Signets
MsgBox Tableau_Signets(i)

Next i


Set myTemplate =3D Nothing

End Sub

6 réponses

Avatar
Anacoluthe
Bonjour !

'gege' nous a écrit ...
Existe il un moyen par vba de creer une liste des signets


Voyez dans la FAQ
http://faqword.free.fr/articles.php?lng=fr&pga

Votre macro mélange collection, tableau et items.
Mieux qu'une liste, on pourrait facilement faire une macro
comparant les signets du documents à ceux du modèle pour
signaler ceux qui manquent. Si vous n'y arrivez pas revenez :
y'a plein de macroteurs bénévoles sur ce forum !

Anacoluthe
« Ô mon âme, mets un signet au livre d'heures »
- Albert SAMAIN

Avatar
gege
Merci pour cette réponse rapide !!!

Mieux qu'une liste, on pourrait facilement faire une macro
comparant les signets du documents à ceux du modèle pour
signaler ceux qui manquent. Si vous n'y arrivez pas
revenez :


C'est exactement ce que je veux faire :-))))))
La liste des signets dans le doc actif, je peux faire mais
le comparer avec le modèle je sèche....

Ô macroteurs si vous pouvez m'aider !!!! svppppppp


-----Message d'origine-----
Bonjour !

'gege' nous a écrit ...
Existe il un moyen par vba de creer une liste des
signets



Voyez dans la FAQ
http://faqword.free.fr/articles.php?lng=fr&pga

Votre macro mélange collection, tableau et items.
Mieux qu'une liste, on pourrait facilement faire une macro
comparant les signets du documents à ceux du modèle pour
signaler ceux qui manquent. Si vous n'y arrivez pas
revenez :

y'a plein de macroteurs bénévoles sur ce forum !

Anacoluthe
« Ô mon âme, mets un signet au livre d'heures »
- Albert SAMAIN
.




Avatar
Anacoluthe
Bonjour !

'gege' nous a écrit ...
C'est exactement ce que je veux faire :-))))))
La liste des signets dans le doc actif, je peux faire mais
le comparer avec le modèle je sèche....
Ô macroteurs si vous pouvez m'aider !!!! svppppppp


Allez vite fait un début sur le gaz :

Public Sub VerifierSignets()
' Affiche les signets du modèle attaché
' qui manquent dans le document actif

Dim MonDocument As Document
Dim MonModele As Document
Dim Signet As Bookmark
Dim Manquants As String

Set MonDocument = ActiveDocument
Set MonModele = MonDocument.AttachedTemplate.OpenAsDocument
MonDocument.Activate

If MonModele.Bookmarks.Count = 0 Then Exit Sub

For Each Signet In MonModele.Bookmarks
If Not MonDocument.Bookmarks.Exists(Signet.Name) Then _
Manquants = Manquants & Signet.Name & vbCr
Next Signet

If Manquants = "" Then
Manquants = "Aucun signet manquant !"
Else: Manquants = "Il manque le(s) signet(s)" & vbCr & Manquants
End If

MsgBox Manquants, vbExclamation, "Vérification des signets"

MonModele.Close
Set MonDocument = Nothing
Set MonModele = Nothing
Set Signet = Nothing
End Sub


Anacoluthe
« Ô mon âme, mets un signet au livre d'heures »
- Albert SAMAIN

Avatar
Geo
Bonjour Anacoluthe et gégé

Si c'est que pour dire "n signets supprimés"
le count suffit qu'on compare à la valeur théorique connue du programmeur.
on peut bien sûr faire une escalade dans les sanctions:

si un seul signet modifié :
msgbox "c'est bon pour cette fois mais n'y revenez plus"
si entre deux et quatre :
"Faites une heure supplémentaire gratuite"
au dessus : "Regardez la star ac pendant une heure et faire un résumé
(minium trois mots) demain matin".

--

A+
Avatar
Anacoluthe
Hello !

'Geo' nous a écrit ...
on peut bien sûr faire une escalade dans les sanctions:
au dessus : "Regardez la star ac pendant une heure et faire un résumé
(minimum trois mots) demain matin".


Non ça tu peux pas.
C'est interdit par toutes les conventions collectives
:-D

A+
A~

Avatar
gege
A tous (Geo, Anacoluthe...)

Un grand merci, je pataugais dans la choucroute!!
Avec le code d'anacoluthe je vais pouvoir bosser
correctement et pour les sanctions de Geo c'est vrai que
tu es dur :-)) mais des fois les utilisateurs
mériteraient qu'on les obligent a regarder Star Ac ou
autres niaiseries de tele realité..

Merci encore

-----Message d'origine-----
Bonjour !

'gege' nous a écrit ...
C'est exactement ce que je veux faire :-))))))
La liste des signets dans le doc actif, je peux faire
mais


le comparer avec le modèle je sèche....
Ô macroteurs si vous pouvez m'aider !!!! svppppppp


Allez vite fait un début sur le gaz :

Public Sub VerifierSignets()
' Affiche les signets du modèle attaché
' qui manquent dans le document actif

Dim MonDocument As Document
Dim MonModele As Document
Dim Signet As Bookmark
Dim Manquants As String

Set MonDocument = ActiveDocument
Set MonModele =
MonDocument.AttachedTemplate.OpenAsDocument

MonDocument.Activate

If MonModele.Bookmarks.Count = 0 Then Exit Sub

For Each Signet In MonModele.Bookmarks
If Not MonDocument.Bookmarks.Exists(Signet.Name) Then _
Manquants = Manquants & Signet.Name & vbCr
Next Signet

If Manquants = "" Then
Manquants = "Aucun signet manquant !"
Else: Manquants = "Il manque le(s) signet(s)" & vbCr &
Manquants

End If

MsgBox Manquants, vbExclamation, "Vérification des
signets"


MonModele.Close
Set MonDocument = Nothing
Set MonModele = Nothing
Set Signet = Nothing
End Sub


Anacoluthe
« Ô mon âme, mets un signet au livre d'heures »
- Albert SAMAIN
.