Procédure qui s'éxécute une seconde fois à partir de la moitié
Bonjour,
Je souhaite vérifier dans une plage de cellules (définie en début de procédure) si la valeur saisie dans chaque cellule n'est pas supérieure à un nombre situé en tête de colonne. Si une erreur est détectée au moment de la validation de la cellule, un message apparait puis la cellule est vidée (chaine vide).
Mon problème, c'est que je dois valider 2 fois le message, cela signifie que la procédure se déroule une seconde fois. Certes ma procédure est une Worksheet_SelectionChange, je conçois donc que remplacer le contenu d'une case contenant un nombre par une chaine vide constitue un changement qui nécessite que la procédure se relance, mais avec ma condition if isnumeric(cell), je ne comprends pas pourquoi je rentre une seconde fois dans cette partie de la procédure.
Pour info : le "for each" en bas me sert à vérifier si il reste des cases non remplies. Si oui, un bouton de validation reste inactif.
Voici la procédure
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim maplage As Range, note, x As Byte
Set maplage = Sheets("saisie").Range(Cells(3, 2), Cells(Range("A50").End(xlUp).Row, Range("Z1").End(xlToLeft).Column))
If Not Application.Intersect(Target, maplage) Is Nothing Then
For Each cell In maplage
note = Val(Right(Cells(2, cell.Column), Len(Cells(2, cell.Column)) - 2))
If IsNumeric(cell) Then
x = cell
If (cell > note) Or (cell < 0) Then
Cells(cell.Row, cell.Column).Select
MsgBox ("Valeur incorrecte")
Selection.Value = ""
Exit For
End If
End If
Next
For Each cell In maplage
If cell = "" Then
CommandButton1.Enabled = False
Exit For
Else: CommandButton1.Enabled = True
End If
Next
End If
End Sub |
Merci pour votre aide