PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Aujourd'hui 2ème lundi du mois
Aujourd'hui 2ème lundi du mois
Iniciado por David, 13,ene. 2020 21:18 - 14 respuestas
Miembro registrado
66 mensajes
Publicado el 13,enero 2020 - 21:18
Bonjour à tous

Dans une Combo, je récupère une date et j'aimerais récupérer dans une Combo, le jour et dans une autre, le N° du jour.

Exemple !

Combo1 = lundi 13 janvier 2020
Combo2 = Lundi
Combo3 = 2ème

Merci de votre aide
David
Publicado el 14,enero 2020 - 09:59
Bonjour,
Je t'invite à regarder les fonctions sur les dates dans l'aide Windev :
https://doc.pcsoft.fr/fr-FR/?3027029

Exemple de code :
DateVersJourEnLettre(<date>) //Renvoi le jour de la semaine correspondant à la date spécifiée : lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche.
Miembro registrado
66 mensajes
Publicado el 14,enero 2020 - 15:14
Bonjour NN12

Merci de ta réponse
Pour le jour (lundi), il n'y a pas de problème

C'est sur le combo3 que je ne vois pas
Miembro registrado
310 mensajes
Publicado el 14,enero 2020 - 15:42
Bonjour,
Si on arrive à obtenir :
- Le premier jour du mois considéré
- Le numéro de jour (1 pour lundi...) du premier jour du mois
- La numero de jour de la date considérée (1 pour lundi 13 janvier 2020 dans l'exemple)
- sachant qu'une semaine fait 7 jours
- quelques soustractions et une division et on devrait obtenir le N du Nième jour de semaine considéré dans le mois

Bon dev
Miembro registrado
66 mensajes
Publicado el 14,enero 2020 - 17:12
houla !
Je débute...
Si tu peux m'indiquer le code et ou le placer stp ?
En fait, il n'y a pas de Combo1. c'est un champ de saisie avec calendrier (SAI_Date)!
Mensaje modificado, 14,enero 2020 - 17:16
Miembro registrado
166 mensajes
Publicado el 15,enero 2020 - 01:26
Bonjour;
Date : JJ-MM-AAAA
C'est le résultat de la division du JJ sur 7 et on ajoute 1

exemple : on est le 15-01-2020

résultat de 15 / 7 = 2
on ajoute 1 au résultat : 2+1 = 3

on est le 3ieme Mercredi du mois

Bon Dev.
Miembro registrado
310 mensajes
Publicado el 15,enero 2020 - 09:30
@Fouedusa

Bonjour

Attention à cette formule qui renverra toujours 2 pour le 7 du mois (au lieu de 1)

Bon dev
Miembro registrado
66 mensajes
Publicado el 15,enero 2020 - 12:42
Bonjour
Merci pour ton aide

Dans mon code, si je sélectionne 18/01/2020, le SAI_DateRecherche (Type numérique sans chiffre après la virgule) affiche "4" alors que c'est le 3ème samedi
Je comprend que le résultat est 3,57 donc il prend 4.
Comment faire pour qu'il affiche le premier chier avant la virgule ?

A chaque Modification de SAI_Date
MaDate est une Date = MoiMême

SI DateValide(MoiMême) ALORS
SAI_DateRecherche=MaDate..Jour/7+1


Merci de cette aide
Miembro registrado
310 mensajes
Publicado el 15,enero 2020 - 13:24
Essayez :

SAI_DateRecherche= PartieEntière ((madate..jour-1)/7)+1


Bon dev
Miembro registrado
1.002 mensajes
Publicado el 15,enero 2020 - 13:57
Bonjour,

je viens d'ecrire ca

Procedure RenvoiPositionJour(daterecherche est une Date = "20200101")
/// on cherche le premier jour du mois
datedebut est une Date = PremierJourDuMois(daterecherche)
////on cherche le dernier jour du mois
datefin est une Date = DernierJourDuMois(datedebut)
///// on declare un tableau associatif pour stocker les dates des lundi / mardi / etc

taBleaudate est un tableau associatif de tableau de Date

/// on boucle pour le nombre de jour dans le mois
POUR i = 0 _À_ DateDifference(datedebut,datefin)
// on prend la date de debut
dAteincrement est un Date = datedebut
// on incremente i dans le jour de recherche
dAteincrement..Jour += i
//// on cherche si la date est un lundi / mardi
njour est un entier = DateVersJourDeLaSemaine(dAteincrement)
/// on ajoute lundi / mardi / mercredi dans le tableau associatif
Insère(taBleaudate,njour)
SI njour <> 0 ALORS
/////// on ajoute la date du lundi dans le tableau lundi/ mardi dans mardi etc..
Ajoute(taBleaudate[njour],dAteincrement)
FIN
FIN
///////////////
////// en suite on va chercher la position de la date de recherche dans le tableau
njourrecherche est un entier = DateVersJourDeLaSemaine(daterecherche)
npositionjour est un entier = TableauCherche(taBleaudate[njourrecherche],tcLinéaire,daterecherche)
SI npositionjour <> -1 ALORS
SELON npositionjour
CASE 1
RENVOYER "1er " + DateVersJourEnLettre(daterecherche)
AUTRE CAS
RENVOYER npositionjour + "ème " + DateVersJourEnLettre(daterecherche)
FIN
FIN


Je pense qu'il y a beaucoup plus simple mais ca fonctionne bien

RenvoiPositionJour("20200115") // affiche 3eme mercredi
RenvoiPositionJour("20200115") //affiche 5eme vendredi


A vous de modifier le renvoi de la procedure

jordan
Miembro registrado
1.002 mensajes
Publicado el 15,enero 2020 - 14:21
edit : C'est "20200131" et non "20200115" qui renvoi 5ème vendredi

Maudit soit le copier coller ;)
Miembro registrado
66 mensajes
Publicado el 15,enero 2020 - 15:02
Bonjour
Merci à vous trois !

Jordan, ""DateVersJourDeLaSemaine"" concerne WinDev 25. J'ai WinDev 19 ! Dommage

Samir, pour le chiffre c'est bon mais J'ai essayé d'ajouter "ème" et "er" comme ceci

MaDate est une Date = MoiMême

SI DateValide(MoiMême) ALORS
SAI_DateLettre= EntierVersJourEnLettre(DateVersEntier(MoiMême)) //Pour le jour en lettre : lundi, mardi, etc

SI SAI_DateChiffre <> 1 ALORS
SAI_DateChiffre= PartieEntière ((MaDate..Jour-1)/7)+1 + "ème "// Pour le jour en chiffre : 2ème,3ème
SINON
SAI_DateChiffre= PartieEntière ((MaDate..Jour-1)/7)+1 + "er "// Pour le jour en chiffre : 1er
FIN
FIN


Ca ne fonctionne pas (aléatoire). C'est un problème de masque de saisie ?

David
Miembro registrado
310 mensajes
Publicado el 15,enero 2020 - 15:22
Sai_DateChiffre doit être un champ de type texte et votre code :

MaDate est une Date = MoiMême


SI DateValide(MaDate ) ALORS

posiJour est un entier = PartieEntière ((MaDate..Jour-1)/7)+1

SAI_DateLettre= EntierVersJourEnLettre(DateVersEntier(MaDate )) //Pour le jour en lettre : lundi, mardi, etc

SI posiJour <> 1 ALORS
SAI_DateChiffre= posiJour + "ème "// Pour le jour en chiffre : 2ème,3ème
SINON
SAI_DateChiffre= posiJour + "er "// Pour le jour en chiffre : 1er
FIN
FIN
Miembro registrado
1.002 mensajes
Publicado el 15,enero 2020 - 16:14
David a écrit :
Bonjour
Merci à vous trois !

Jordan, ""DateVersJourDeLaSemaine"" concerne WinDev 25. J'ai WinDev 19 ! Dommage

Samir, pour le chiffre c'est bon mais J'ai essayé d'ajouter "ème" et "er" comme ceci

MaDate est une Date = MoiMême

SI DateValide(MoiMême) ALORS
SAI_DateLettre= EntierVersJourEnLettre(DateVersEntier(MoiMême)) //Pour le jour en lettre : lundi, mardi, etc

SI SAI_DateChiffre <> 1 ALORS
SAI_DateChiffre= PartieEntière ((MaDate..Jour-1)/7)+1 + "ème "// Pour le jour en chiffre : 2ème,3ème
SINON
SAI_DateChiffre= PartieEntière ((MaDate..Jour-1)/7)+1 + "er "// Pour le jour en chiffre : 1er
FIN
FIN


Ca ne fonctionne pas (aléatoire). C'est un problème de masque de saisie ?

David


Tu peux utiliser DateVersJour()

Jordan
Miembro registrado
66 mensajes
Publicado el 15,enero 2020 - 17:21
Merci Samir. Impeccable