[VBA] Différence entre deux heures

Le
HD
Bonjour,

J'ai un tableau où apparait un total d'heures.

Je veux avoir un message lorsque les heures d'une colonne dépassent le total
maxi le souci est que la comparaison entre les heures ne fonctionnent
pas.

Exemple:
J'ai 1607:00 en cellule A1 qui est le total heures maxi.
J'ai 28:00 en cellule B1 qui est le nombre d'heures faites.
Les deux cellules sont au format [hh]:mm

Si en VBA je met :
If Range("B1").value > Range("A1").value then msgbox "Dépassement d'heures
!!!"

La comparaison m'affiche l'alerte comme si 28:00 était supérieur à
1607:00

Je ne vois pas trop où est le problème ?

Merci d'avance pour votre aide,

Cordialement,

HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
HD
Le #25535112
Actuellement, j'ai trouvé une solution... peut être pas la plus simple et la
plus propre mais cela fonctionne :

MsgBox TimeSerial(Left(Range("B1").value, InStr(1, Range("B1").value, ":") -
1), Mid(Range("B1").value, InStr(1, Range("B1").value, ":") + 1), 0) >
TimeSerial(Left(Range("A1").value, InStr(1, Range("A1").value, ":") - 1),
Mid(Range("A1").value, InStr(1, Range("A1").value, ":") + 1), 0)

Auriez vous une autre solution ?

@+
HD
isabelle
Le #25535232
bonjour HD,

si tu veut bien, fait une copie de "valeur uniquement" des cellules
A1:B1 ailleurs et donnes-nous le résultat.

isabelle


Le 2013-07-09 09:59, HD a écrit :
Bonjour,

J'ai un tableau où apparait un total d'heures.

Je veux avoir un message lorsque les heures d'une colonne dépassent le total
maxi... le souci est que la comparaison entre les heures ne fonctionnent
pas.

Exemple:
J'ai 1607:00 en cellule A1 qui est le total heures maxi.
J'ai 28:00 en cellule B1 qui est le nombre d'heures faites.
Les deux cellules sont au format [hh]:mm

Si en VBA je met :
If Range("B1").value > Range("A1").value then msgbox "Dépassement d'heures
!!!"

La comparaison m'affiche l'alerte comme si 28:00 était supérieur à
1607:00...

Je ne vois pas trop où est le problème ?

Merci d'avance pour votre aide,

Cordialement,

HD



MichD
Le #25535492
Bonjour,

| If Range("B1").value > Range("A1").value then msgbox "Dépassement d'heures

En utilisant la propriété "Value2" au lieu de "Value",
tu vas comparer la valeur numérique que représente
les valeurs Range("A1") et Range("B1")
x = Range("B1").value2
y = Range("A1").value2

Cela devrait te donner une bonne idée de ce qui se passe dans ton
application.
If Range("B1").value2 > Range("A1").value2 then msgbox "Dépassement d'heures


MichD
---------------------------------------------------------------
HD
Le #25536922
si tu veut bien, fait une copie de "valeur uniquement" des cellules A1:B1
ailleurs et donnes-nous le résultat.



Le copier puis Collage spécial / Valeurs me donne :

1607:00

et

1608:45

Les valeurs des 2 cellules sont orientées à gauche... comme du texte.
Sur la feuille où les valeurs sont collées j'ai le format "Standard".
Sur la feuille d'où proviennent ces valeurs j'ai le format "[hh]:mm". Les
valeurs sont également orientées à gauche.

@+
HD
HD
Le #25536882
Je viens de retester ave value2 ça fonctionne... par contre, en voulant
retestant pour comparaison avec le script que j'avai et qui n'utilisait que
value ça... fonctionne également (???). Pourtant je n'ai rien changé aux
formules ou au tableau. Je ne vois pas ce qui a put se passer.

Le classeur Excel en question fait 10Mo et comporte de grands tableaux avec
énormément de formules. Se pourrait il que le classeur se comporte
différemment à l'ouverture ? Ou peut être ai je eu un bug la dernière fois ?

En tout cas, Je surveille et vous tiens au courant...

@+
HD
MichD
Le #25536962
Quand tu as un contenu "heure" ou "date" dans une cellule,
si le contenu s'affiche à gauche, Excel considère ce contenu
comme étant du texte. Si tu regardes dans le format de la
cellule et que ce dernier indique le bon format "Date" ou "Heure",
double-clique dans la cellule et le contenu devrait normalement
s'afficher à droite.

Fais cette petite expérience :

Donne à la cellule VIDE A1 le format texte.
Saisis une date dans la cellule A1
Elle s'affiche à gauche
Modifie le format de la cellule A1 de "Texte" à "Date"
Le contenu est toujours à gauche.
Double-clique dans la cellule et le contenu
s'affiche à droite.

Le contenu d'une cellule reçoit son format lors de la
validation de la cellule.

MichD
---------------------------------------------------------------
Publicité
Poster une réponse
Anonyme