Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Différence entre deux heures

6 réponses
Avatar
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

6 réponses

Avatar
HD
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
Avatar
isabelle
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



Avatar
MichD
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
---------------------------------------------------------------
Avatar
HD
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
Avatar
HD
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
Avatar
MichD
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
---------------------------------------------------------------