Problème de calcul de date

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

Bonjour,

Tu peux faire en sorte d'avoir une corde qui est à la limite d'utilisation dans tes données stp. Pcq j'ai l'impression que ce n'est pas le cas actuellement si ? si je me trompe quel ligne alors est censé s'affciher ?

Bonjour,

Ci-joint le fichier avec normalement 2 dates qui devraient s'afficher:

La ligne 3 : limites des 3 ans d'utilisation, périme dans moins d'un an (colonne "G")

La ligne 2 : limites des 10 ans de stockage, périme dans moins d'un an (colonne "F")

Merci de ton aide

Bonjour

En utilisant PowerQuery intégré à ta version Excel on peut faire un inventaire comme ceci

image

Bonjour Chris,

Merci bien pcq la je ne m'en sortais pas

Bonjour Chris, je ne connaissais pas du tout.

Je vais essayer de voir comment cela fonctionne

Je te remercie pour ta reponse

RE

Avec le dernier fichier

image

On pourrait même calculer les dates limites directement dans l'inventaire plutôt que dans le tableau source

Ça a l'air vraiment top Power Query....

Tu aurais un lien tutos pour apprendre à l'exploiter ?

RE

Déjà je te joins ce que j'ai fait. On actualise par Données, Actualiser Tout

J'ai créé une plage nommée Data pour ta source qui n'est pas normalisée

Tu peux lancer PowerQuery : Données, Obtenir des données, Lancer PowerQuery

Il y a 3 requêtes :

  • Data qui normalise la source : j'y ai intégré le calcul de la 1ère utilisation mais on pourrait la simplifier si on utilise les colonnes que tu as prévues pour les limites
  • OJD qui permet de stocker la date du jour pour simplifier les formules
  • Inventaire qui, partant de Data, calcule l'état puis synthétise

A droite, quand tu sélectionnes une requête, tu as les étapes avec le détail dans la barre de formule et en cliquant sur le petit rouage de la ligne d'étape

Un petit B A BA là http://www.excel-formations.fr/Trucs_astuces/PQ00.php sinon tu as des choses sur Microsoft, le CFO masqué et developpez.net

Il faudra modifier les paramètres : voir https://forum.excel-pratique.com/excel/copier-le-contenu-d-un-fichier-dans-un-onglet-d-un-autre-fich...

Merci beaucoup Chris, je vais me pencher dessus

Cordialement

BDR

Rechercher des sujets similaires à "probleme calcul date"