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
A voir également:
- Comment interdire modif ds cellule remplie ?
- Proteger cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Comment aller à la ligne dans une cellule excel - Guide
- Ds clock - Télécharger - Bureautique
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
5 réponses
Hello kormi
Je te propose cette solution un peu basique:
Cheer
Plubarj Tumeur
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
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?
'reprotège la feuille, mais ne protège pas la cellule concernée...'
Avec encore toutes mes excuses!
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 Sub je 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+
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
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+
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+
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 SubActivecell 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...
déprotège toute la feuille, ce qui veux dire qu'il n'y à plus de protection
la ligne
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 SubVérifié et tester.
A+