Calcul du nombre de jours ouvrés

  • Calcul du nombre de jours ouvrés

    Posté par jonathan sur 7 octobre 2024 à 15h13

    Dans mon application j’ai deux control Text ,Une startDate avec la formule :

    DateValue(Date(Value(Annee_Control.Selected.Value);Value(Month_activité.Text);1);”fr-FR”)

    un deuxiemme control Enddate

    DateValue(If(

    Value(Month_activité.Text) = 12;

    DateValue(Date(Value(Annee_Control.Selected.Value) + 1;1 ; 1) – 1); // Si le mois est décembre, on passe à janvier de l’année suivante

    DateValue(Date(Value(Annee_Control.Selected.Value); Value(Month_activité.Text) + 1; 1) – 1) // Pour les autres mois, on prend le mois suivant

    );”fr-FR”)

    et ensuite j’ai un control Text avec le nombre de jours ouvrés entre ces deux date:

    With(

    {

    // Déclaration des variables locales ‘startDate’ et ‘endDate’ en convertissant les textes saisis en dates

    startDate: DateValue(Startdate_saisie.Text; “fr-FR”);

    endDate: DateValue(EndDate_saisie.Text; “fr-FR”);

    dateDifference: DateDiff(DateValue(Startdate_saisie.Text; “fr-FR”); DateValue(EndDate_saisie.Text; “fr-FR”)) // Calcul de la différence entre les dates

    };

    // Si la différence entre les deux dates est inférieure ou égale à 50 000 jours

    Value(

    CountRows(

    // Filtre les dates générées

    Filter(

    // Crée une table de toutes les dates entre ‘startDate’ et ‘endDate’

    ForAll(

    Sequence(dateDifference + 1);

    // Crée une séquence de dates de ‘startDate’ à ‘endDate’

    DateAdd(startDate; Value – 1; TimeUnit.Days) // Ajoute les jours à ‘startDate’ pour obtenir chaque date de la séquence

    );

    // Garde uniquement les dates qui sont des jours de semaine (lundi à vendredi) et ne sont pas dans la liste ‘Holidays’

    Weekday(Value) >= 2 && Weekday(Value) <= 6 && !(Value in Holidays.DateFerie)

    )

    )

    )

    )

    Mon probleme j’ai un message en mode lecture Text impossible de convertir en date ou time je ne comprend d’ou viens mon erreur Pouvez vous m’aider ou si quelqu’un a deja eu ce genre de soucis

    Merci par avance

    • Cette discussion a été modifiée Il y a 1 mois, 2 semaines par  jonathan.
    • Cette discussion a été modifiée Il y a 1 mois, 2 semaines par  jonathan.
    • Cette discussion a été modifiée Il y a 1 mois, 2 semaines par  jonathan.
    jonathan a répondu Il y a 1 mois, 2 semaines 3 Membres · 5 Réponses
  • 5 Réponses
  • DavidZed

    Membre
    7 octobre 2024 à 16h53

    Hello,

    Tu as peut être ce message d’erreur quand tes champs texte ne renvoient pas une date au format attendu (en cours de saisie par exemple)

    pour éviter le déclenchement intempestif, tu peux ajouter une regex en condition :

    With(

    {

    // Déclaration des variables locales ‘startDate’ et ‘endDate’ en convertissant les textes saisis en dates

    startDate: If(IsMatch(Startdate_saisie.Text; “^(0[1-9]|[0-9]|3)/(0[1-9]|1[0-2])/([0-9]{4})$” ; DateValue(Startdate_saisie.Text; “fr-FR”));

    endDate: If(IsMatch(EndDate_saisie.Text; “^(0[1-9]|[0-9]|3)/(0[1-9]|1[0-2])/([0-9]{4})$” ;DateValue(EndDate_saisie.Text; “fr-FR”)) ;

    <code class=”language-regex”><code class=”language-regex”>

    <code class=”language-regex”><code class=”language-regex”>

    et un peu plus loin, ne faire les calculs que si les dates ne sont pas vides :

    <code class=”language-regex”><code class=”language-regex”>

    If( !IsBlank(startDate ) && !IsBlank(endDate) ;

    <code class=”language-regex”><code class=”language-regex”>

    Value(

    <code class=”language-regex”><code class=”language-regex”>

    CountRows( ….

  • jonathan

    Membre
    7 octobre 2024 à 17h50

    Merci pour votre réponse, mais j’ai toujours le message. Il apparaît seulement à l’ouverture de la page concernée

  • Nelson

    Membre
    7 octobre 2024 à 18h44

    Bonsoir Jonathan,

    Si je ne me trompe pas, c’est une question de valeur vide à un moment T.

    Au moment de traiter une de tes valeurs, elle est vide ce qui genère cette erreur.

    Essaye d’utiliser Coalesce avec une valeur de base que tu choisis et ta vraie valeur.

    Du coup, Coalesce(votre_vraie_valeur,une_valeur_tampon)

  • Nelson

    Membre
    7 octobre 2024 à 18h48

    Je n’avais pas pris le temps de lire ta réponse convenablement (lecture en grande grande diagonale) mais on se rejoint sur l’idée :p

    J’avais déjà eu ce souci il y a quelques temps, cela peut surprendre et faire naitre une belle incompréhension 😄

  • jonathan

    Membre
    8 octobre 2024 à 9h53

    Merci pour votre aide, mais cela ne marchait pas non plus. J’ai réussi de mon côté en contournant, ou peut-être de la bonne façon. J’ai fait mon calcul dans le onstart en utilisant les variables, du coup, plus de message d’erreur.

    Encore merci pour votre aide

Connectez-vous pour répondre.