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 :

Déprotéger par code


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 442
    Par défaut Déprotéger par code
    Bonjour,

    Je ne connais pas VBA EXCEL, je voudrais lorsque j’agrandis un tableau le déprotégé puis le protéger de nouveau lorsque la ligne est créer par la souris ou par la touche TAB.

    J'ai fais un essai avec ce code par l'enregistreur mais .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Macro1()
     
        ActiveSheet.ListObjects("Tableau1").Resize Range("$B$7:$I$13")
        Unprotect Password:="s"
        Range("G3").Select
        Protect Password:="s"
    End Sub
    On doit pouvoir faire mieux avec un bouton de commande par exemple.
    Je précise les colonnes qui devraient être protégées C,D,G,I
    Merci.

  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 175
    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 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a moyen d'écrire dans des cellules protégées en mettant la valeur de la propriété userinterfaceonly à True mais curieusement j'ai essayé avec Resize et cela ne fonctionne pas.
    Une solution serait de faire un Copier/Coller
    Exemple de la recopie d'une cellule D2 (protégée) vers les cellules $D$3:$D$13
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Macro1()
     Dim sht As Worksheet: Set sht = ActiveSheet
     sht.protect Password:="s", userinterfaceonly:=True ' , AllowFormattingColumns:=True, AllowFormattingRows:=True
     sht.Range("D2").Copy sht.Range("D3:D13")
     ' sht.ListObjects("Tableau2").Resize Range("$A$1:$D$13")
    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

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut
    dans ton code, la ligne contenant le resize ne devrait elle pas etre entre le unprotect et le protect?

  4. #4
    Membre éclairé Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 442
    Par défaut
    Merci, mais ça ne fonctionne pas car une fois protégé on n'a plus la poignée de recopie du tableau, j'ai donc fais un essai par insertion de ligne mais sans résultat la ligne c'est bien placée mais sans formule dedans de plus un message est apparu me disant qu'il est impossible d'ajouter une ligne.

    Encore merci.

  5. #5
    Membre éclairé Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 442
    Par défaut
    Une idée me vient, si un code pouvait écrire les formules des cellules a chaque fois que l'on écris par exemple dans la cellule "C:C" qui elle est toujours déverrouillée ?

    Par exemple en J:J:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(F12="";"";DATEDIF(F12;AUJOURDHUI();"y")&" "&"ans")
    ou en colonne "D"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B13="";"";RECHERCHEV(B13;Eleves;2))
    Cela doit pouvoir ce faire.

    Encore merci.

  6. #6
    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 175
    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 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    As-tu lu mon post. Tu peux parfaitement écrire dans une cellule protégée avec du code VBA en mettant la valeur de la propriété userinterfaceonly de la méthode Protect à True.
    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

  7. #7
    Membre éclairé Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 442
    Par défaut
    Oui, je l'ai bien lu mais je ne connais pas VBA d'Excel je ne comprend pas, tu pourrais me passer un exemple pour l'étudier avec une de mes formule par exemple ?

    en fait il est impossible d'insérer une ligne alors que dans l'option de la protection "Insérer des lignes est bien cochée".

    Je commence à comprendre un peux mais ce n'est pas simple.
    Maintenant reste à voir en insérant si les formules seront bien en place.

    Merci.

Discussions similaires

  1. Déprotéger un VBAProject par code pour maj du code
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/05/2011, 19h36
  2. Fermeture fenetre crée par code javascript
    Par Kerod dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/02/2010, 00h04
  3. Retirer une clé primaire par code
    Par Arrown dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2004, 15h15
  4. [VCL] Scroller un contrôle par code
    Par sbeu dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/03/2004, 10h39
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

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