IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Interdire accés feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut Interdire accés feuille Excel
    Bonjour à toutes et à tous!

    Voici mon problème :

    J'ai créée un logiciel en VBA sous Excel. Dedans j'utilise des feuilles Excel pour les afficher dans des UserForm via des composants Spreadsheet.
    J'aimerais vérouiller mes feuilles pour que les utilisateurs ne puissent pas changer ce qu'il y a dedans. Mon problème est que quand je vérouille les feuilles (j'ai éssayé via un mot de passe, en cachant mes feuilles avec l'attribut Visible des feuilles et via l'attribut EnableSelection), mon code VBA ne fonctionne pu car les restrictions que j'utilise s'appliquent aussi aux macros VBA.
    Comment faire pour verrouiller les feuilles sans bloquer les macros VBA?

    Merci d'avance pour vos réponses!

  2. #2
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Tu as deux solutions soit ne pas vérouiller les feuilles mais simplement masqué la barre des onglets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWindow.DisplayWorkbookTabs = False
    Soit avec vérouillage que tu désactive au début et réactive en fin de macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With ActiveSheet
        .Unprotect ("Ton mot de passe") 'deprotege
        .Protect Password:="Mot de passe" 'protege
    End With

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    J'ai déjà essayé ta deuxième solution mais c'est trop fastidieux, surtout si je souhaites changer le mot de passe...

    Je vais essayer de masquer la barre des onglets voir ce que ça donne, merci ^^

    Edit : Cela ne règle pas mon problème car j'ai beaucoup de macros VBA qui m'active beaucoup de feuilles, donc l'utilisateur peut à tout moment fermer le UserForm pour faire apparaître les données et les changer comme il le souhaite.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    Sinon, tu passes la feuille en veryhidden

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MasquerFortementOnglet(nom_onglet As String)
        Sheets(nom_onglet).Visible = xlVeryHidden
        ' L'onglet devient fortement caché et ne peut être ré-affiché uniquement uniquement via une macro
    End Sub
    Avec ça, tu peux même directement aller chercher les infos sans verrouiller quoi que ce soit !

    J'ajoute que pour ré-afficher, il faut passer le champ .visibile à True

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Non VeryHidden ne fonctionne pas, les macros ne s'effectuent toujours pas...
    Je ne sais vraiment pas comment faire

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Citation Envoyé par linkcr15 Voir le message
    Non VeryHidden ne fonctionne pas, les macros ne s'effectuent toujours pas...
    Tu n'aurais pas des Machins.Select ou Trucs.Activate dans ta macro ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Si partout!

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    c'est là qu'est l'os

    il n'est forcément pas possible de sélectionner une feuille ou une cellule de cette feuille lorsque celle-ci est masquée mais il est tout à fait possible de lire ou de modifier des données de cette feuille sans passer par les Select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'ne fonctionnera pas si la feuille est masquée
    Sheets("feuil1").Select
    Range("A1").Select
    MsgBox ActiveCell.Value
     
     
    'sans passer par des Select fonctionnera même si la feuille est masquée
    'cela donne :
    MsgBox Sheets("feuil1").Range("A1").Value

  9. #9
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Bonjour

    Je completerai le message de mon VDD en précisant que l'utilisation des "select" ralenti l'exécution du code et en plus c'est moche.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Bon et bien je vais reprogrammer tout mon code afin d'éviter les select, j'en ai pour plusieurs jours, je vous donnerais des nouvelles quand j'aurais fini.
    Merci pour votre aide à tous en tout cas c'est sympa!

Discussions similaires

  1. Interdire accès feuille Excel
    Par lithoshin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2013, 11h36
  2. [AC-2003] Accès à une feuille Excel
    Par Taiby dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/03/2013, 10h37
  3. Réponses: 2
    Dernier message: 08/07/2010, 16h18
  4. Suppresion d'une feuille Excel depuis acces
    Par Australia dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2006, 09h08
  5. remplir feuille excel
    Par thibaud60 dans le forum Access
    Réponses: 2
    Dernier message: 24/11/2003, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo