Protection d'une feuille par une procédure événementielle

bigsmoke

XLDnaute Nouveau
Bonjour à tous,
Je réalise en ce moment un fichier excel destiné à guider des opérateurs. En fait l'opérateur effectue une saisie environs toutes les 30 minutes sur le fichier. Il saisit au début de la colonne un parfum puis les autres informations relatives à ce produit.
Ce fichier contient des procédures événementielles pour répondre au cahier des charges suivant:
- Proposer (par messagebox et en dégrisant la cellule concernée) à l'opérateur de faire une mesure. Les mesures interviennent en début de parfum ( ou changement de parfum), milieu de production et fin de production.
- Lorsque l'opérateur fait du caramel, la colonne dans laquelle il fait sa saisie se verrouille jusqu'à ce qu'il ait rempli les 4 dernières cellules de cette colonne.
Mon soucis c'est déjà que j'ai une partie de mon code qui bug: la phase de verrouillage des cellules avant protection. Et dans un second temps, j'ai remarqué que la protection de la feuille ne tenait pas: "en effet si j'effectue un triple ou quadruple clic sur une cellule, la protection saute ?!?!?!? et j'aimerai comprendre pourquoi et comment remédier à ce problème (qui m'empêche presque de dormir XD....).
Comme les exemples valent mieux que les longs discours, j'ai poster un exemple de fichier en PJ. Je suis débutant en VBA et ouvert à toutes critiques et toutes solutions.
En vous remerciant,

Adrien
 

Pièces jointes

  • TEST.xls
    82.5 KB · Affichages: 41
  • TEST.xls
    82.5 KB · Affichages: 43
  • TEST.xls
    82.5 KB · Affichages: 45
Dernière édition:

sigismond

XLDnaute Occasionnel
Re : Protection d'une feuille par une procédure événementielle

Bonjour à tous et à toi bigsmoke,

J'ai parcouru ton code et je te livre mes premières impressions avant d'aller me coucher.

Dans la ligne : If Target.Value = Target.Next(, -2).Value Then

L'aide VBA définit la propriété value (de la range Target) comme :
Renvoie ou définit une valeur de type Variant qui représente la valeur de la plage spécifiée.
L'aide VBA définit la propriété value2 (de la range Target) comme :
Renvoie ou définit la valeur de la cellule. Type de données Variant en lecture-écriture.

Il me semble que tu fais la confusion entre l'adresse et le contenu.
EDIT :
avec des cellules fusionnées, value te renvoie un variant contenant un tableau avec la valeur de chaque cellule.

Comme ton code attend une seule valeur, c'est ce qui provoque les erreurs que ta gestion d'erreur ne fait que masquer.

Moralité : Tout le monde, ici est d'accord pour fuir les cellules fusionnées :)

Pour le déverrouillage des cellules sur double clic que j'ai constaté, je n'avais jamais rencontré le phénomène mais je fais confiance aux écumeurs de tableurs qui hantent le forum pour te fournir une solution.

Bonne nuit ou peut être bonne journée.

Sigismond
 
Dernière édition:

bigsmoke

XLDnaute Nouveau
Re : Protection d'une feuille par une procédure événementielle

Bonjour,
Tout d'abord merci Sigismond et désolé de ne pas être aussi vif pour le temps de réponse :).
Pour ce qui est de la ligne:
Code:
If Target.Value = Target.Next(, -2).Value Then
Elle me sert à comparer les valeurs de 2 cellules voisines. En effet, si elles sont différentes à la ligne des parfum, c'est qu'il y a eu un changement de parfum. (Peut-être est-il préférable d'utiliser la méthode
Code:
Target.Offset()
au lieu de
Code:
Target.Next
?)
Enfin j'ai bien conscience que VBA et cellules fusionnées ne font pas bon ménage mais pour une histoire de confort et d'esthétique je dois garder les cellules fusionnées... Je vais donc continuer de réfléchir un peu sur ce phénomène de déverrouillage des cellules par double clique. ^^
De plus, en parallèle, je dois effectuer une autre tâche qui nécessiterait des compétences en POO. Je cherche notamment à construire un module de classe qui contiendrait 2 variables dont un tableau de string dynamique.
Le soucis étant que je n'ai absolument aucune idée de la façon de gérer un tableau dynamique avec les module de classe (notamment les
Code:
property Let
). J'ai vu que tu avais posté sur ce sujet, il y a quelques temps sur le forum. Aurais-tu quelques conseils?
 

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux