Remplir puis protéger une cellule

Résolu/Fermé
FlopD Messages postés 3 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 12 décembre 2013 - 6 sept. 2013 à 12:15
FlopD Messages postés 3 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 12 décembre 2013 - 12 déc. 2013 à 18:56
Bonjour,
Existe-il un moyen de protéger une cellule une fois celle-ci remplie.

Je m'explique: nous scannons via un lecteur de code barre des lots de produits, le code barre s'affiche alors dans une cellule du fichier excel, puis le curseur se déplace automatiquement vers le bas.
Le risque est qu'en cas de fausse manipe, l'opérateur replace le curseur plus haut dans la colonne et recommence à scanner, écrasant de fait l'information des cellules déjà remplies.

L'idéal aurait était que si cela se produisait, un message d'avertissement s'affiche pour prévenir l'opérateur du risque d'écrasement de données, celui-ci validerait ou annulerait l'écrasement. Cela laisse la possibilité des corriger une cellule en cas de mauvaise lecture de la part du code barre.

Je suis preneur de toutes suggestions, mes recherches sur différents forums n'ayant pas abouties.
A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
6 sept. 2013 à 13:37
Bonjour,


Trois pistes pour résoudre ton problème :
- utiliser le verrouillage des cellules et n'autoriser la saisie que dans la cellule suivant celle qui vient d'être remplie (cf. ActiveSheet.Protection.AllowEditRanges.Add en macro VBA) ;
- empêcher de se retrouver dans une cellule déjà remplie et déplacer le curseur automatiquement (ex. si tes données sont en colonne A et si l'opérateur place son curseur en A12 et clique, la cellule active serait B12 ; cf. Target et Target.Offset(1,0).Select ;
- masquer la colonne de données pour ne pas que l'opérateur puisse sélectionner une des cellules interdites (en réalité on pourrait toujours le faire avec les flèches du clavier).

A+
0
FlopD Messages postés 3 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 12 décembre 2013
6 sept. 2013 à 14:04
Salut Zoul67,
Merci pour ton retour aussi rapide!!
Je vais étudier ta première proposition et voir si je peux bricoler quelque chose avec.

L'idée est que les cellules ne soient pas totalement verrouillées, mais protégées contre une réécriture intempestive (mauvais placement du curseurs, touche du clavier enfoncée par inadvertance). En effet, il arrive que le lecteur de code barre fasse des erreurs, d'autre fois c'est l'opérateur qui scan deux fois un même lots. Il peut être donc nécessaire de réenregistrer la cellule.

Autrement dis, une fois la cellule est remplie, si un second enregistrement est réalisé par dessus, un msgboxe d'alerte s'affiche et demande s'il l'on est sûr de vouloir écraser l'information contenue dans la cellule. Pour l'instant je bidouillais une truc avec la validation des données mais sans arriver exactement à mes fins.

Je vais me pencher sur tes conseils. Encore merci!
0
FlopD Messages postés 3 Date d'inscription vendredi 6 septembre 2013 Statut Membre Dernière intervention 12 décembre 2013
Modifié par FlopD le 12/12/2013 à 19:00
Salut,

J'ai fini par trouver la réponse à mon problème, je vous post le bout de code m'ayant permis de le résoudre et le lien du site, en esperant que cela pourra servir à d'autres:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([B2:B13], Target) Is Nothing And Target.Count = 1 Then
     ActiveSheet.Unprotect Password:=""
     Target.Locked = True
     Target.Interior.ColorIndex = 44
     ActiveSheet.Protect Password:=""
  End If
End Sub



Ici le code est valable pour la plage de celullue B2 à B13. Dans mon programme je l'ai affecté à la colonne où sont entrés les codes barres.

(En prime la celulle qui a été remplie se colore)

Le lien du site: http://boisgontierjacques.free.fr/pages_site/evenements.htm#ProtectionDyn

@+
0