Sauvegarder et restaurer des valeurs personnalisées par programme avec VBA
Lorsque vous utilisez le mode Save defined cell values only, XLS Padlock vous permet de sauvegarder et restaurer des valeurs personnalisées en plus des valeurs de cellules prédéfinies. Cela est utile pour enregistrer des variables, des paramètres ou des données qui ne sont pas directement stockés dans une cellule.
Aperçu
Section titled “Aperçu”Cette fonctionnalité repose sur deux événements VBA et deux fonctions de l’API VBA. Vous placez du code dans les sous-routines d’événement pour lire ou écrire vos données personnalisées lorsque l’utilisateur charge ou enregistre son travail.
Événements et fonctions principaux
Section titled “Événements et fonctions principaux”Événements VBA
Section titled “Événements VBA”Les deux sous-routines d’événement suivantes doivent être placées dans un module de votre classeur Excel. XLS Padlock les appellera automatiquement pendant le processus de sauvegarde et de chargement.
' Called when a user loads a save file.Sub XLSPadlock_RestoreCustomValues() ' Your code to read values goes here. MsgBox ("Restoring custom values...")End Sub
' Called when a user saves their work.Sub XLSPadlock_SaveCustomValues() ' Your code to write values goes here. MsgBox ("Saving custom values...")End SubFonctions de l’API VBA
Section titled “Fonctions de l’API VBA”- WriteCustomCellValue(UniqueID, Value) : écrit une valeur de chaîne unique associée à un identifiant unique.
- ReadCustomCellValue(UniqueID, DefaultValue) : lit une valeur de chaîne unique pour un identifiant donné. Si l’identifiant n’est pas trouvé, la fonction renvoie la
DefaultValue.
Lecture et écriture de valeurs uniques
Section titled “Lecture et écriture de valeurs uniques”Voici comment écrire une valeur unique :
Sub XLSPadlock_SaveCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object XLSPadlock1.WriteCustomCellValue "MySetting", "MyValue"End SubEt voici comment la relire :
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim MySettingValue As String MySettingValue = XLSPadlock1.ReadCustomCellValue("MySetting", "Default")End SubLecture de toutes les valeurs sous forme de dictionnaire
Section titled “Lecture de toutes les valeurs sous forme de dictionnaire”Vous pouvez également lire toutes les valeurs personnalisées enregistrées d’un coup en passant une chaîne vide comme identifiant à ReadCustomCellValue. Cela renvoie un objet Scripting.Dictionary.
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim Dict As Object ' Scripting.Dictionary Set Dict = XLSPadlock1.ReadCustomCellValue("", "")
If Not Dict Is Nothing Then For Each Key In Dict.Keys MsgBox "Key: " & Key & ", Value: " & Dict(Key) Next Key End IfEnd SubExemple complet : sauvegarde/restauration d’une colonne
Section titled “Exemple complet : sauvegarde/restauration d’une colonne”Cette fonction d’assistance génère une chaîne séparée par des virgules à partir des valeurs d’une plage de cellules donnée.
Function CsvRange(myRange As Range) As String Dim csvRangeOutput As String Dim entry As Variant For Each entry In myRange If Not IsEmpty(entry.Value) Then csvRangeOutput = csvRangeOutput & entry.Value & "," End If Next If Len(csvRangeOutput) > 0 Then CsvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) End IfEnd FunctionCet événement est appelé lorsque l’utilisateur enregistre son travail. Il utilise la fonction d’assistance pour convertir l’intégralité de la plage utilisée de la colonne A en une seule chaîne et l’enregistre.
Sub XLSPadlock_SaveCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim rng As Range Set rng = ThisWorkbook.Worksheets(2).Range("A1").CurrentRegion
Dim myString As String myString = CsvRange(rng)
XLSPadlock1.WriteCustomCellValue "MyEntireColumnA", myStringEnd SubCet événement est appelé lorsque l’utilisateur charge un fichier de sauvegarde. Il lit la chaîne et restaure les valeurs dans la colonne A.
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim Val As String Val = XLSPadlock1.ReadCustomCellValue("MyEntireColumnA", "")
If Val <> "" Then Dim r As Range, i As Long, ar Set r = ThisWorkbook.Worksheets(2).Range("A:A") r.ClearContents
ar = Split(Val, ",") For i = 0 To UBound(ar) r.Cells(i + 1, 1).Value = ar(i) Next End IfEnd Sub
## See Also
- [How to migrate user data from a previous version](excel-vba-migrate-user-data-updates)