Rendre classeur et code VBA inaccessible

Bonjour à tous,

Je viens de terminer un projet VBA (ouverture et remplissage de formulaires). Il fonctionne bien mais, le souci, c'est qu'il écrit dans un classeur Excel duquel je dois récupérer les données inscrites, et que ces données sont accessibles dans les feuilles correspondantes, et modifiables en plus. Impossible d'interdire la lecture et la modification par mot de passe, sinon le programme ne fonctionne plus; or, justement je cherche un moyen imparable de rendre, non seulement les données inaccessibles par les utilisateurs des Userform, mais aussi invisibles et non modifiables.

Quelqu'un aurait-il une idée pour me sortir de cette impasse, sachant qu'à travers notre réseau interne, les utilisateurs partagent exactement le même fichier (moi y compris) et moi, je dois avoir accès à ces données à volonté, en plus d'avoir accès aux formulaires.

C'est vraiment un casse-tête pour moi !!!

Merci de votre aide.

Xav.

Bonjour

tu pourrais mettre un mot de passe sur le VB project... pour le code

et suivant comment tu as fais ton code tu pourrais masquer les feuilles avec la propriété "veryhidden" ou seul depuis le vba project tu peux les faire apparaître...

de plus mettre un mot de passe sur une feuille d'un fichier ne résiste pas longtemps, à un utilisateur averti d'excel...

fred

Merci beaucoup pour ton excellente idée, fred2406.

Comment penses-tu que je devrais faire appliquer l'instruction, et à quel évènement, pour que cela soit applicable du début à la fin de l'exécution du programme de remplissage des formulaires ? Je n'ai jamais utilisé l'instruction, est-ce bien :

Sheets("FeuilX").Visible = xlVeryHidden

?

Merci pour ton aide.

Xav.

fred2406 a écrit :

Bonjour

de plus mettre un mot de passe sur une feuille d'un fichier ne résiste pas longtemps, à un utilisateur averti d'excel...

fred

ça c'est sûr, il suffit par macro de reverrouiller la page avec un mot de passe vide et déverrouiller ... ("faille de sécurité" si on peut dire d'excel)

Sub Déprotégerlafeuille()
On Error GoTo errmag
With ActiveSheet
    .Protect vbNullString, , , , , , True
    .Protect vbNullString, , , , , , , , , , True
    .Unprotect vbNullString
End With
MsgBox "Protection de la feuille a été enlevée."
Exit Sub
errmag:
MsgBox "Erreur lors de la déprotection de la feuille." & vbCrLf & "Tentez de nouveau votre chance."
End Sub

et puis, pour repêcher les feuilles xlveryhidden

Sub ToutVisible()
Dim sh As Worksheet
For Each sh In Sheets
    sh.Visible = True
Next
End Sub

d'où l'intérêt de protéger le code VBA

Re

tu n'es pas obligé de faire apparaître la feuille et la re-masquée ensuite... (enfin cela dépend de comment tu as fais ton code... )

si tu as fais les choses comme moi... tu n'as qu'a mettre la propriété de la feuille sur veryhidden depuis le vbproject

capture

sinon par code aussi ton instruction est presque la bonne

Sheets("Feuil1").Visible = xlSheetVeryHidden

Fred

Salut Fred,

Je tente tout de suite d'appliquer tes propositions, voir ce que ça donne.

Merci de ton aide.

Xav.

Salut Fred,

J'ai bien réussi le changement de la propriété "visible" de toutes les feuilles, sauf de celle où se trouve les listes qui renseignent des combobox. Saurais-tu comment faire, parce que c'est dans cette feuille que j'inscris les les noms des professeurs utilisateurs de l'application, mais aussi leur mot de passe respectif : tout le monde peut voir les mots de passe confidentiels des autres utilisateurs ! Tu vois le souci !

Je te joins une capture écran à la tentative de changement de la propriété de la feuille "Listes".

Merci.

Xav.

Tu as combien de feuille dans ton classeur ??? tu ne peux pas masquer toutes les feuilles d'un classeur, et je soupçonne que tu essai de masquer cette dernière feuille, il faut que tu créé une feuille vierge pour garder au moins une feuille visible.... excel ne peut pas avoir un classeur avec 0 feuille visibles...

et pourrais tu me dire un peux plus sur ton outil ?? étant enseignant moi même....

Fred

Bien sûr Fred,

Je t'envoie mon Projet VBA dans son ensemble. Tu pourras te faire une idée globale.

Xav.

Salut Fred,

As-tu bien reçu le Projet ? Qu'en penses-tu ?

Pour ce qui est du problème : "Impossible de cacher une feuille"; tu avais raison.

En fait, tu as résolu tous mes problèmes. Je peux, maintenant, partager en réseau mon Programme et en empêcher à la fois sa propre modification (celle du code) et la visibilité des feuilles.

Merci pour toute ton aide !

Xav.

Re

c'est une utilisation que je ne ferais pas, et je ne vois pas dans mon lycée un collègue de langue l'utiliser..

cependant j'ai deux trois remarques

à l'ouverture du fichier avec activation des macros, j'ai un message d'erreur indiquant qu'une forme n'est pas disponible....

lorsque j'arrive sur le userform d'identification et que j'appuie sur "annuler" j'ai une erreur sur cette ligne

Workbooks("Time Sheet Professeur model").Close True

Fred

J'ai réessayé, Fred.

J'ai pas ce problème et je ne vois pas d'où il pourrait venir. Cependant, j'ai, comme toi, certains utilisateurs qui ont le problème de disponibilité de forme, mais je ne sais vraiment pas ce qui se passe.

Xav.

Voila le message que j'ai

capture

donc tu as du utiliser des formes qui ne sont pas standard dans excel, à priori on travail avec la même version d'excel Office 2007 avec mise a jour SP3 me concernant, mais ne sachant pas quelle forme il manque par la suite difficile a dire....

concernant la ligne qui est en erreur

Workbooks("Time Sheet Professeur model").Close True

personnellement je la remplacerais par

thisworkbook.close true

car il suffit que quelqu'un change le nom du fichier et le code ne marchera plus....

fred

En effet, je préfère retenir ton idée : "thisworkbook.close true" ; c'est la meilleure option.

Rechercher des sujets similaires à "rendre classeur code vba inaccessible"