Connaitre le mode d'acces a un fichier excel. [Résolu]

Signaler
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009
-
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009
-
Bonjour tout le monde.

Je réalise un application en vba dans laquelle je voudrais séparer la partie utilisateur de la partie admin du fichier.

Ce que je voudrais réaliser :
je possède un fichier excel avec deux onglets que je vérouille a l'aide d'un mot de passe.
Si l'utilisateur accede au fichier en lecture (donc non admin car il ne rentre pas le password pour l'acces en écriture ) l'onglet reservé al'administrateur n'apparait pas.
Si l'utilisateur est un admin, il a acces aux deux onglets.

J'aimerais savoir si il existe une fonction qui peut me dire si on a acces au fichier en écriture ( utilisateur admin ) ou en lecture ( utilisateur non admin ).
Car de cette manière je pourrais lancer une macro qui me "cacherais" certains onglets dans le classeur Excel en fonction du type d'acces.

Cela est-il possible? Si oui, y a t-il certains problèmes que l'on peut rencontrer?

Je vous remercie par avance de vos réponses.
Bonne journée.
-xaeris-

6 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

tu peux faire un UserForm afin de demander le mot de passe. S'il est bon, t'affiches les onglets, s'il n'est pas bon, vide, ou appuie sur Annuler, tu caches les fameux onglets.

Par contre, si quelqu'un passe la sécurité des macros à forte, ton code ne s'exécutera pas, donc le mieux c'est de les cacher d'origine, et tu les affiches suivant le mot de passe, et tu recaches à la fermeture du fichier

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Pour tester si ton fichier est en lecture/écriture, sinon, tu peux mettre dans l'Editeur VBE, dans ThisWorkbook, objet Workbook, évènement Open, le bout de code suivant :

MsgBox Application.ActiveWorkbook.ReadOnly

A l'ouverture du fichier, tu sauras quel est l'état du fichier.
Après, à toi d'adapter en fonction de tes besoins avec un

If Application.ActiveWorkbook.ReadOnly = true then
...

Par contre, même limitation que Mortalino de toutes façons pour la protection des macros.

Molenn
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009

c'est une trés bonne idée. Je peux faire comme tu me le propose en effet.
Je pensait juste pouvoir éviter a un admin de taper deux fois son mot de passe pour acceder a la modification du fichier.

Mais je pense que ta solution est tres correcte et bien pensée.

Juste une question :
Si l'admin met son mot de passe, j'affiche l'onglet supplémentaire. Il fait les modifications dont il a besoin et ferme le fichier.
Lors de la prochaine ouverture, ces onglets seront-ils visibles ou masqués ?

merci encore
-xaeris-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
L'idéal, serait de les cacher par code, dans l'évènement BeforeClose du classeur.

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
je pense pas que lecture / écriture est exactement ce qu'il veut.

Même si c'est pas quelqu'un qui à le mot de passe (et donc voir certains onglets), je suppose que le fichier doit pouvoir être enregistrable quand même sur les quelques onglets de dispo pour le simple utilisateur.

Enfin, je dis ça, mais c'est une supposition

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009

Disons que mon application est en fait une sorte d'annuaire, donc les utilisateur non admin n'auront rien a enregistrer...
Dans tous les cas je vais essayer les deux solutions, comme ca je pourrais voir celle qui convient le mieux.

Je vous remercie de vos réponses si rapides et si completes.
Je mets les deux réponse en acceptée car elles me satifont toutes les deux.
Encore merci.
-xaeris-