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 :

Verrouiller ou déverrouiller des cellules excel VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Verrouiller ou déverrouiller des cellules excel VBA
    Bonjour à toutes et tous

    Je veux premièrement vous remercier pour ce très beau site
    Je suis débutante en VBA. Je veux savoir comment puis-je verrouiller des cellules selon les données saisie dans une colonne d'un tableau.
    exemple si j'entre la valeur Entrée certaine cellules se verrouille et d'autre se déverrouille dans la même ligne.
    et si j'entre la valeur Sortie d'autres cellules se verrouille et d'autre se déverrouille dans la même ligne.
    J'espère que vous comprenez mon français
    Je vous remercie d'avance

    Soria

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Partant du fait que tu veux avoir des cellules verrouillées, il faut donc qu'il y ait une protection sur la feuille. Pour pouvoir changer l'état de la cellule, il faut donc déprotéger auparavant. Tu peux aussi ajouter un mot de passe entre guillemets là où j'ai mis un commentaire.

    Il faut aussi s'assurer que les mots Entrée et Sortie sont toujours écrits de la même façon (majuscules, accents,...) sinon il faudra ajuster le code

    Voici un exemple simple à mettre dans le code de la feuille.
    S'il y a plusieurs feuilles à traiter de la même façon, tu pourrais mettre le code dans ThisWorkbook, dans Workbook_SheetChange

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        If ActiveSheet.Range("A" & Target.Row) = "Entrée" Then
            ActiveSheet.Unprotect   'mot de passe si nécessaire
            ActiveSheet.Range("B" & Target.Row).Locked = True
            ActiveSheet.Protect     'mot de passe si nécessaire
        End If
    End Sub
    MPi²

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,
    Merci beaucoup pour votre réponse, mais je n'arrive pas à écrire le code!!!
    L'image jointe montre comment je veux travailler.
    lorsque je saisie "Entrée" et j'utilise la touche tabulation, je bascule automatiquement vers la cellule C3 puis vers puis vers E3 et vers H3 et enfin vers la ligne suivante.
    "Selon la valeur saisie dans la plage de cellules de A3:A8 "
    J'espère que vous me comprenez, merci pour votre aide une autre fois
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Essaie comme ceci
    Encore là, il faudra s'assurer que les mots soient bien écrits (majuscules, accents,...)

    Et tu dois utiliser la touche TAB pour te déplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
        If ActiveSheet.Range("A" & Target.Row) = "Entrée" Then
            ActiveSheet.Unprotect   'mot de passe si nécessaire
            ActiveSheet.Range("B3:H8").Locked = False
            ActiveSheet.Range("B3:B8,D3:D8,F3:G8").Locked = True
            ActiveSheet.Protect     'mot de passe si nécessaire
        ElseIf ActiveSheet.Range("A" & Target.Row) = "Sortie" Then
            ActiveSheet.Unprotect   'mot de passe si nécessaire
            ActiveSheet.Range("B3:H8").Locked = False
            ActiveSheet.Range("B3:B8,D3:F8").Locked = True
            ActiveSheet.Protect     'mot de passe si nécessaire
        End If
    End Sub
    MPi²

  5. #5
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut verrouiller ou déverrouiller
    Bonjour Parmi,

    Ta proposition souffre un léger inconvénient : le vicieux peut parfaitement modifier certaines valeurs entrées précédemment par d'autres.
    C'est pourquoi je propose de limiter la saisie aux cellules accessibles de la ligne active.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If ActiveSheet.Range("A" & Target.Row) <> "Entrée" And ActiveSheet.Range("A" & Target.Row) <> "Sortie" Then
        MsgBox "attendu mot [ Sortie ] ou [ Entrée ]"
        Application.EnableEvents = False
          Target.ClearContents
          Target.Activate
        Application.EnableEvents = True
    Else
        With ActiveSheet
            .Unprotect   'mot de passe si nécessaire
            .Range("B3:H8").Locked = True
            If Range("A" & Target.Row) = "Entrée" Then
               .Range("B" & Target.Row & ":H" & Target.Row).Locked = False
               .Range("B" & Target.Row & ",D" & Target.Row & ",F" & Target.Row & ",G" & Target.Row).Locked = True
            End If
            If .Range("A" & Target.Row) = "Sortie" Then
               .Range("B" & Target.Row & ":H" & Target.Row).Locked = False
               .Range("B" & Target.Row & ",D" & Target.Row & ",E" & Target.Row & ",F" & Target.Row).Locked = True
            End If
            .Protect
        End With
    End If
    End Sub
    Cordialement,

  6. #6
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,
    Merci beaucoup pour votre aide, mais comment puis-je appeler cette procédure , j'ai essayé mais je n'y arrive plus !!!!
    Bonne soiré et merci encore pour votre aide

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Comme inscrit dans le message 2, tu peux soit mettre la macro dans le code la feuille et, si elle doit servir à plusieurs feuilles du classeur, tu peux la mettre dans ThisWorkbook.

    Tout d'abord, assure-toi de déverrouiller la colonne A
    Elle sera activée lorsque tu changeras la valeur d'une cellule en colonne A

    Si les mots "Entrée" et "Sortie" sont inscrits ailleurs qu'en A, il te faudra modifier la macro en conséquence.
    MPi²

  8. #8
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Voilà ce j'ai fait, pour que vous puissiez corriger mes erreurs, j'ai suivi toutes vos étapes du message #2 mais lorsque j'ai cliqué sur Exécuter, la fenêtre nom de la macro S'affiche!!!!! que dois-je s'il vous plait
    Images attachées Images attachées  

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Si tu mets le code dans ThisWorkbook, utilise la procédure Workbook_SheetChange comme précisé...

    Et tu n'as pas à utiliser Exécuter.
    La macro est déclenchée automatiquement lorsque tu inscris quelque chose dans la colonne A et que tu sors de la cellule (préférablement avec TAB)
    MPi²

  10. #10
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut verrouiller ou déverrouiller
    Bonsoir,

    Ci-joint le fichier. le code est sur la feuille 1, celle concernée par la question.
    Bien entendu tu es libre de mettre en lieu et place le code qui te convient le mieux.

    j'ai rajouté une boite de validation en colonne A qui évitera des saisies erronées.
    Cette colonne ne sera jamais verrouillée, du moins pas à cause du code.
    la liste nécessaire à la boite de validation se trouve en feuille 2 mais bien entendu on peut la mettre à toute autre endroit qui ne sera jamais occupé.

    Edit: je n'avais pas vu la dernière réponse de Parmi avant de poster.
    réponse au demeurant intéressante je ne connaissais pas sheetchange de l'objet thisworkbook

    Cordialement,
    Fichiers attachés Fichiers attachés

  11. #11
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci beaucoup pour votre aide parmi et nibledispo; vos réponses ont vraiment réglées mon problème, merci bien pour vos conseils!

    Merci biennibledispo pour le fichier joint!
    J'apprécie vraiment vos aides!

    Très belle journée à vous deux et à tous les membres de ce très bon site

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

Discussions similaires

  1. Copier des cellules excel dans une liste déroulante vba
    Par Papillon34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2010, 16h03
  2. Réponses: 4
    Dernier message: 13/06/2008, 10h08
  3. [VBA] Modifier des cellules excel en fonction de leur couleur
    Par Tententai dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/03/2007, 18h14
  4. [VBA-E] Positionnement des cellules excel
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2006, 20h38
  5. [VBA-E]Largeur des cellules Excel adaptée au contenu de la cellule
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/05/2006, 08h33

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