Verrouiller une cellule.

Talzatior

XLDnaute Occasionnel
Bonjour tout le monde ;)

J'avance doucement sur mon projet, mais j'ai un petit souci là ...
Je souhaite verrouiller la case B2 de la feuille "suivi affaire", je ne sais si je m'y suis bien pris ...

Voilà mon code :

Code:
Private Sub NewNum_Affaire_Click()
    ModNumAffaire.CreateAffaire
 'Verrouille la cellule contenant le numéro d'affaire (B2)
    Worksheets("suivi affaire").Range("B2").Locked = True
 'Insertion date du jour en B3
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
 'Griser le bouton après clic
    'NewNum_Affaire.Enabled = False
End Sub

Je me dis que peut-être mon erreur est énorme ... et que je ne la vois pas, ou alors est-elle trop subtile pour moi ;)

Merci par avance à tous ceux qui prendront la peine de lire mon message ;)
 

Excel-lent

XLDnaute Barbatruc
Re : Verrouiller une cellule.

Bonjour talzatior,

Talzatior à dit:
Je souhaite verrouiller la case B2 de la feuille "suivi affaire"

Code:
...
'Verrouille la cellule contenant le numéro d'affaire (B2)
    Worksheets("suivi affaire").Range("B2").Locked = True
...

Je me dis que peut-être mon erreur est énorme ... et que je ne la vois pas, ou alors est-elle trop subtile pour moi ;)

Ton code est juste mais incomplet! (de plus il est inutile lol)

En faite, ce que tu fais revient à sélectionner la cellule B2 de ton onglet "Suivi affaire" et cliquer sur "format" / "cellule" / onglet "protection" et cocher la case "Verrouillé".

Or :
-> TOUTES les cellules sont par défaut en mode "Verrouillé", d'où l'inutilité de ton code ci-dessus
par contre, il serait peut-être bien de penser à déverrouiller les autres cellules où la saisie est autorisé ;)

-> sans le VBA, une fois cette manip faite, pour que ta(tes) cellules soient vraiment verrouillée(s), tu dois protéger ta feuille : "outils" / "protection" / "protéger la feuille", or cette étape tu ne l'as pas faite!

Pour cela, tu aurais dû écrire par exemple :
Code:
Worksheets("suivi affaire").Protect Password:="[COLOR="DarkOrange"][B][I]ton mot de passe[/I][/B][/COLOR]"

Evidement, si plus tard tu veux modifier cette cellule verrouillée, avant il faudra bien penser à déverrouiller ta feuille! ;)

Si en VBA, le code sera :
Code:
Worksheets("suivi affaire").Unprotect Password:="[COLOR="DarkOrange"][B][I]ton mot de passe[/I][/B][/COLOR]"

Bonne après midi

Edition : évidement, tu n'es pas obligé de mettre un mot de passe! Dans ce cas tu ne devras écrire que :
Code:
Worksheets("suivi affaire").Protect
...
Worksheets("suivi affaire").Unprotect
 
Dernière édition:

Talzatior

XLDnaute Occasionnel
Re : Verrouiller une cellule.

Merci à toi Excel-lent ;)

Mais je viens de trouver l'info que tu m'as donnée à l'instant sur un autre fofo ... Et mon souci est que, j'ai un bouton sur lequel je clique, cela lance une requête pour chercher un numéro d'affaire (entre autre) dans une bdd access ... soit ...
Mais je souhaiterai, au final, que ma cellule soit inchangeable, mais uniquement cette cellule, pas les autres cellules de la feuilles "suivi affaire" ... Donc du coup, la manière de faire m'échappe un peu, je dois avouer ....

Si tu as, ou qui que ce soit d'autre d'ailleurs, un tuyau à me refiler pour ça, cela me retirerait une bonne épine du pied ;)

Merci en tous les cas ;)
 

Excel-lent

XLDnaute Barbatruc
Re : Verrouiller une cellule.

Salut Talzatior

Le plus simple est d'utiliser l'enregistreur de macro ;)

Tu aurais ainsi obtenu la macro suivante :
Code:
Sub Macro1()
' Macro enregistrée par Excel-lent
    Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("B2").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Qui fonctionne très bien, évidement, après tu peux la simplifier et la raccourcir ainsi :
Code:
Sub Macro1()
With Worksheets("suivi affaire")
    .Cells.Locked = False
    .Range("B2").Locked = True
    .Protect
End With
End Sub

Mais évidement, avec quelques commentaires et un peu de mise en page (cf. ci-dessous), c'est plus sympa et plus facile à comprendre ;)

Code:
Sub Macro1()
[COLOR="Green"]' Macro enregistrée et modifiée par Excel-lent[/COLOR]
    
With Worksheets("suivi affaire")

[COLOR="Green"]' Déverrouiller TOUTES les cellules[/COLOR]
    .Cells.Locked = False
    
[COLOR="Green"]' Verrouiller que la cellule B2[/COLOR]
    .Range("B2").Locked = True
    .Protect

End With
End Sub

Évidement, comme expliqué dans mon précédent post, tu peux remplacer :
Code:
.Protect

par :
Code:
.Protect  Password:="[COLOR="DarkOrange"][B]ton mot de passe[/B][/COLOR]"

Bonne fin d'après midi
 

madlolo

XLDnaute Junior
Re : Verrouiller une cellule.

Mais, à y regarder de plus près, on verrouille alors TOUTE la feuille, alors qu'on ne cherche qu'à verrouiller UNE ou PLUSIEURS cellules ?
Comment ne verrouiller qu'UNE SEULE cellule ?

Très cordialement,
 

jeanpierre

Nous a quitté
Repose en paix
Re : Verrouiller une cellule.

Bonjour madlolo, le fil,

Pour vérouiller une ou plusieurs cellules, Format/Cellules, onglet Protection et on décoche Vérouillée.

Ensuite, selection de la cellule ou des cellules à vérouiller (avec la touche Ctrl enfoncer pour selection multiple) et retour à Format/Cellules, même onglet et cocher Vérouillée.

Reste à protéger la feuille par Outils/Protection avec ou sans mot de passe.

Bon après-midi.

Jean-Pierre
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.