Ma macro peut elle poser des problemes sur les fonction de partage?
Bonjour,
Je ne sais pas trop ou poster ma demande.
Il s'agit de VBA pour libre office...
J'ai peur que mon post tombe aux oubliettes dans Libroffice car j'ai supposé le forum moins axé sur le VBA...
D’avance mes excuses aux modérateurs pour l'insolence de mon initiative! :)
Voilà j'avais le soucis de devoir protéger et déprotéger une feuille du tableur sans avoir à enlever le partage du fichier.
Cela ne se fait que par macro...
J'ai donc ma macro qui fonctionne parfaitement mais avant de la mettre en service auprès de mes collègues, je voudrais m'assurer qu'elle n'impactera pas le fichier.
A savoir que les fonctions de partage ne seront pas altérées par cette macro...
Par exemple, les utilisateurs pourront ils toujours modifier de leurs côtés et sauvegarder....
Je précise que j'ai mis un decalage sur le mot de passe pour ne pas qu'il soit lisible par des novices qui iraient voir la macro...
Pas optimal comme solution mais, je n'ai pas trouvé mieux...
Pouvez vous me dire si mon code vous parait bon et non bloquant sur les fonctions de partage je vous prie?
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
Sub protege()
Dim oSheet As Object
Dim sPassword As String
' Mot de passe (utilise un décalage de caractères)
sPassword = "fxjjekr"
sPassword = DecaleMotDePasse(sPassword, -2)
' Accède à la feuille spécifique
oSheet = ThisComponent.Sheets.getByName("Feuille1")
' Masquer les colonnes F à M
Dim i As Integer
For i = 5 To 12 ' Index des colonnes F à M
oSheet.getColumns().getByIndex(i).IsVisible = False
Next i
' Si la feuille n'est pas protégée, applique la protection
If Not oSheet.IsProtected Then
oSheet.Protect(sPassword)
MsgBox "Feuille1 verrouillé!"
Else
MsgBox "La feuille Feuille1 est déjà protégée."
End If
End Sub
Sub deprotege()
Dim oSheet As Object
Dim sPassword As String
' Accède à la feuille spécifique
oSheet = ThisComponent.Sheets.getByName("Feuille1")
' Si la feuille est protégée
If oSheet.IsProtected Then
' Demande à l'utilisateur d'entrer le mot de passe
sPassword = InputBox("Saisir le mot de passe:")
' Vérifie si le mot de passe est vide
If sPassword = "" Then
MsgBox "Le mot de passe ne peut pas être vide.", vbExclamation
Exit Sub
End If
' Essaye de déprotéger la feuille avec le mot de passe fourni
On Error GoTo ErreurMotDePasse
oSheet.Unprotect(sPassword)
' Afficher les colonnes F à M
Dim i As Integer
For i = 5 To 12 ' Index des colonnes F à M
oSheet.getColumns().getByIndex(i).IsVisible = True
Next i
Else
MsgBox "La feuille n'est pas protégée."
End If
Exit Sub
ErreurMotDePasse:
MsgBox "Mot de passe incorrect.", vbCritical
End Sub
' Fonction pour décaler les lettres du mot de passe
Function DecaleMotDePasse(mdp As String, decalage As Integer) As String
Dim i As Integer
Dim resultat As String
Dim c As String
resultat = ""
' Boucle sur chaque caractère du mot de passe
For i = 1 To Len(mdp)
c = Mid(mdp, i, 1)
' Décale chaque lettre dans l'alphabet
resultat = resultat & Chr(Asc(c) + decalage)
Next i
DecaleMotDePasse = resultat
End Function |