Bonjour à toute l'équipe du forum.
Je viens vous demander de l'aide, car toujours débutant en VBA, je n'ai pas encore la connaissance ou les subtilités de chaque fonction ou "grammaire" du codage...
Je suis en train de concevoir un fichier excel permettant de gérer la périodicité de matériel, avec une première feuille contenant la liste complète du matériel et un "bouton" activant une macro (cette dernière affiche une MsgBox)
Une deuxième feuille contenant le détail du matériel, avec les dates de fabrication et date limite d'emploi.
En gros, pour les différentes conditions:
Une corde est valable 10 ans en stockage, ou 3 ans après la première utilisation (sans dépasser la limite des 10 ans)
Une cordelette ou sangle est valable 5 ans (Stockage et/ou utilisation)
J'ai effectué dans mon code différentes chose:
- un Worksheet_activate qui à l'activation de la feuille:
- recalcule les différentes dates limites suivant la date de fabrication (+10 ans en colonne "F" d'après la colonne "E")
- recalcule les différentes dates limites suivant la date de la première utilisation (+3 ans en colonne "G" d'après la colonne "I")
- efface dans la colonne "G" les dates pour lesquels il n'y a pas de valeur dans la colonne "I"
- Un Worksheet_SelectionChange qui recalcule l'ensemble de ce que fait le Woksheet_Activate pour la ligne (si changement de date de fabrication ou si première date d'utilisation rentrée en colonne "I")
- Une macro "Controle_périodicité" qui lorsque l'on clique sur le "bouton" de la première feuille ou sur le "bouton" Check de la seconde, affiche une MsgBox avec la désignation du matériel, la date d'expiration, la ligne dans le tableau, ainsi que si c'est un matériel arrivée à expiration par stockage ou utilisation.
Mon problème est le suivant:
Pour ce qui est de l'affichage des matériels arrivés à expiration d'après leur date de stockage, pas de soucis.
Cependant, lorsque l'on ferme la première MsgBox, je souhaiterai que la deuxième qui s'ouvre affiche les matériel arrivant dans leur dernière année d'utilisation (donc Année - 1 suivant si celle-ci à été utilisé ou non).
J'ai essayer ce code là:
'Dernière année de validité
If DateAdd("yyyy", -1, O.Cells(I, "G")) < Date < O.Cells(I, "G").Value Then M3 = M3 & Cells(I, "C").Value & " à expiré depuis le : " & Cells(I, "G").Value & Chr(13) & "Ligne : " & I & Chr(13) 'Corde stockée arrivant dans leur dernière année de validité
j'ai aussi essayer avec juste:
If (O.Cells(I, "G").Value - Date) > 365 Then M3........
Mais rien ne s'affiche, mis à part "Aucune(s) corde(s) dans la dernière année d'utilisation" (message qui s'affiche si le String M3 ne contient rien.
Je vous joint mon fichier. Si quelqu'un aurait une petite lueur d'inspiration pour voir d'ou viens mon problème...
En vous remerciant par Avance
Respectueusement