Microsoft Word Page Sources

Microsoft Word Page SourcesConsultez toutes les sources
Nombre d'auteurs : 5, nombre de sources : 7, création le 1er octobre 2007
Sommaire→DiversCes différentes procédures et fonctions vont vous venir en aide pour la gestion des variables de document.
'---------------------------------------------------------------------------------------
' Procédure : AddMyVar [Function]
' Retour : Boolean
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Ajouter une variable
' : Si la variable existe et bUpdateIfExists = true :
' : => Mise à jour de sa valeur
' Historique :
'---------------------------------------------------------------------------------------
Public Function AddMyVar(ByVal sNom As String, ByVal sText As String, _
Optional bUpdateIfExists As Boolean = True) As Boolean
On Error Resume Next
ActiveDocument.Variables.Add sNom, sText
If err = 5903 Then 'La variable existe déjà
If bUpdateIfExists Then
err.Clear
ActiveDocument.Variables(sNom).Value = sText
End If
End If
If err = 0 Then AddMyVar = True
End Function
'---------------------------------------------------------------------------------------
' Procédure : LetMyVar [Function]
' Retour : Boolean
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Mettre à jour une variable
' : Si la variable n'existe pas et bAddIfNotExists = True :
' : => Ajoute la variable
' Historique :
'---------------------------------------------------------------------------------------
Public Function LetMyVar(ByVal sNom As String, ByVal sText As String, _
Optional bAddIfNotExists As Boolean = True) As Boolean
On Error Resume Next
Dim lIdx As Long
lIdx = ActiveDocument.Variables(sNom).Index
If err = 0 Then
ActiveDocument.Variables(lIdx).Value = sText
ElseIf err = 5825 Then 'La variable n'existe pas
If bAddIfNotExists Then
err.Clear
ActiveDocument.Variables.Add sNom, sText
End If
End If
If err = 0 Then LetMyVar = True
End Function
'---------------------------------------------------------------------------------------
' Procédure : IsMyVar [Function]
' Retour : Boolean
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Vérifier si une variable existe ou non
' : Argument : Index ou Nom de la variable
' Historique :
'---------------------------------------------------------------------------------------
Public Function IsMyVar(ByVal vItem As Variant) As Boolean
On Error Resume Next
IsMyVar = (ActiveDocument.Variables(vItem).Index > 0)
If err = 5825 Then err.Clear 'La variable n'existe pas
End Function
'---------------------------------------------------------------------------------------
' Procédure : DelMyVar [Function]
' Retour : Boolean
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Supprime une variable par son nom ou son index
' Historique :
'---------------------------------------------------------------------------------------
Public Function DelMyVar(ByVal vItem As Variant) As Boolean
On Error Resume Next
ActiveDocument.Variables(vItem).Delete
If err = 0 Then
DelMyVar = True
Else
err.Clear
End If
End Function
'---------------------------------------------------------------------------------------
' Procédure : DelAllMyVars [Function]
' Retour : Boolean
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Supprimer toutes les variables
' Historique :
'---------------------------------------------------------------------------------------
Public Function DelAllMyVars() As Boolean
On Error GoTo errtag
While ActiveDocument.Variables.Count
ActiveDocument.Variables(1).Delete
Wend
DelAllMyVars = True
Exit Function
errtag:
MsgBox "L'erreur n°" & err & " est survenue...", vbExclamation, "DelAllMyVars()"
Resume Next
End Function
'---------------------------------------------------------------------------------------
' Procédure : GetValueMyVar [Function]
' Retour : String
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Récupérer le contenu de la variable par son nom ou son index
' : Si elle n'existe pas, retourne la valeur par défaut ou une chaine vide
' Historique :
'---------------------------------------------------------------------------------------
Private Function GetValueMyVar(ByVal vItem As Variant, _
Optional ByVal sDefaut As String) As String
On Error Resume Next
GetValueMyVar = ActiveDocument.Variables(vItem).Value
If err Then
If err = 5825 Then err.Clear
GetValueMyVar = sDefaut
End If
End Function
'---------------------------------------------------------------------------------------
' Procédure : GetIndexMyVar [Function]
' Retour : Long
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Récupérer l'index de la variable par son nom
' Historique :
'---------------------------------------------------------------------------------------
Public Function GetIndexMyVar(ByVal sNom As String) As Long
On Error Resume Next
GetIndexMyVar = ActiveDocument.Variables(sNom).Index
If err = 5825 Then err.Clear
End Function
'---------------------------------------------------------------------------------------
' Procédure : GetNomMyVar [Function]
' Retour : String
' Version : 1.0
' Création/Maj : Le samedi 12 janvier 2008
' Objet : Récupérer le nom de la variable par son index
' Historique :
'---------------------------------------------------------------------------------------
Public Function GetNomMyVar(ByVal lIndex As Long) As String
On Error Resume Next
GetNomMyVar = ActiveDocument.Variables(lIndex).Name
If err = 5825 Then err.Clear
End Function
Ce bout de code permet de copier les propriétés personnelles d'un document à l'autre.
Les documents sources et cibles sont obtenus par l'ouverture d'une boîte de dialogue.
Sub copierProprietes()
'Déclaration des variables
' Boîte de dialogue ouverture de fichier
Dim oDlg As FileDialog
'Tableau liste des propriétés
Dim lstProp() As String
'Documents cible et source
Dim oDocSource As Document
Dim oDocCible As Document
'Entier pour l'adresse du tableau
Dim intP As Integer
'Affectation des valeurs aux variables
Set oDlg = Application.FileDialog(msoFileDialogFilePicker)
With oDlg
.Title = "Choisissez la source !"
.Show
End With
'Affectation de l'objet document avec le chemin de la source
'renvoyé par l'objet FileDialog
Set oDocSource = Documents.Open(FileName:=oDlg.SelectedItems(1))
With oDlg
.Title = "Choisissez la cible !"
.Show
End With
Set oDocCible = Documents.Open(FileName:=oDlg.SelectedItems(1))
'Test sur le nombre de propriétés trouvées
'Si pas de propriétés on continue le code à l'étiquette PasDeProp
If oDocSource.CustomDocumentProperties.Count = 0 Then GoTo PasDeProp
'dimentionnement du tableau en fonction du nombre de propriétés trouvées
ReDim lstProp(oDocSource.CustomDocumentProperties.Count, 2)
'Boucle sur les propriétés du document pour récupérer les données
For intP = 1 To oDocSource.CustomDocumentProperties.Count
lstProp(intP - 1, 1) = oDocSource.CustomDocumentProperties(intP).Name
Debug.Print oDocSource.CustomDocumentProperties(intP).Value & " -- " & lstProp(intP - 1, 1)
lstProp(intP - 1, 2) = oDocSource.CustomDocumentProperties(intP).Value
Next intP
'Écriture des propriétés dans le document cible
For intP = 0 To UBound(lstProp, 2)
oDocCible.CustomDocumentProperties.Add Name:=lstProp(intP, 1), LinkToContent:=False, Value:=lstProp(intP, 2), Type:=msoPropertyTypeString
Next intP
oDocCible.Save
Debug.Print oDocCible.CustomDocumentProperties.Count
PasDeProp:
'Fermeture et libération des objets.
Set oDlg = Nothing
oDocSource.Close
Set oDocSource = Nothing
oDocCible.Close
Set oDocCible = Nothing
End Sub

