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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 609
    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 609
    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

  3. #3
    Membre averti
    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
    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 609
    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 609
    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

  5. #5
    Membre Expert
    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
    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 averti
    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
    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

+ 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