Une simplicité déconcertante...
J'ai testé la solution de mémorisation des infos dans une collection de type Variable dans un document. Oubliez mon message précédent.
Il faut mémoriser par couple d'infos : Info 1 : le nom de la variable, info 2 : sa valeur. Ici, je me suis servi d'une matrice pour récupérer les informations.
Pour injecter les infos :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Option Explicit
Sub MemorisationDesInformationsAvecMacro1(ByVal DocEnCours As Document, ByVal MesInfos As Variant)
Dim Numero As Integer
With DocEnCours
For Numero = LBound(MesInfos) To UBound(MesInfos) Step 2
.Variables.Add Name:=MesInfos(Numero), Value:=MesInfos(Numero + 1)
Next Numero
End With
End Sub
Sub EssaiMemoAvecMacro1()
Dim MonDocument As Document
Dim I As Integer
Dim MonMemo As Variant
MonMemo = Array("Info1", "Valeur Info1", "Info2", "Valeur Info2", "Info3", "Valeur Info3", "Info4", "Valeur Info4")
Set MonDocument = Documents.Add
With MonDocument
I = 4
MemorisationDesInformationsAvecMacro1 MonDocument, MonMemo
.SaveAs2 FileName:="Doc avec mémo " & I & ".docm"
.Close savechanges:=True
End With
Set MonDocument = Nothing
End Sub |
Pour récupérer les infos contenues dans la collection du document créé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Sub RecupInfosAvecMacro2()
Dim MonDocument As Document
Dim MatriceInfos() As Variant
Dim I As Integer
Dim PresenceInfos As Boolean
Dim MesInfosStockees As String
' Lecture
PresenceInfos = False
Set MonDocument = ActiveDocument
With MonDocument
If .Variables.Count > 0 Then
PresenceInfos = True
ReDim MatriceInfos(.Variables.Count - 1, 1)
For I = 1 To .Variables.Count
MatriceInfos(I - 1, 0) = .Variables(I).Name
MatriceInfos(I - 1, 1) = .Variables(I).Value
Next I
End If
End With
Set MonDocument = Nothing
' Restitution
MesInfosStockees = ""
If PresenceInfos = True Then
For I = LBound(MatriceInfos, 1) To UBound(MatriceInfos, 1)
MesInfosStockees = MesInfosStockees & MatriceInfos(I, 0) & " : " & MatriceInfos(I, 1) & Chr(10)
Next I
MsgBox MesInfosStockees, vbInformation, "Infos stockées dans la collection Variables"
Else
MsgBox "Aucune information stockée dans le document !", vbInformation, "Infos stockées dans la collection Variables"
End If
End Sub |