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 :

Activer protection feuille après fermeture de la grille de saisie Excel (formulaire)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Activer protection feuille après fermeture de la grille de saisie Excel (formulaire)
    Bonsoir,

    Sur une feuille protégée, le code ci-dessous active la protection et fait apparaitre la grille de saisie (dataform). Comment faire pour qu'à sa fermeture, la feuille soit de nouveau protégée ? (quel déclencheur d'évènement?)

    Merci d'avance pour votre aide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro7()
    '
    ' Définit le nom 'Base_de_données' sur la zone en cours
    ActiveSheet.Unprotect
    ActiveWorkbook.Names.Add Name:="Base_de_données", RefersToR1C1:= _
    Selection.CurrentRegion
    ActiveSheet.ShowDataForm
     
    '
    End Sub

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonsoir,

    L'évènement Deactivate et ActiveSheet.Protect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Deactivate()
    .....
    End Sub
    Cordialement.

    RJ

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir rjamin,

    Je ne sais pas comment intégré le "Worksheet_deactivate" dans mon code existant. (je suis débutant )

    On est bien d'accord que la protection de la feuille est censée se réactiver à la fermeture de la grille de saisie (dataform).

    Donc ce serait pas plutôt l'évènement "Worksheet_activate" qui doit être suivi de "Activesheet.Protect" ?

    Merci d'avance ;-)

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonsoir,
    Il ne faut pas l'intégrer au code existant. Il faut cliquer droit sur l'onglet de la feuille en question > Visualiser le code dans l'éditeur VBA choisir Worksheet a la place de General et Deactivate à la place de Selection_Change.
    Et vous aurez alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Deactivate()
    .....
    End Sub
    Dans laquelle vous écrirez ActiveSheet.Protect à la place des .....
    Après vous vérifier que votre feuille est à nouveau protégée.
    Cordialement.

    RJ

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir !
    Et merci déjà pour votre aide !
    J'ai suivi vos indications mais quand je vais dans le code de ma feuille :

    1/J'ai déjà le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Activate()
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    2/Worksheet est déjà sélectionné. Et quand je modifie juste en face le Selectionchange en Deactivate, ça me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Activate()
     
    End Sub
     
    Private Sub Worksheet_Deactivate()
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    3/Je finis par ajouter le Activesheet.protect sous le Deactivate.

    Mais quand j'ajoute un enregistrement à l'aide de la grille et que je la ferme la protection reste inactivée...

    J'ai oublié quelque chose ?

    Merci d'avance.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Re-bonjour !

    J'ai fait plusieurs tentatives avec le "Deactivate" en suivant vos indications.
    Mais je m'aperçois que la feuille n'est effectivement protégée que si j'accède par la suite à une feuille différente et qu'ensuite je reviens sur ma feuille principale qui devient alors protégée...

    Moi je souhaite simplement que quand j'ai fini d'ajouter un enregistrement à l'aide de la grille Excel (en version Excel 2000, ça s'appelait comme ça je crois et on cliquait sur le menu Données/Grille), la feuille soit de nouveau protégée. (mon classeur ne compte qu'une feuille)

    Pour le moment, j'ai l'impression que quand la grille est affichée en premier plan, Excel considère que la feuille sur laquelle on se trouve, est toujours considérée comme active non ?

    Merci d'avance pour votre (vos) réponse(s).

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonsoir,

    je ne comprends rien à tous ce code que tu nous montre .. tes fonctions événementielles sont vides et donc n'ont aucune actions ...!

    et pourquoi ne fais tu pas simplement, une fois ta base de donnée en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Feuil1.Unprotect
    Feuil1.ShowDataForm
    Feuil1.Protect

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    Bonsoir.
    Personnellement j'utilise ce code. Avant le End Sub entre ça. En rouge met ton mot de pass.

    ActiveSheet.Protect "le mot de pass", UserInterfaceOnly:=True
    End Sub

    Chez moi ça fonctionne
    a+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci bbil !
    C'est juste ça que je voulais faire.
    Merci à toi aussi Fred4345.

    Dernière question :

    Tout marche bien tant que la base de données commence en cellule A1.

    Mais si elle commence en cellule A6, il y a un blocage avec la grille de saisie.
    (Microsoft l'explique ainsi : http://support.microsoft.com/kb/460629/fr)

    J'ai beau essayer cette manip', j'ai toujours le même problème.
    Ce serait quand même très limité si la grille de saisie ne pouvait être utilisée que de cette façon...

    Merci.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/04/2015, 11h57
  2. [XL-2010] Problème d'utilisation liste déroulante après protection feuille
    Par jessy2010 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2012, 20h10
  3. Réponses: 9
    Dernier message: 10/01/2011, 17h27
  4. [XL-2003] erreur définie par l'application ou l'objet après protection feuille
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/11/2010, 10h06
  5. Protection feuilles à la fermeture
    Par spud96 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2010, 09h56

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