Comment condamner l'écriture de cellule en fonction de..?
Bonjour à toutes et tous,
Je me retrouve face à une impasse excel... La fois précédente vous m'aviez sortie de cette panade haut là main, je retente donc ma chance sur le forum ! Il me faudrait une macro pour bloquer l'écriture dans certaines cellules en fonction de l'info contenue dans d'autres cellules :
J'ai un tableau avec en colonne A1 "client identifié", colonne B1 "décès déjà connu", colonne C1 "décès renseigné", colonne D1 "montant capital", colonne E1 "date transmission", colonne F1 "montant".
Je souhaite que :
. Si la colonne A (A2, A3, A4....) = "NON", que toues les autres cellules B C D E F de la même ligne soient condamnées en écriture
. Si la colonne A (A2, A3, A4....) = "OUI" et la colonne B (B2, B3, B4...) = "OUI", que la cellule E de la même ligne soit condamnée
. Si la colonne A (A2, A3, A4....) = "OUI" et la colonne B (B2, B3, B4...) = "NON", que toutes les cellules C D E F soient libres
Je joins à ma requête un visuel pour imager ma demande, "KO" = cellule condamnée, impossible d'écrire dans la cellule.
Merci à vous !
Cécile
Bonjour
eviter si possible de poster en double
Cordialement
bonsoir
photo shop ?????
pour consolider la reponse d'Amadeus ;une piece jointe (une vraie) serai bien venue ; desolé je n'ai rien vu
cordialement
cecileuh a écrit :Bonjour à toutes et tous,
Je me retrouve face à une impasse excel... La fois précédente vous m'aviez sortie de cette panade haut là main, je retente donc ma chance sur le forum ! Il me faudrait une macro pour bloquer l'écriture dans certaines cellules en fonction de l'info contenue dans d'autres cellules :
J'ai un tableau avec en colonne A1 "client identifié", colonne B1 "décès déjà connu", colonne C1 "décès renseigné", colonne D1 "montant capital", colonne E1 "date transmission", colonne F1 "montant".
Je souhaite que :
. Si la colonne A (A2, A3, A4....) = "NON", que toues les autres cellules B C D E F de la même ligne soient condamnées en écriture
. Si la colonne A (A2, A3, A4....) = "OUI" et la colonne B (B2, B3, B4...) = "OUI", que la cellule E de la même ligne soit condamnée
. Si la colonne A (A2, A3, A4....) = "OUI" et la colonne B (B2, B3, B4...) = "NON", que toutes les cellules C D E F soient libres
Je joins à ma requête un visuel pour imager ma demande, "KO" = cellule condamnée, impossible d'écrire dans la cellule.
Merci à vous !
Cécile
Public Sub Worksheet_Change(ByVal Target As Range)
'Worksheet_change se declenche a chaque tentative de modification
'Elle transmet via Target la cellule que l'on modifie
On Error GoTo NEVER_Protected
'on desactive temporairement la protection de la feuille
ActiveSheet.Unprotect
'Si on est dans la colonne A pour analyse NON
derlign_a = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("A2:A" & derlign_a)) Is Nothing Then
'cas special : si le client etait non (erreur de saisie par exemple) puis devient oui
'je libere les colonnes de droite pour autoriser saisie colonne B ensuite selon OUI/NON colonne B
'mes boucles IF feront le travail à autoriser ou non
If Target.Value <> "" And Target.Value = "OUI" Then
Target.Offset(0, 1).Locked = False 'Colonne B
Target.Offset(0, 2).Locked = False 'Colonne C
Target.Offset(0, 3).Locked = False 'Colonne D
Target.Offset(0, 4).Locked = False 'Colonne E
Target.Offset(0, 5).Locked = False 'Colonne F
End If
' on analyse si la cellule sur laquelle on est fait bien partie de la colonne A
If Target.Value <> "" And Target.Value = "NON" Then
'MsgBox "cas non"
Target.Offset(0, 1).Locked = True 'Colonne B
Target.Offset(0, 2).Locked = True 'Colonne C
Target.Offset(0, 3).Locked = True 'Colonne D
Target.Offset(0, 4).Locked = True 'Colonne E
Target.Offset(0, 5).Locked = True 'Colonne F
End If
If Target.Value <> "" And Target.Value = "OUI" And Target.Offset(0, 1) = "OUI" Then
' MsgBox "cas oui oui"
Target.Offset(0, 1).Locked = False 'Colonne B
Target.Offset(0, 2).Locked = False 'Colonne C
Target.Offset(0, 3).Locked = False 'Colonne D
Target.Offset(0, 4).Locked = True 'Colonne E
Target.Offset(0, 5).Locked = False 'Colonne F
End If
If Target.Value <> "" And Target.Value = "OUI" And Target.Offset(0, 1) = "NON" Then
'MsgBox "cas oui non"
Target.Offset(0, 1).Locked = False 'Colonne B
Target.Offset(0, 2).Locked = False 'Colonne C
Target.Offset(0, 3).Locked = False 'Colonne D
Target.Offset(0, 4).Locked = False 'Colonne E
Target.Offset(0, 5).Locked = False 'Colonne F
End If
End If
'si on est dans la colonne b je force le passage a la colonne A pour activer les contrôles ci-dessus
'je force le passage sur B pour activer les controles saisie colonne A/B
'Si on est dans la colonne B
derlign_b = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("B2:B" & derlign_b)) Is Nothing Then
Target.Offset(0, -1).Activate
Target.Offset(0, -1).Value = Target.Offset(0, -1).Value
End If
'Cas classeur non protégé , le on error me fait passer ici et en dessous la protection s'active à la deuxième boucle ce sera bon
'ou je peux afficher un message à l'ouverture attention classeur non protégé et je ferme ma boucle
NEVER_Protected:
'on réactive la protection de la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End SubBonsoir
Voici le code que je propose.
Merci de tester avec la PJ le comportement
Cdt
Bonjour,
Autre propositionen m'aidant du classeur de tichou3 :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
ActiveSheet.Unprotect
Application.EnableEvents = False
For Each c In Target
If Target.Column = 1 Then
Cells(Target.Row, 2).Resize(, 5) = IIf(LCase(Target) = "non", "KO", "")
Cells(Target.Row, 2).Resize(, 5).Locked = LCase(Target) = "non"
ElseIf Target.Column = 2 Then
Cells(Target.Row, 5) = IIf(LCase(Target) = "oui", "KO", "")
Cells(Target.Row, 5).Locked = LCase(Target) = "oui"
End If
ActiveSheet.Protect
Next c
Application.EnableEvents = True
End SubSupprime les lignes avec Iif(...) si tu ne désires pas y mettre KO ou conserver des mentions déjà saisies
Tu peux modifier plusieurs cellules en une fois (collé, suppression)
eric
Bonjour à tous,
Merci Ti_chou et Eriiic c'est super !!! Je ne comprends pas comment vous faites, c'est un peu la 4ème dimension pour moi mais à chaque fois je suis bluffée !
Je vous confirme que ca marche bien ! Encore un grand merci pour le temps que vous y avez consacré ! Merci merci !
cecileuh a écrit :Bonjour à tous,
Merci Ti_chou et Eriiic c'est super !!! Je ne comprends pas comment vous faites, c'est un peu la 4ème dimension pour moi mais à chaque fois je suis bluffée !
Je vous confirme que ca marche bien ! Encore un grand merci pour le temps que vous y avez consacré ! Merci merci !
Bonjour
Ravi que cela vous plaise
Cdt,