Bloquer le contenu d'une cellule

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Je voudrais bloquer le contenu d'une cellule (par exemple [C30]) de la manière suivante : si, dans une certaine cellule de la feuille (par exemple [C28]), apparaît un "?", alors quand on rentre une valeur dans la cellule [C30], le chiffre qui y était avant la saisie est conservé.
Exemple :
[C28] = 2
[C30] = 0.5
Je rentre en [C30] 0.8 --> [C30] = 0.8
Maintenant :
[C28] = "?" (pour cause d'erreur)
[C30] = 0.5
Je rentre en [C30] 0.8 --> [C30] = 0.5

IMPORTANT
Quand on rentre une valeur en [C30] --> macro événementielle.
Dans le module de feuille :
VB:
If Not Intersect(Target, [C30]) Is Nothing Then

blablabla

End If

Comment s'y prendre ?

Merci d'avance pour tout commentaire.
 

jp14

XLDnaute Barbatruc
Re : Bloquer le contenu d'une cellule

Bonsoir

Un code à tester


Code:
Option Explicit
Dim Valeur1 As String

Private Sub Worksheet_Activate()
Valeur1 = Range("C30")' on recupère la valeur de la cellule lors de l'activation
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$30" Then Exit Sub
If Range("c28") = "?" Then
    If Valeur1 <> Target.Value Then Target = Valeur1
End If
If Range("c28") <> "?" Then
     Valeur1 = Target.Value
     'Range("d1") = Valeur1 ' pour test
End If
End Sub
Correction du code
JP
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Bloquer le contenu d'une cellule

Bonjour Magic_Doctor, [Edit] salut eriiiic, René, jp14,

Dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If [C28] = "?" And IsNumeric([MaVal]) Then [C30] = [MaVal]
ThisWorkbook.Names.Add "MaVal", [C30].Value, Visible:=False 'nom défini masqué
Application.EnableEvents = True
End Sub
Pour que cela fonctionne il faut que le nom "MaVal" ait été créé.

Il sera créé après validation ou effacement d'une cellule quelconque.

A+
 
Dernière édition:

Chris401

XLDnaute Accro
Re : Bloquer le contenu d'une cellule

Bonjour

Tu peux faire avec la validation de données.
Sélectionne C30
DONNEES ==> Validation
Dans Autoriser : Personnalisé
Formule : =$C$28<>"?"

Cordialement
Chris
 

Pièces jointes

  • BloquerCellule.xlsx
    13.2 KB · Affichages: 25
  • BloquerCellule.xlsx
    13.2 KB · Affichages: 23

eriiic

XLDnaute Barbatruc
Re : Bloquer le contenu d'une cellule

Bonjour Eriiiic,

Je viens d'essayer ainsi :
...
Malheureusement, ça plante.
Oui, il faut désactiver les événements sinon ça boucle en permanence :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)    If Not Intersect(Target, [C30]) Is Nothing Then
        If [C28] = "?" Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
        End If
    End If
End Sub
mais par validation de données c'est pas mal
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Bloquer le contenu d'une cellule

Bonsoir à tous,

Désolé de ne pas avoir pu répondre avant.

D'abord un grand merci pour vos interventions.
Après avoir essayé toutes les solutions proposées, j'ai fini par retenir celle de job75 qui correspondait le mieux à ce que je désirais.

Bonne fin de soirée à tous.

PS : au fait nene06, je le confirme, la socca niçoise est franchement meilleure que celle d'ici (faina).
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz