PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Détection heures/minutes différentes
Détection heures/minutes différentes
Débuté par Yann LE BOULC'H, 24 jan. 2025 13:35 - 9 réponses
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 13:35
Bonjour,

Bon mon projet approche de la fin et là, je cherche à comparer des heures/minutes.

Mes collègues doivent savoir qu'ils sont à la bourre si l'heure définie dans le fichier est dépassée par rapport à l'heure courante.

Je pars de ce fichier ini et j'ai 2 valeurs (heure déb et heure de fin du check concerné) :





J'aimerai que la case passe en rouge si l'heure de fin est dépassée.

J'ai essayé ce code qui ne dit bien que j'ai une différence sur chaque ligne :

hnow est une chaîne = HeureVersChaîne(HeureSys(), "HH:MM")

POUR TOUTE CHAÎNE sMot DE sfichier SÉPARÉE PAR RC
TABLE_TacheHDP.AjouteLigne(ExtraitChaîne(sMot,1,","),ExtraitChaîne(sMot,2,","),ExtraitChaîne(sMot,3,","),ExtraitChaîne(sMot,4,","),ExtraitChaîne(sMot,5,","),ExtraitChaîne(sMot,6,","),ExtraitChaîne(sMot,7,","))
TableActiveFiltre(TABLE_TacheHDP.COL_Jour, filtreCommencePar, "1-Lundi")

SI hnow <> ExtraitChaîne(sMot,5,",") ALORS
Trace("Heure différente",hnow)
FIN
FIN
Message modifié, 24 janvier 2025 - 13:49
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 13:51


Membre enregistré
773 messages
Posté le 24 janvier 2025 - 14:08
Bonjour
A première vue, je dirai que la différence sur chaque ligne est normale, vous n'aurez pas de différence quand l'heure sera précisément égale à la valeur du fichier ini.
J'aurai fait le contraire, un ChaineVersHeure de la valeur du fichier ini, puis un supérieur ">" pour comparer l'heure système et la valeur Ini.

Cdlt
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 14:58
Merci Cedirc_34.

Cependant, j'ai un comportement étrange depuis que j'ai mis ChaineVersHeure que je ne comprends pas :

hnow est une chaîne = ChaîneVersHeure(HeureSys(), "HH:MM")

POUR TOUTE CHAÎNE sMot DE sfichier SÉPARÉE PAR RC
TABLE_TacheHDP.AjouteLigne(ExtraitChaîne(sMot,1,","),ExtraitChaîne(sMot,2,","),ExtraitChaîne(sMot,3,","),ExtraitChaîne(sMot,4,","),ExtraitChaîne(sMot,5,","),ExtraitChaîne(sMot,6,","),ExtraitChaîne(sMot,7,","))
TableActiveFiltre(TABLE_TacheHDP.COL_Jour, filtreCommencePar, "1-Lundi")

SI hnow > ExtraitChaîne(sMot,5,",") ALORS
Trace("Heure différente",hnow)
FIN
FIN


J'ai bien forcé le format en HH:MM et pourtant cela m'affiche une série de chiffre bizarre contrairement à ceux que j'avais en haut du message :




Après comment je pourrais coder pour que la cellule concernée "Deb_Planif" s'affiche en rouge svp ?
Message modifié, 24 janvier 2025 - 15:08
Membre enregistré
205 messages
Posté le 24 janvier 2025 - 15:40
Bonjour
Pour afficher la cellule en rouge, il faut d'abord récupérer l'indice de la ligne lors de l'ajout
Puis utiliser cet indice avec la colonne Deb_Planif, pour affecter la couleur rouge

nIndice est un entier
hnow est une chaîne = ChaîneVersHeure(HeureSys(), "HH:MM")

POUR TOUTE CHAÎNE sMot DE sfichier SÉPARÉE PAR RC
nIndice = TABLE_TacheHDP.AjouteLigne(ExtraitChaîne(sMot,1,","),ExtraitChaîne(sMot,2,","),ExtraitChaîne(sMot,3,","),ExtraitChaîne(sMot,4,","),ExtraitChaîne(sMot,5,","),ExtraitChaîne(sMot,6,","),ExtraitChaîne(sMot,7,","))
TableActiveFiltre(TABLE_TacheHDP.COL_Jour, filtreCommencePar, "1-Lundi")

SI hnow > ExtraitChaîne(sMot,5,",") ALORS
Trace("Heure différente",hnow)
TABLE_TacheHDP[nIndice].Deb_Planif..CouleurFond = RougeClair
FIN
FIN
Message modifié, 24 janvier 2025 - 15:44
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 15:46
Merci beaucoup Fabrice, c'est super sympa :merci:

Par contre, faut que je cherche comment récupérer l'indice en effet car nIndice = ??.
Membre enregistré
205 messages
Posté le 24 janvier 2025 - 15:47
c'est l'affichage qui bug !

nIndice = TABLE_TacheHDP.AjouteLigne(etc....... )

C'est sur la même ligne de code :-)

Pour info, l'aide de Windev : https://doc.pcsoft.fr/fr-fr/?1000023404&name=%3Ctable%3Eajouteligne_fonction
Message modifié, 24 janvier 2025 - 15:52
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 16:02
Merci encore Fabrice et chapeau bas à tous pour vos compétences

Ca sent super bon, les lignes dépassée sont bien en rouge mais j'ai une petite erreur que je me comprends pas pour l'instant mais je cherche :







Membre enregistré
205 messages
Posté le 24 janvier 2025 - 16:07
Navré, je n'avais pas testé ce code en conditions réelles.
Il faut que ton TableActiveFiltre soit placé "après" l'affectation de la couleur (en dernier)
nIndice est un entier
hnow est une chaîne = ChaîneVersHeure(HeureSys(), "HH:MM")

POUR TOUTE CHAÎNE sMot DE sfichier SÉPARÉE PAR RC
nIndice = TABLE_TacheHDP.AjouteLigne(ExtraitChaîne(sMot,1,","),ExtraitChaîne(sMot,2,","),ExtraitChaîne(sMot,3,","),ExtraitChaîne(sMot,4,","),ExtraitChaîne(sMot,5,","),ExtraitChaîne(sMot,6,","),ExtraitChaîne(sMot,7,","))

SI hnow > ExtraitChaîne(sMot,5,",") ALORS
Trace("Heure différente",hnow)
TABLE_TacheHDP[nIndice].Deb_Planif..CouleurFond = RougeClair
FIN

TableActiveFiltre(TABLE_TacheHDP.COL_Jour, filtreCommencePar, "1-Lundi")

FIN
Message modifié, 24 janvier 2025 - 16:17
Membre enregistré
167 messages
Posté le 24 janvier 2025 - 16:18
Ne soyez pas navré Fabrice, c'est déjà super sympa de m'aider :merci:

Effectivement, ça fonctionne nickel.

Sinon je venais de trouver ceci qui fonctionnait aussi : ModeExécution(modePermissif)