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 :

L'utilisation de UserInterfaceOnly ne permet pas l'execution de macro filtre


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut L'utilisation de UserInterfaceOnly ne permet pas l'execution de macro filtre
    Bonjour a Tous,

    Je suis debutant avec VBA. Mon probleme est le suivant:

    J'ai des boutons lies a des macro qui permetent de filtrer verticalement et horizontalement certain ranges sur ma feuille excel. En protegeant ma feuille et meme en utilisant le code que j'ai trouve sur tout les forums
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.protect UserInterfaceOnly:=True
    Mes macro ne marchent pas et j'ai un msg d'erreur disant:
    Unable to set the hidden property of the range class
    Pour plus de clarte en PJ un fichier simplifie pour ceux qui voudront m'aider a resoudre ce casse tete

    Merci d'avance

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Regarde tous les paramètres de la méthode Protect


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Worksheets("Feuil1").Protect UserInterfaceOnly:=True, DrawingObjects:=True, _
            Contents:=True, Scenarios:=True, AllowFormattingCells:=True, _
            AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:=True, _
            AllowFiltering:=True
    Edit:
    La protection n'est pas appliquée si les changements se font par code


  3. #3
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Peux tu stp m'indiquer comment deproteger avant chaque code et ou dois-je placer le tou d'un module ou bien dans Worksheets or Workbook?

    Merci

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai édité mon post, j'avais dis une bétise.
    par contre Userinterfaceonly=true protège seulement les modifications opérées par l'utilisateur (et pas par macro)

    Poste ici l'une de tes macro qui pose problème.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Voici le type de macro qui me pose probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub EM2()
    Range("EMBB:EMEE").EntireRow.Hidden = False
    Range("CVMBB:cvmee").EntireRow.Hidden = True
    Range("IHCBB:RESPEE").EntireRow.Hidden = True
    End Sub
    cette macro permet d'afficher uniquement un certain nombre de lignes et en cache d'autres

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    C'est quoi EMBB et EMEE?

    La procédure fonctionne si tu enlève la protection de la feuille?

  7. #7
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    ce sont des references que je donne a mes cellules pour definir le range et pour que quand il y a ajout de cellules le bouton associe a cette macro fonctionne tjrs.

    Quand j enleve la protection tout fonctionne

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bon j'ai testé ceci sans problème (j'ai ajouté la feuille à laquelle se rapporte la protection et les plages)
    J'ai nommé 2 cellules EMBB et EMEE dans Feuil1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub EM2()
     
    With ThisWorkbook.Worksheets("Feuil1")           'à adapter
        .Protect UserInterfaceOnly:=True
        .Range("EMBB:EMEE").EntireRow.Hidden = False
    End With
    End Sub
    Bien sûr, pour ton cas, tu peux protéger la feuille Feuil1 une seule fois et non dans chaque procédure.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Désolé mais ça ne marche pas.

    J'ai essaye de joindre un fichier simplifié mais je ne vois pas apparaître.

    Est ce quelqu'un peut m'indiquer comment l'ajouter.

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Compresse le et mets le en PJ

  11. #11
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    voila la PJ (le mot de passe c'est: Secret)

    J'ai essaye ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub PRO()
    With ThisWorkbook.Worksheets("name of the worksheet")
        .protect UserInterFaceOnly:=True
        .Call "macro1" = False
    End With
    End Sub
     
    Sub PROTECT1()
     
    End Sub

    Quand je l'active apartir de l'editeur vba il marche et le macro fonctionnent mais si je clique sur unprotect sheet la feuille et deverouille et en verouillant a nouveau les macro ne fonctionnent plus. la meme chose se produit quand je ferme le fichier et je le re-ouvre

    Si quelqu'un a une idee c'est le moment de la partager.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  12. #12
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
    Dim wSheet As Worksheet
     
    For Each wSheet In Worksheets
        wSheet.Protect Password:="Secret", UserInterFaceOnly:=True
    Next wSheet
    End Sub
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EM1()
     
    With ThisWorkbook.Worksheets("test")
        .Range("EMB:EME").EntireRow.Hidden = False
        .Range("CVMB:CVME").EntireRow.Hidden = True
        .Range("IHCB:RESPE1").EntireRow.Hidden = True
    End With
    End Sub
    Les autres aussi


    Edit
    3. A revoir ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

  13. #13
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Merci mercatog, MAIS CA NE MARCHES PAS, je pense que je vais abondonne tous les forum sur les quels j'ai poste ce sujet n'ont pas de solution.

  14. #14
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    En début de chacun de tes modules (notamment celui ThisWorkbook) metsEt ce afin que tu sois obligé de définir toutes tes variables

    Tu verras que tu as mis dans une ligne à partqui veut dire que tu as une variables nommée UserInterFaceOnly à qui tu affecte True.

    Alors que si tu fais un F1 sur Protect, tu sauras qu'elle a plusieurs paramètres (dont UserInterFaceOnly)

    Pour affecter une valeur à un paramètre d'une méthode, on utilise :=

    D'où, il fallait mettre dans le code ThisWorkbook ce code (d'enregistrer le fichier, le fermer et le ré ouvrir)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
    Dim wSheet As Worksheet
     
    For Each wSheet In Worksheets
        wSheet.Protect Password:="Secret", UserInterFaceOnly:=True
    Next wSheet
    End Sub

  15. #15
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    J'ai suivi ce que tu m'as recommande et ca ne marche tjrs pas j'ai ces msgs:
    Images attachées Images attachées   

  16. #16
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bon, je ne sais pas ce que tu veux faire.
    J'ai testé ton fichier suivant ces étapes:

    1. J'ai ôté manuellement la protection de la feuille (ou de toutes les feuilles).

    Toutes les feuilles sont donc déprotégées.

    2. J'ai remplacé le code dans ThisWorkbook par celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
    Dim wSheet As Worksheet
     
    For Each wSheet In Worksheets
        wSheet.Protect Password:="Secret", UserInterFaceOnly:=True
    Next wSheet
    End Sub
    ps: ce code peut être simplifié si tu n'as qu'une seule feuille

    3. J'ai enregistré le fichier

    4. J'ai fermé le fichier

    5. J'ai ouvert le fichier

    Toutes les feuilles sont protégées par le mdp Secret
    suite à l'exécution du code Wokbook_Open

    6. Les macros fonctionnent sans problème.


    PS: une remarque qui na pas de lien direct avec ton problème est d'écrire toutes tes procédures comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EM1()
     
    With ThisWorkbook.Worksheets("test")
        .Range("EMB:EME").EntireRow.Hidden = False
        .Range("CVMB:CVME").EntireRow.Hidden = True
        .Range("IHCB:RESPE1").EntireRow.Hidden = True
    End With
    End Sub
    PS2: N'oublie pas de mettre en haut de chaque module pour imposer la déclaration de toutes les variables.

    PS3: Plus clair que ça, je ne vois pas comment expliquer!

  17. #17
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Merci beaucoup maintenant ca marche.

    Je pense que ce qyui fesait tout foire c'etait le fait que je n'avais pas deprotege toutes les feuilles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IE permet l'utilisation de nouveaux attributs, mais pas Firefox ?
    Par ranarama69 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/09/2010, 01h27
  2. Erreur EInvalidOperation "Le canevas ne permet pas de dessiner"
    Par bruce-willis dans le forum C++Builder
    Réponses: 14
    Dernier message: 13/12/2008, 18h01
  3. Passage par référence ne permet pas la sauvegarde
    Par utoria dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2007, 01h09
  4. [Info]Eclipse ne permet pas de changer de compilateur
    Par albertl dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 08/02/2005, 19h00
  5. [CR8.5] Obligé d'utiliser un sous-rapport ou pas ?
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 09/06/2004, 18h10

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