IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comparer des formats horaires


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    école d'ingénieur
    Inscrit en
    Novembre 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : école d'ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2023
    Messages : 11
    Par défaut Comparer des formats horaires
    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

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, je ne vois pas de fichier joint.
    Tu es obligé de travailler avec le format horaire ? Ne serait-il pas envisageable de travailler avec des nombres ? Cela éviterait les problèmes de conversion.

  3. #3
    Membre habitué
    Homme Profil pro
    école d'ingénieur
    Inscrit en
    Novembre 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : école d'ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2023
    Messages : 11
    Par défaut
    En effet, je n'arrive pas à joindre le fichier via le forum (trop volumineux) mais le voici :
    https://epfedu-my.sharepoint.com/:/g/personal/mathis_mottet_epfedu_fr/EU52lOX_eRlEvEoEVpAgHVIBEfP6OvJlbtyabG1ydY8o0A?e=SuEEE3

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    J'ai jeté un coup d'oeil sur ta feuille "Component life limitations" qui contient les heures utilisées pour la comparaison dans ta macro.
    Je ne comprends pas pourquoi tu utilises le format spécial [h]:00 ? Pourquoi ne pas laisser tes cellules au format standard et ainsi comparer des nombres plutôt que des heures, qui pour excel sont des fractions de jours et représentés par excel comme un temps écoulé depuis le 01/01/1900 ?

  5. #5
    Membre habitué
    Homme Profil pro
    école d'ingénieur
    Inscrit en
    Novembre 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : école d'ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2023
    Messages : 11
    Par défaut
    J'utilise ce format uniquement pour améliorer la visibilité des heures. Il est très facile pour un utilisateur de comprendre ce format. En utilisant un format standard, 6560:45 par exemple reste du texte il me semble. Or, j'ai besoin de réaliser des opérations avec ces durées.

    Il est très probable que je fasse fausse route, n'hésite pas à me contredire !

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Si j'ai bien compris, il s'agit de durée de vie des composants, exprimés en heures. Est-ce que la fraction d'heure est vraiment importante dans ce cas ?
    Si une pièce doit être remplacée après 2000 heures par exemple, est-il important de savoir si elle a 2010 heures ou 2010:45 heures ?
    Les calculs de temps sont toujours délicats et sources potentielles d'erreurs, personnellement je les évite tant que c'est possible.
    Je pense qu'il serait possible d'utiliser le format texte et ensuite extraire ces valeurs dans ta macro avec les fonctions val, left, right.
    C'est une piste de réflexion, je ne suis pas un spécialiste du calcul du temps.

Discussions similaires

  1. Comparer des dates - Pb de format de cellule ?
    Par Polygos dans le forum Excel
    Réponses: 10
    Dernier message: 14/04/2020, 10h42
  2. Réponses: 5
    Dernier message: 11/02/2019, 08h05
  3. comparer des résultats (format texte)
    Par Giantrick dans le forum Langage
    Réponses: 4
    Dernier message: 03/02/2010, 12h15
  4. Comparer des crénaux horaires
    Par Mr T 94 dans le forum Access
    Réponses: 11
    Dernier message: 07/01/2007, 19h21
  5. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo