Microsoft 365 VBA - Problèmes avec feuilles vérouillées

Karim48

XLDnaute Nouveau
Bonjour,
Je me retrouve avec un problème particulier. J'ai créé une VBA qui sera à mise à disposition de professionnels. Pour éviter toutes modifications de contenus, j'ai vérouillé ces pages. A l'éxecution de chaque macro j'inclus à l'ouverture:
Sub MDP_DV()
For I = 1 To Sheets.Count
Sheets(I).Unprotect Password:="Mot de Passe"
Next
End Sub
Et à la fermeture:
Sub MDP_DV()
For I = 1 To Sheets.Count
Sheets(I).Protect Password:="Mot de passe"
Next
End Sub
Le problème est que la VBA fonctionne parfaitement sans protection et une fois les feuilles protégées, le résultats n'est plus le même, des champs manquent ou n'ont rien à voir avec le résultat attendu.
Quelqu'un aurait un remède?
Merci d'avance.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Karim48 , le Forum

Je te conseille de lire l'article de Microsoft à ce sujet :

Worksheet.Protect method (Excel)

Car je suppose que quand tu dis
Le problème est que la VBA fonctionne parfaitement sans protection et une fois les feuilles protégées, le résultats n'est plus le même, des champs manquent ou n'ont rien à voir avec le résultat attendu.
Il y a d'autres codes VBA qui sont sensés travailler sur les feuilles protégées...

Donc le paramètre "UserInterfaceOnly" va certainement t'interresser...

VB:
For I = 1 To Sheets.Count
    Sheets(I).Protect Password:="Mot de passe", UserInterfaceOnly:=True
Next

Bonne soirée
@+Thierry
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

•>_Thierry
Je me retrouve avec un problème particulier. J'ai créé une VBA qui sera à mise à disposition de professionnels. Pour éviter toutes modifications de contenus, j'ai vérouillé ces pages.
On laisse le demandeur se bercer d'illusions?
Ou on le prévient ? ;)
Tu t'en charges ? Parce que moi, j'ai télé ;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Hello Staple1600 ;)

Oui en effet, j'ai répondu sans prendre soin de faire une petite réserve...

Karim48 quand tu écris ceci
J'ai créé une VBA qui sera à mise à disposition de professionnels
Et ceci
Pour éviter toutes modifications de contenus

Il faut vraiment que tu saches que les protections de feuilles ne sont modérément efficaces que si elles sont appliquées manuellement avec un PassWord « Strong » qui ne sera en aucun cas stocké dans le classeur…

Or par définition, le fait de demander à VBA de passer le PassWord, il est stocké dans le classeur…

Il est à la portée de tous ensuite d’ouvrir sans activer les macros et d’aller voir le code… Donc il faut aussi verrouiller le code par VBE… Mais bon même avec tout ça, si tu as affaire avec un utilisateur disons malintentionné…

Bonne soirée et bonne TV Staple !
@+Thierry
 

Karim48

XLDnaute Nouveau
Merci pour vos recommandations , j'ai réussi à sortir du problème. Concernant le verrouillage des feuilles, je sais que de simples macros sont capables d'oter les protections mais c'est surtout pour éviter à mon préleveur d'aller fouiller et modifier les macros par inadvertance. En protection macro, pour éviter la copie, j'ai pensé à l'obfuscation et une vba qui détruirait le fichier au bout de trois mots de passe incorrects. Vous en pensez quoi?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Karim48

une vba qui détruirait le fichier au bout de trois mots de passe incorrects. Vous en pensez quoi?

Arf, non, là j'en pense que c'est que tu n'as pas bien compris la portée de mon message, pas la peine de monter une usine à gaz , et en plus dangeureuse de surcroit, si on parle de "destruction"...

Ce que Staple1600 m'a laissé le soin de t'expliquer, c'est que quoique tu fasses tu ne pourras pas blinder un classeur par Macro... Et plus tu en rajouteras plus tu vas te compliquer la vie et en prime mettre en péril l'usage normal de ce classeur, sans pour autant le blinder, il y a toujours des moyens pour ouvrir un classeur sans activer tes macros...

Bien @toi @vous
@+Thierry
 

Discussions similaires

Réponses
11
Affichages
286

Statistiques des forums

Discussions
312 203
Messages
2 086 191
Membres
103 152
dernier inscrit
Karibu