A voir également:
- Verouillage cellule sous condition avec macros
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
- Excel : formule si le fond d'une cellule est en couleur - Forum Bureautique
- Si une cellule contient un mot alors ✓ - Forum Excel
13 réponses
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
20 févr. 2015 à 17:10
20 févr. 2015 à 17:10
Bonjour,
Cette condition concerne B23 ou toutes les lignes de la colonne B
Cette condition concerne B23 ou toutes les lignes de la colonne B
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
20 févr. 2015 à 17:46
20 févr. 2015 à 17:46
Re,
essaye comme cela, code à coller dans les propriétés de ta feuille, mais au départ les cellules doivent être déverrouillées et la feuille protégée
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B23]) Is Nothing Then
ActiveSheet.Unprotect
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect
End If
End Sub
essaye comme cela, code à coller dans les propriétés de ta feuille, mais au départ les cellules doivent être déverrouillées et la feuille protégée
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B23]) Is Nothing Then
ActiveSheet.Unprotect
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect
End If
End Sub
Merci Mike.
J'ai essayé mais cela ne semble pas fonctionner.
J'ai ajouté ce que tu m'as dis en fin de page. Je pense que j'oublie qqch mais je ne suis pas au top des macros !
ca me donne ca :
----
Sub OptionA()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("B27:B53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub OptionB()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("D27:D53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub OptionC()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("F27:F53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub test()
Nlig = Range("A" & Rows.Count).End(xlUp).Row - 3
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("B27:B" & Nlig).Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E52]) Is Nothing Then
ActiveSheet.Unprotect
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect
End If
End Sub
---
Mais je ne comprends pas bien ce que tu as programmé. En gros si l'utilisateur écrit en E52 il ne peut plus écrire en E53. et s'il écrit en E53 alors il ne peut pas écrire en E52.
De meme pour C52 et C53 et pour G52 et G 53.
J'ai essayé mais cela ne semble pas fonctionner.
J'ai ajouté ce que tu m'as dis en fin de page. Je pense que j'oublie qqch mais je ne suis pas au top des macros !
ca me donne ca :
----
Sub OptionA()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("B27:B53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub OptionB()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("D27:D53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub OptionC()
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("F27:F53").Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Sub test()
Nlig = Range("A" & Rows.Count).End(xlUp).Row - 3
With ActiveSheet
.Unprotect Password:="essaiFAA"
.Cells.Locked = True
.Range("B27:B" & Nlig).Locked = False
.Protect Password:="essaiFAA"
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E52]) Is Nothing Then
ActiveSheet.Unprotect
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect
End If
End Sub
---
Mais je ne comprends pas bien ce que tu as programmé. En gros si l'utilisateur écrit en E52 il ne peut plus écrire en E53. et s'il écrit en E53 alors il ne peut pas écrire en E52.
De meme pour C52 et C53 et pour G52 et G 53.
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
Modifié par Mike-31 le 25/02/2015 à 10:03
Modifié par Mike-31 le 25/02/2015 à 10:03
Re,
normal, regarde ton code, la protection comme la déprotection est avec mot de passe
Unprotect Password:="essaiFAA"
mon code est sans
ActiveSheet.Unprotect
ensuite tes codes sont certainement dans un module alors que mon code doit se trouver dans les propriétés de ta feuille
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
normal, regarde ton code, la protection comme la déprotection est avec mot de passe
Unprotect Password:="essaiFAA"
mon code est sans
ActiveSheet.Unprotect
ensuite tes codes sont certainement dans un module alors que mon code doit se trouver dans les propriétés de ta feuille
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le mot de passe, j'aurais pu y penser ^^
J'ai mis ton code dans la propriété de la feuille (enfin je crois..); mais cela ne semble pas fonctionner non plus.
En fait j'ai l'impression que cela bloque la cellule D52 mais sans lien avec le fait que j'ai rempli ou non la 53.
http://cjoint.com/?EBzlmXaqdQE : ca va peut-être t'aider...
J'ai mis ton code dans la propriété de la feuille (enfin je crois..); mais cela ne semble pas fonctionner non plus.
En fait j'ai l'impression que cela bloque la cellule D52 mais sans lien avec le fait que j'ai rempli ou non la 53.
http://cjoint.com/?EBzlmXaqdQE : ca va peut-être t'aider...
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 15:46
25 févr. 2015 à 15:46
RE,
encore normal, tu ne peux utiliser qu'une fois la syntaxe Worksheet_Change
il faut donc empiler les actions sous la seule syntaxe Worksheet_Change
explique exactement ce que tu veux faire, si D52 est renseignée on verrouille D53
idem si tu renseignes F52 et F53
as tu d'autres cellules concernées que D52, D53, F52 et F53
encore normal, tu ne peux utiliser qu'une fois la syntaxe Worksheet_Change
il faut donc empiler les actions sous la seule syntaxe Worksheet_Change
explique exactement ce que tu veux faire, si D52 est renseignée on verrouille D53
idem si tu renseignes F52 et F53
as tu d'autres cellules concernées que D52, D53, F52 et F53
ça m'a l'air simple quand tu le dis mais je n'y arrive pas du tout.
Ce que je veux :
-si on choisi une motorisation 90 ch on ne peut pas en choisir une 110 ch (la question ne se pose qu'en Niveau 2 ou 3 car en 1). : pbmatique des cases D52 et D53 ou F52 et F53.
- plus tard la question se posera pour par exemple (je dis n'importe quoi pour illustrer selon le fichier que je t transmis) : on ne peut avoir que soit la prise 12V soit le spot de lecture soit la tablette. Donc si on rempli qqch en 44, 45 ou 46 (B, D ou F selon le cas), alors les autres lignes sont verrouillées.
Ce que je veux :
-si on choisi une motorisation 90 ch on ne peut pas en choisir une 110 ch (la question ne se pose qu'en Niveau 2 ou 3 car en 1). : pbmatique des cases D52 et D53 ou F52 et F53.
- plus tard la question se posera pour par exemple (je dis n'importe quoi pour illustrer selon le fichier que je t transmis) : on ne peut avoir que soit la prise 12V soit le spot de lecture soit la tablette. Donc si on rempli qqch en 44, 45 ou 46 (B, D ou F selon le cas), alors les autres lignes sont verrouillées.
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 16:01
25 févr. 2015 à 16:01
Re,
Remplace tes codes par
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D52:F52")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
If Not Intersect(Target, Range("D53:F53")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(-1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
End Sub
Remplace tes codes par
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D52:F52")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
If Not Intersect(Target, Range("D53:F53")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(-1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
End Sub
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 16:27
25 févr. 2015 à 16:27
Re,
Je pense à une chose, si tu saisis une valeur en D52, D53 se verrouille mais pas D52, c'est ce que tu veux ou on verrouille les deux cellules.
de plus ajoute au code que je t'ai donné une gestion d'erreur
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("D52:F52")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
If Not Intersect(Target, Range("D53:F53")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(-1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
End Sub
pour accéder sur les cellules D52, D53, F52 ou F53 après qu'elles se soient verrouillées, tu peux ajouter un mot de passe sur ces cellules
onglet Révision/module Modification/Permettre la modification des plages/Nouvelle/clic dans la zone Fait référence aux cellules, sélectionne les cellules D52:D53 et F52:F53
saisir le mot de passe qui permettra la modification et OK
ce qui te permettra de revenir sur ces cellules qui viennent de se verrouiller
Je pense à une chose, si tu saisis une valeur en D52, D53 se verrouille mais pas D52, c'est ce que tu veux ou on verrouille les deux cellules.
de plus ajoute au code que je t'ai donné une gestion d'erreur
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("D52:F52")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
If Not Intersect(Target, Range("D53:F53")) Is Nothing Then
ActiveSheet.Unprotect Password:="essaiFAA"
If Target <> "" Then Target.Offset(-1, 0).Locked = True
ActiveSheet.Protect Password:="essaiFAA"
End If
End Sub
pour accéder sur les cellules D52, D53, F52 ou F53 après qu'elles se soient verrouillées, tu peux ajouter un mot de passe sur ces cellules
onglet Révision/module Modification/Permettre la modification des plages/Nouvelle/clic dans la zone Fait référence aux cellules, sélectionne les cellules D52:D53 et F52:F53
saisir le mot de passe qui permettra la modification et OK
ce qui te permettra de revenir sur ces cellules qui viennent de se verrouiller
Pour ta première question oui c'est bien ce que je veux.
je ne evux pas y accéder après qu'elles soient verrouillées. Je veux que si quelqu'un change d'avis il puisse effacer son choix en D52 et que l'on soit à nouveau dns la situation initiale où il peut écrire en D53 OU D52.
Là quand je mets ton code, ca fonctionne parfaitement sauf dans le cas où il a saisi qqch en D52 par ex, puis l'efface et veut écrire en D53 finalement.
Car une fois D52 rempli, cela bloque D53. Et meme s'il efface D52 après, D53 reste verrouillée!
je ne evux pas y accéder après qu'elles soient verrouillées. Je veux que si quelqu'un change d'avis il puisse effacer son choix en D52 et que l'on soit à nouveau dns la situation initiale où il peut écrire en D53 OU D52.
Là quand je mets ton code, ca fonctionne parfaitement sauf dans le cas où il a saisi qqch en D52 par ex, puis l'efface et veut écrire en D53 finalement.
Car une fois D52 rempli, cela bloque D53. Et meme s'il efface D52 après, D53 reste verrouillée!
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 16:39
25 févr. 2015 à 16:39
Re,
justement, si tu t'ai trompé entre D52 et D53, il est évident que suivant la cellule renseignée, l'autre s'est verrouillée. Le plus simple est de faire ce que je t'ai dit
onglet Révision/module Modification/Permettre la modification des plages/Nouvelle/clic dans la zone Fait référence aux cellules, sélectionne les cellules D52:D53 et F52:F53
saisir le mot de passe qui permettra la modification et OK
Plus compliqué mais il y aura de toute façon un mot de passe pour déverrouiller ces cellules, sinon a quoi servirait le code précédent
justement, si tu t'ai trompé entre D52 et D53, il est évident que suivant la cellule renseignée, l'autre s'est verrouillée. Le plus simple est de faire ce que je t'ai dit
onglet Révision/module Modification/Permettre la modification des plages/Nouvelle/clic dans la zone Fait référence aux cellules, sélectionne les cellules D52:D53 et F52:F53
saisir le mot de passe qui permettra la modification et OK
Plus compliqué mais il y aura de toute façon un mot de passe pour déverrouiller ces cellules, sinon a quoi servirait le code précédent
Bonjour
tu peux faire ce que tu veux mais les macro dans ton module reactive la colonne
et la je ne voie pas
A+
Maurice
tu peux faire ce que tu veux mais les macro dans ton module reactive la colonne
et la je ne voie pas
A+
Maurice
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 17:02
25 févr. 2015 à 17:02
Re,
mais il n'est pas question de déprotéger ton fichier ni de donner le mot de passe de protection de ta feuille "essaiFAA"
tu donnes uniquement la possibilité d'intervenir sur ces 4 cellules avec un mot de passe différent de celui de la protection feuille, Excel ne peut pas deviner que tu t'es trompé
mais il n'est pas question de déprotéger ton fichier ni de donner le mot de passe de protection de ta feuille "essaiFAA"
tu donnes uniquement la possibilité d'intervenir sur ces 4 cellules avec un mot de passe différent de celui de la protection feuille, Excel ne peut pas deviner que tu t'es trompé
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 17:09
25 févr. 2015 à 17:09
Re,
Oui teste avec un mot basique
et tiens moi au courant
Oui teste avec un mot basique
et tiens moi au courant
J'ai étudié la proposition qu'on m'a faite ici en parallèle : https://forums.commentcamarche.net/forum/affich-31620254-verouillage-cellule-sous-condition-avec-macros#p31620804
Et j'arrive un peu mieux à la mettre en place (il me reste quand meme des questions comme tu peux voir en fin du sujet).
Une fois que ce sera résolu je vais voir ce qui me semble le mieux et valider avec mes collègues :)
Et j'arrive un peu mieux à la mettre en place (il me reste quand meme des questions comme tu peux voir en fin du sujet).
Une fois que ce sera résolu je vais voir ce qui me semble le mieux et valider avec mes collègues :)
Mike-31
Messages postés
18347
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
25 novembre 2024
5 104
25 févr. 2015 à 18:04
25 févr. 2015 à 18:04
Re,
Pas mal comme procédé, mais avec ce procédé tes cellules ne sont pas inaccessibles, il suffit de cocher une case d'option pour intervenir dans tes cellules autant de fois que tu le souhaites et n'importe qui peut intervenir
Pas mal comme procédé, mais avec ce procédé tes cellules ne sont pas inaccessibles, il suffit de cocher une case d'option pour intervenir dans tes cellules autant de fois que tu le souhaites et n'importe qui peut intervenir
20 févr. 2015 à 17:13
Si la personne a rempli la case B23 alors il ne peut pas aussi remplir la B24.
Sachant qu'il se trouve dans le cas où il a déjà choisi l'option A et que donc il n'a que les cellules de la colonne B accessibles.
J'espère etre claire ?