Problème avec code
Bonjour.
J'ai un erreur dans ce code.
Bloc if sans end if.
Je ne comprends pas pourquoi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C13")) Is Nothing Then 'Message pour le formta de l'heure
MsgBox "Il faut mettre : entre les chiffres pour l'heure ex: 8:30"
If Not Intersect(Target, Range("C21")) Is Nothing Then
MsgBox "Dans le cas où la mesure a été prise et était nulle, il faut l'indiquer clairement en inscrivant 0"
If Not Intersect(Target, Range("C30")) Is Nothing Then _
MsgBox "Lorsque la quantité d'eau disponible est limitée et que les prélèvements sont réalisés sur plusieurs journées, inscrire les deux heures d'échantillonnage dans le même ordre que le nombre de contenants (ex. 9:30 et 11:45). Indiquer les dates dans la case Remarques."
If Not Intersect(Target, Range("C44")) Is Nothing Then _
MsgBox "Dans le cas où la mesure a été prise et était nulle, il faut l'indiquer clairement en inscrivant 0"
If Not Intersect(Target, Range("C17")) Is Nothing Then _
MsgBox "Dans le cas où la mesure n'a pu être prise, mettre un 'X' comme valeur"
If Not Intersect(Target, Range("C19")) Is Nothing Then _
MsgBox "Dans le cas où la mesure n'a pu être prise, mettre un 'X' comme valeur"
End If
Dim t As Byte
For t = 3 To 8 ' no de colonnes
If (Cells(14, t)) <> "" Then
If (Cells(13, t)) > (Cells(14, t)) Then
MsgBox "L'heure de départ doit être après l'arrivée"
End If
End If
Next t
End Sub
Bonjour,
Ce code ne devrait en principe plus bloquer :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim t As Byte
If Not Intersect(Target, Range("C13")) Is Nothing Then 'Message pour le formta de l'heure
MsgBox "Il faut mettre : entre les chiffres pour l'heure ex: 8:30"
End if
If Not Intersect(Target, Range("C21, C44")) Is Nothing Then
MsgBox "Dans le cas où la mesure a été prise et était nulle, il faut l'indiquer clairement en inscrivant 0"
End if
If Not Intersect(Target, Range("C30")) Is Nothing Then
MsgBox "Lorsque la quantité d'eau disponible est limitée et que les prélèvements sont réalisés sur plusieurs journées, inscrire les deux heures d'échantillonnage dans le même ordre que le nombre de contenants (ex. 9:30 et 11:45). Indiquer les dates dans la case Remarques."
End if
If Not Intersect(Target, Range("C17, C19")) Is Nothing Then
MsgBox "Dans le cas où la mesure n'a pu être prise, mettre un 'X' comme valeur"
End if
For t = 3 To 8 ' no de colonnes
If Cells(14, t).value <> "" Then
If Cells(13, t).value > Cells(14, t).value Then
MsgBox "L'heure de départ doit être après l'arrivée"
End If
End If
Next t
End Sub
Cependant, je ne suis pas sûr que vous parveniez au résultat escompté. Il vous faudrait plutôt une procédure
Private Sub Worksheet_Change(ByVal Target As Range)
vu qu'il s'agit apparemment de validation de saisie.
Il vous faut définir des fonctions validation. Exemple pour l'heure :
Function ValidHeure(cell as range) as Boolean
if cell.value Like "[0-2]{0,}[0-9]:[0-5][0-9]" then
ValidHeure = true
end if
end function
Puis dans votre macro :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t As Byte
If Not Intersect(Target, Range("C13")) Is Nothing Then 'Message pour le formta de l'heure
if not ValidHeure(Target) then
MsgBox "Il faut mettre : entre les chiffres pour l'heure ex: 8:30"
end if
End if
.......
End sub
Je ne suis pas sûr du résultat pour la validation car je ne peux la tester mais le principe y est...
Cordialement,
Bonjour,
Chaque bloc If, doit se terminer par un "End If".
En indentant le code, on s'aperçoit qu'il en manque quelques uns... A moins que tu ne veuilles faire un bloc : If ElseIf ElseIf ElseIf End If...
Regarde ce code indenté correctement...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C13")) Is Nothing Then 'Message pour le formta de l'heure
MsgBox "Il faut mettre : entre les chiffres pour l'heure ex: 8:30"
If Not Intersect(Target, Range("C21")) Is Nothing Then
MsgBox "Dans le cas où la mesure a été prise et était nulle, il faut l'indiquer clairement en inscrivant 0"
If Not Intersect(Target, Range("C30")) Is Nothing Then _
MsgBox "Lorsque la quantité d'eau disponible est limitée et que les prélèvements sont réalisés sur plusieurs journées, inscrire les deux heures d'échantillonnage dans le même ordre que le nombre de contenants (ex. 9:30 et 11:45). Indiquer les dates dans la case Remarques."
If Not Intersect(Target, Range("C44")) Is Nothing Then _
MsgBox "Dans le cas où la mesure a été prise et était nulle, il faut l'indiquer clairement en inscrivant 0"
If Not Intersect(Target, Range("C17")) Is Nothing Then _
MsgBox "Dans le cas où la mesure n'a pu être prise, mettre un 'X' comme valeur"
If Not Intersect(Target, Range("C19")) Is Nothing Then _
MsgBox "Dans le cas où la mesure n'a pu être prise, mettre un 'X' comme valeur"
End If
'? End If manquant
'? End If manquant
'? End If manquant
'? End If manquant
'? End If manquant
Dim t As Byte
For t = 3 To 8 ' no de colonnes
If (Cells(14, t)) <> "" Then
If (Cells(13, t)) > (Cells(14, t)) Then
MsgBox "L'heure de départ doit être après l'arrivée"
End If
End If
Next t
End Sub