Bonjour à tous, je réitère une question ici car la dernière fois la communauté a su me répondre vite et efficacement (merci)
Je cherche à afficher un message automatiquement sous forme de MsgBox, lorsque les valeurs horaires des cellules dépassent les 18heures. C'est a dire que lorsqu'en E14, E16, E17 et E18, l'heure est supérieure à 18h, il y ai un message qui s'affiche. Mon code ci-apres ne fonctionne pas .... Le "18:00:00" est surement lu comme une valeur texte en étant entre guillemets, j'ai essayer d'ajouter un *1 mais cela ne fonctionne pas mieux...
Un petit coup de pouce ?
Merci d'avance.
Le dit code que j’insère directement dans le code de ma feuille de calcul :
Private Sub Worksheet_Activate()
Sheets("Calcul").Activate
If Range("E14;E16:E18").Value >= "18:00:00" Then
MsgBox ("Le temps d'irrigation est trop élevé, il dépasse 18 heures par jour, ")
End If
End Sub
Il vous faut parcourir les cellules de la plage dans une boucle For...Next
Notez que Range("E14;E16:E18") s'écrit avec une virgule pas un point-virgule.
Code:
Dim c As Range
For Each c In Range("E14,E16:E18")
If c.Value >= TimeValue("18:00:00") Then
MsgBox ("Cellule " & c.Address() & " :" & vbCrLf & _
"Le temps d'irrigation est trop élevé, il dépasse 18 heures par jour, ")
End If
Next
Si vos 3 cellules sont >18h vous aurez alors 3 messages ??? Un peu lourd non ?
Déjà vous pourriez prévoir une mise en forme conditionnelle dans la feuille.
Ensuite si vous voulez vraiment du vba alors construisez votre message dans la boucle for et affichez-le à la fin :
Code:
Dim C as range
Dim Adresses as String
For each C in .....
if.... then
Adresses = Adresses & C.Address & vbcrlf
End if
Next
If Adresses <>"" then
Msgbox "Les cellules ci-dessous dépassent 18:00:00" & Adresses & vbcrlf & "Faites ce qu'il faut pour corriger".
end if
Par contre, vous avez un Sheets("Calcul").Activate dans un évènement WorkSheet_Activate de feuille ????
Mais sans fichier exemple, on ne peut que supputer.
Je n'irai donc pas plus loin, sans.