Verrouiller une ligne en fonction de la valeur d'une cellule

Fermé
sime1234 Messages postés 2 Date d'inscription vendredi 25 avril 2014 Statut Membre Dernière intervention 26 avril 2014 - 25 avril 2014 à 20:14
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 27 avril 2014 à 00:34
Bonjour à tous,

Je m'adresse à vous car je n'ai pas trouver de réponse à ma question : Est-il possible de verrouiller une ligne en fonction de la valeur d'une cellule de cette ligne ?

Dans le cas présent il s'agit de "oui" sélectionné selon une liste (colonne R).
J'utilise déjà un macro afin qu'une autre cellule fusionnée prenne une couleur (ici verte) si toutes les lignes de cette cellule (par exemple de 17 à22) ont dans leur colonne R la valeur de "oui" et il faudrait qu'en plus de la couleur que le fait de mettre "oui" bloque la ligne en question mais sans forcement modifié la couleur

Je crée ce tableau pour mon travail et travaille chez moi avec Excel 2010 mais à mon travail nous avons Excel 2003

merci pour votre aide,

Bonne journée
A voir également:

4 réponses

Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
Modifié par Mike-31 le 25/04/2014 à 20:39
Bonjour,

C'est possible mais tu n'as pas besoin de macro pour cela, la validation peut le faire sans charger inutilement le fichier
exemple pour bloquer la saisie des colonnes A à Q en fonction de la colonne R

saisir la plage excepté la colonne R exemple sélectionner de A1 à Q50
Données/Validation/sélectionner Personnalisé/saisir cette formule
=$R1<>"oui"

il est également possible de mettre un message lors du blocage, dans la validation, onglet Alerte d'erreur, saisir un message convivial dans message d'erreur

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
26 avril 2014 à 11:15
Re,

j'avais déposé un fichier exemple qui à disparu, je le reposte
si oui est saisi en colonne R, il est impossible de saisir une donnée sur la ligne de la plage jaune

https://www.cjoint.com/c/DDAloqvFCNL
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
26 avril 2014 à 13:37
Bonjour Mike

La validation fonctionne mais il existe malheureusement un moyen de la contourner : il suffit d'entrer une valeur dans une cellule non protégée et de faire un copier-coller !
Seule une macro offre une meilleure protection

Cdlmnt
0
sime1234 Messages postés 2 Date d'inscription vendredi 25 avril 2014 Statut Membre Dernière intervention 26 avril 2014
26 avril 2014 à 19:24
Bonjour,

Merci beaucoup pour votre aide, ça me semble pas mal en attendant trouver une solution qui bloque même le copier/coller

bonne soirée
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
Modifié par Mike-31 le 26/04/2014 à 19:36
Re,

Alors comme le dit Via, il n'y a que le VBA mais même avec un code VBA il faudrait le protéger pour éviter qu'il ne soit lu et donc accéder aux mots de passe de protection, enfin c'est toujours plus de protections et dit toi bien qu'il y a toujours un moyen de contourner un blocage.
Dans ma proposition, tu peux déverrouiller les cellules de saisie et protéger la feuille ce qui limitera les accès.
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 27/04/2014 à 00:35
Bonsoir,

un exemple par macro :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, pl As Range
    Set pl = Intersect(Target, [R:R])
    If Not pl Is Nothing Then
        Me.Unprotect Password:="pw"
        For Each c In Intersect(pl, [R:R])
            Cells(c.Row, 1).Resize(, 17).Locked = LCase(c) = "oui"
        Next c
        Me.Protect Password:="pw"
    End If
End Sub 

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0