Bonjour,
Je vais essayer d'expliquer mon problème le plus clairement possible mais je m'excuse d'avance si l'explication est floue.
Je travaille dans un atelier de maintenance aéronautique et mon objectif est de créer un programme sous Excel vba permettant de gérer les inspections et les pièces à changer. Par exemple : "l'hélice doit être inspectée toutes les 2000:00 heures de vol". Jusque là tout va bien, j'arrive à faire des opérations sur mes durées, j'utilise un format spécial pour avoir un nombre d'heures importants sans qu'Excel interprète cela en date. Mon objectif est d'utiliser une mise en forme conditionnelle avec VBA pour colorer une cellule. J'ai donc créé une condition If "écart" > "norme" Then cellule en rouge.
C'est là que mon problème arrive. Excel interprète mon nombre d'heure comme un flottant, soit, j'ai donc décidé de mettre ma condition comme un flottant également. Or, la précision de mon flottant de condition n'est pas suffisante pour que la limite soit franche entre résultat "vert" ou "rouge". Si je reprends mon exemple de l'hélice, si mon écart est de 3000:00 alors la cellule sera en rouge et tout va bien mais si mon écart est de 2010:00 par exemple, la cellule sera verte.
Pour trouver à quel flottant correspondait mes normes de durée, j'ai été obligé de passer par des dates. Je pense qu'une grosse partie de cette imprécision vient de là. Néanmoins je ne sais pas comment trouver le flottant associé, et avec une précision suffisante d'une autre manière.
Je vous joins mon fichier en question, mon souci se trouve sur la feuille "Component life limitations" pour la Macro 5, celle associée au bouton "Update".
Je m'excuse pour la longueur de ce message et espère que vous pourrez m'aider, après avoir fouillé tous les forums et la notice VBA Microsoft, je suis encore sans solution.
Merci d'avance !!
Sub MajLifeComponent()
With Sheets("Component life limitations")
Dim nLim As Integer
nLim = Range("PlgLim").Rows.Count
Dim a, b, c
For i = 3 To nLim Step 2
'Prop Time
a = Application.VLookup(Range("A" & i), Range("PlgTot"), 2, False)
b = Range("B" & i)
c = a - b
.Range("B" & i + 1) = c
If c > #3/24/1900 8:00:00 AM# Then
Range("B" & i + 1).Interior.ColorIndex = 3 'Rouge
ElseIf c > #3/21/1900 6:00:00 AM# Then
Range("B" & i + 1).Interior.ColorIndex = 44 'Orange
Else
Range("B" & i + 1).Interior.ColorIndex = 4 'Vert
End If
Next i
End With
MsgBox ("Update successful !")
End Sub
Partager