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 :

VBA - Pour Verrouiller un cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2024
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Février 2024
    Messages : 15
    Par défaut VBA - Pour Verrouiller un cellule
    Bonjour tout le monde ,
    J'aurais besoin d'un petit coup de main. Je m'expliques.
    J'utilise dans mon tableau Excel des cases à coche. Lorsque ma case à coche en "A6" est décochée et donc renvoie la valeur "FAUX"
    J'aimerais qu'une dizaine de cases en dessous soit verrouillées afin qu'il ne soit pas possible de les modifier.
    J'ai tenté ce code un peu amateur mais rien à faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub CheckBox1_Click()
    Dim Variable As Long
    Variable = 7 + ActiveSheet.Range("C3") - 1
    If CheckBox1.Value = False Then
    Range("c7", "c" & Variable).Locked = True
    Else
    If CheckBox1.Value = True Then
    Range("c7", "c" & Variable). Locked = False
      End If
       End If
    End Sub
    Le problème provient de mon application de la fonction Locked qui semble être incorrect

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Lorsque l'on manipule une propriété de type booléen et que la valeur de celle-ci dépend d'une autre propriété booléenne, il est parfaitement inutile d'utiliser l'instruction If
    Dans l'exemple ci-dessous, la propriété Locked des cellules B7:B17 prend la valeur inverse du contrôleCheckBox1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CheckBox1_Click()
      Range("B7:B17").Locked = Not CheckBox1.Value
    End Sub
    Pour information, une cellule verrouillée ne l'est réellement qu'à partir du moment où l'on protège la feuille
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2024
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Février 2024
    Messages : 15
    Par défaut
    Bonjour,
    Je vous remercie pour cette explication, en effet cela fait sens et je comprend l'inutilité de la fonction IF dans cette condition.
    Cependant ce message d'erreur apparaît : "Impossible de définir la propriété de la classe range".
    L'idée ici étant uniquement de bloquer les cellules lorsque la Coche est décochée.
    Si je comprend bien j'ai laissé mes cellules de B7 à B17 en protection "non verrouillé" pour laisser la formule s'appliquer en fonction de la coche et le protection de la feuille est quand à elle bien active.

    Formule utilisée :

    Private Sub CheckBox1_Click()
    Range("B7:B17").Locked = Not CheckBox1.Value
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2024
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Février 2024
    Messages : 15
    Par défaut
    Au temps pour moi je viens de comprendre l'action propre du code, il fait passer la protection même de la cellule à verrouillée ou non verrouillé.
    Cependant cela ne semble pas compatible avec le fait que la feuille soit déjà protégée d'où le message d'erreur.
    Il faudrait peut être que la protection de la feuille s'active après l'application de l'effet coche.

    Vincent

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour éviter ce message d'erreur vous pouvez protéger votre feuille en plaçant la valeur True à l'argument UserInterfaceOnly de la méthode Protect
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CheckBox1_Click()
      Me.Protect UserInterfaceOnly:=True
      Range("B7:B17").Locked = Not CheckBox1.Value
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2024
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Février 2024
    Messages : 15
    Par défaut
    Merci beaucoup pour cette aide bienvenue, tout marche parfaitement

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

Discussions similaires

  1. Problème pour verrouiller une cellule
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/08/2013, 19h18
  2. Aide VBA pour recopier une cellule
    Par TITOU2911 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2011, 05h55
  3. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48
  4. Problème pour verrouiller une cellule
    Par aJavaDeveloper dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2007, 10h02

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