Verrouiller une cellule en fonction de sa propre valeur
Résolu
AndGu
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis un autodidacte sur Excel que je suis loin de maîtriser... mais je me débrouille (avec de lointaines bases en programmation) pour l'utilité que j'en ai. J'ai épluché des dizaines de sujets qui ressemblent à mon projet mais je ne trouve pas un cas parfaitement similaire au mien.
Voici mon cas :
Je partage un tableau avec mes collègues dans lequel je "bloque" certaines cases en les remplissant avec un "x" : le but étant que ce "x" ne soit pas malencontreusement effacé. L'entrée de ces "x" est aléatoire, il ne s'agit pas de bloquer une ligne ou une colonne. En gros, l'idée serait qu'on ne puisse plus saisir une autre entrée dès lors qu'une case s'est vue attribuer la valeur "x". Et pour aller au bout des choses, imaginons que je doive corriger une entrée, l'idéal serait que cela ne s'applique qu'à condition qu'une case possède une valeur "1" (par exemple).
Je n'ai pas de pièce jointe à fournir vu que je ne peux pas sortir mon fichier du boulot mais je peux créer un simple tableau avec quelques "x" si ça peut aider... bien que je n'en voie pas vraiment l'intérêt ^^
D'avance merci :)
Je suis un autodidacte sur Excel que je suis loin de maîtriser... mais je me débrouille (avec de lointaines bases en programmation) pour l'utilité que j'en ai. J'ai épluché des dizaines de sujets qui ressemblent à mon projet mais je ne trouve pas un cas parfaitement similaire au mien.
Voici mon cas :
Je partage un tableau avec mes collègues dans lequel je "bloque" certaines cases en les remplissant avec un "x" : le but étant que ce "x" ne soit pas malencontreusement effacé. L'entrée de ces "x" est aléatoire, il ne s'agit pas de bloquer une ligne ou une colonne. En gros, l'idée serait qu'on ne puisse plus saisir une autre entrée dès lors qu'une case s'est vue attribuer la valeur "x". Et pour aller au bout des choses, imaginons que je doive corriger une entrée, l'idéal serait que cela ne s'applique qu'à condition qu'une case possède une valeur "1" (par exemple).
Je n'ai pas de pièce jointe à fournir vu que je ne peux pas sortir mon fichier du boulot mais je peux créer un simple tableau avec quelques "x" si ça peut aider... bien que je n'en voie pas vraiment l'intérêt ^^
D'avance merci :)
A voir également:
- Verrouiller une cellule en fonction de sa propre valeur
- Verrouiller cellule excel - Guide
- Fonction si et - Guide
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Bureautique
- Excel cellule couleur si condition texte - Guide
2 réponses
Bonjour,
une autre approche sans protéger la feuille.
https://www.cjoint.com/c/HAzskGrmYgb
eric
une autre approche sans protéger la feuille.
https://www.cjoint.com/c/HAzskGrmYgb
eric
J'ignore pourquoi mais le 1er "x" (en C2) n'est jamais sélectionnable.
Ben oui, c'est ça le truc. Si tu ne peux le sélectionner, tu ne peux pas le modifier ! :-)
Met un 1 A2 et tu pourras le modifier. Comme tu ne donnes aucun détail précis ça concerne toute la ligne.
Pour toutes les feuilles, dans thisworkbook :
eric
Ben oui, c'est ça le truc. Si tu ne peux le sélectionner, tu ne peux pas le modifier ! :-)
Met un 1 A2 et tu pourras le modifier. Comme tu ne donnes aucun détail précis ça concerne toute la ligne.
Pour toutes les feuilles, dans thisworkbook :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If LCase(Target) = "x" And Sh.Cells(Target.Row, 1) <> 1 Then Target.Offset(, 1).Select End Sub
eric
Oups, désolé Eric. Je n'avais pas compris que c'était par ligne. Je pensais que le "1" en A3 était sensé influencer tout le tableau.
Tu penses pouvoir faire en sorte que "autoriser modif" soit concentré sur une seule cellule ?
J'exploite ton savoir jusqu'au bout ;) Sinon pas de soucis, je masquerai une colonne.
Merci :)
Tu penses pouvoir faire en sorte que "autoriser modif" soit concentré sur une seule cellule ?
J'exploite ton savoir jusqu'au bout ;) Sinon pas de soucis, je masquerai une colonne.
Merci :)
Va falloir à apprendre à être précis... A chaque détail non fourni on improvise et peu de chance que ce soit exactement ce que tu avais en tête.
1 par feuille ou 1 pour tout le classeur ?
avec A1 de chaque feuille :
Tu pourrais même mettre une case à cocher 'Autoriser corrections' et exploiter le VRAI de la cellule liée :
1 par feuille ou 1 pour tout le classeur ?
avec A1 de chaque feuille :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If LCase(Target) = "x" And Sh.[A1] <> 1 Then Target.Offset(, 1).Select End Sub
Tu pourrais même mettre une case à cocher 'Autoriser corrections' et exploiter le VRAI de la cellule liée :
If LCase(Target) = "x" And Sh.[A1] Then Target.Offset(, 1).Select
Une cellule par feuille, désolé. Pas toujours évident de décrire tout ce qu'on a en tête tant ça parait évident quand on est dans le contexte.
Petit détail, à chaque fois que je sélectionne plusieurs cases, j'ai un pop-up de VB : "erreur d'execution '7' : mémoire insuffisante".
Peut-on y remédier ?
Mis à part ce détail, c'est parfait !!!
Petit détail, à chaque fois que je sélectionne plusieurs cases, j'ai un pop-up de VB : "erreur d'execution '7' : mémoire insuffisante".
Peut-on y remédier ?
Mis à part ce détail, c'est parfait !!!
Sans vouloir abuser :
- Serait-il possible de rendre la macro active sur tout le classeur ?
J'ai également quelques petites questions :
- Peut-on ajouter une autre condition de blocage ? (je pense à la majuscule)
- Vous avez utilisé le "ctrl+d" pour annuler le blocage (et ça fonctionne bien) mais est-il envisageable de créer une condition dans une cellule ? => if A1 = 1 then lock else unlock
- Serait-il possible que vous ajoutiez les explications des différentes étapes de VB ? Comme je l'ai expliqué, je suis autodidacte... j'aime bien comprendre. Parce que votre macro est géniale mais je suis clairement largué là.
D'avance merci :)
PS: si vous avez le temps, je suis toujours preneur pour une réponse à mes questions... par curiosité ;)