Bonjour.
Dans un tableau permettant de compter les heures d'absence, je souhaiterais qu'à chaque modification sur une ligne, un marqueur m'indique qu'une modification à eu lieu.
J'ai déjà mis en place un bout de code permettant de faire ceci :
Lors d'une modification dans l'une des 4 cellules sélectionnées, une étoile vient s'ajouter au bout du format dans la colonne K:K.
Le code présent dans l’événement Worksheet_Change :
Pourquoi avoir décalé de -1 la ligne active lors du changement de valeur dans les colonnes H et K ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If Not Application.Intersect(Target, Range("H3:H359, K3:K359")) Is Nothing Then ActiveSheet.Cells(ActiveCell.Row - 1, 11).NumberFormat = "[h]""h ""mm""mn ""ss""sec *""" ElseIf Not Application.Intersect(Target, Range("I3:J359")) Is Nothing Then ActiveSheet.Cells(ActiveCell.Row, 11).NumberFormat = "[h]""h ""mm""mn ""ss""sec *""" End If
Les colonnes I et J sont des choix par liste déroulante, les colonnes H et K sont des valeurs saisies. Lorsque je valide le choix de la cellule J4, la ligne active est bien la 4, mais lorsque je valide (par la touche entrée) la valeur saisie dans la cellule H4, la ligne active est la ligne 5 car excel saute une ligne, je dois donc déclarer de -1 ce numéro de ligne pour éviter que le format de la cellule K5 ne change par erreur.
Maintenant imaginons que l'opérateur saisisse une valeur en H4, puis pour valider, utilise la touche droite de son clavier, la ligne taggué sera alors celle au dessus, ce qui est une erreur.
Ma question : Comment puis-je faire pour éviter ce problème ?
J'ai bien pensé utiliser la fonction MoveAfterReturn = False à l'ouverture du classeur, mais elle semble inefficace...
Merci d'avance pour votre aide.![]()
Partager