Comment interdire modif ds cellule remplie ?
kormi
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
J'ai créé un tableau avec des cellules qui comportent des jours, des noms et des sommes qui sont verrouillées. Je remplis au fur et à mesure les cellules avec des chiffres. je souhaiterais verrouiller les cellules dès qu'elles contiennent un chiffre.
Comment ?
Merci d'avance
J'ai créé un tableau avec des cellules qui comportent des jours, des noms et des sommes qui sont verrouillées. Je remplis au fur et à mesure les cellules avec des chiffres. je souhaiterais verrouiller les cellules dès qu'elles contiennent un chiffre.
Comment ?
Merci d'avance
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
Hello kormi
Je te propose cette solution un peu basique:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If IsNull(ActiveCell.Value) Then ActiveSheet.Protect Contents:=False Else ActiveSheet.Protect Contents:=True End If End SubEn résumé: si la cellule que tu sélectionnes contient quelque chose, tu protèges la feuille, sinon, tu désactive la protection.
Cheer
Plubarj Tumeur-
Bonsoir,
Ta solution est certe un peu basique mais surtout tout à fait fausse.
Quand tu donne une "solution" il faudrait d'abord la tester !!!
copie cette sub dans un nouveau classeur et teste...Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("A1").Value = Target.Address Range("A2").Value = ActiveCell.Address Range("B4").Value = 12 Range("A5").Value = IsNull(Range("B4").Value) End Sub
Activecell donne l'adresse de la cellule dans lequel ont vient d'arriver...et non celle où ont était
idem pour Target.Address
La fonction IsNull ne fonctionne que sur des objet ou variable de type Variant, dans le cas soumis, renvoit toujour FAUX
la ligne...ActiveSheet.Protect Contents:=False
déprotège toute la feuille, ce qui veux dire qu'il n'y à plus de protection
la ligneActiveSheet.Protect Contents:=True
reprotège la feuille, mais ne protège pas la cellule concernée...
Voila le code comme il devrait être, du moins une solution.
Il faut d'abord déprotéger la feuille et décocher les verrouillage de toutes les cellules vides et ensuite reverrouillé la feuille
Sans cette condition ca marchera jamais, par facilité j'ai mis une macro qui peu déverrouillé par bloc.
Dim AncienneCellule As String Private Sub Worksheet_Activate() AncienneCellule = ActiveCell.Address End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If AncienneCellule <> "" Then If Range(AncienneCellule).Value <> "" Then Sheets("Feuil1").Unprotect Range(AncienneCellule).Locked = True Sheets("Feuil1").Protect End If End If AncienneCellule = Target.Address End Sub Sub déverrouilleCellules() Worksheets("Feuil1").Unprotect 'Changer l'adresse pour déverrouillé des cellules Sheets("Feuil1").Range("A1:G30").Locked = False Worksheets("Feuil1").Protect End Sub
Vérifié et tester.
A+
-
-
Hola hola, excuse, lermite!
J'ai bien testé mon truc avant de poster et j'ai commis l'erreur de faire une modif de mon post après coup.
Mais si on garde la même approche (protection générale de la feuille si la cellule sélectionnée n'est pas vide et protection générale si elle l'est), tu vois une erreur là dedans?Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Value <> 0 And ActiveCell.Value <> "" Then ActiveSheet.Protect Contents:=True Else ActiveSheet.Protect Contents:=False End If End Subje ne comprends pas pourquoi tu dis
'reprotège la feuille, mais ne protège pas la cellule concernée...'
Avec encore toutes mes excuses! -
Bonjour,
Je suis rouge de honte, tu voudras bien m'excuser pour les remarques que j'ai fait, je devais être drôlement fatigué pour pas avoir compris ta sub directement.
A+ -
Ohh, pas de quoi être rouge de honte, il y avait bien un truc foireux dans 'ma solution'. Merci donc de l'avoir soulevé.
Cheers -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Précision pour kormi...
La solution basique permet de protéger la feuille pour éviter de recopier sur une cellule mais ne procure pas une grande sécurité. Certaine manoueuvre peuvent endommager le fichier malgré la protection..
Ex: effacer des données "protégées"
Mettre données dans A1
Mettre la souris sur une cellule vide, pas relacher et marquer une sélection jusque A1 ensuite tape Delete !! tout le bloc est vide.
pour changer A1 (volontairement) dans une autre feuille mettre une valeur différente et sélectionner un bloc de la même grandeur que précédament et la recopier comme ci-dessus
A+