PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2025 → COMMENT SAISIR LA DATE DE COMMENCEMENT DE WD_GANTT ?
COMMENT SAISIR LA DATE DE COMMENCEMENT DE WD_GANTT ?
Iniciado por Franck MENABREA, out., 11 2025 12:35 PM - 3 respostas
Membro registado
130 mensagems
Publicado em outubro, 11 2025 - 12:35 PM
bonjour,

à partir du modèle de WD_gantt,
j'aimerai pouvoir saisir la date du Jour 1 (avec un SAI_date) et à partir de cette date construire le diagramme de Gantt

comment fait-on ?
(dommage que WD_GANTT n'offre pas cette possibilité...
c'est sûrement très simple...
Merci de votre aide....
Cordialement
Franck M
Membro registado
966 mensagems
Publicado em outubro, 11 2025 - 4:33 PM
Bonjour,

La réponse est dans la documentation :

https://doc.pcsoft.fr/fr-FR/?1000030004#NOTE2_6

Paragraphe :

Afficher le Diagramme de Gantt à partir d'une date spécifique

Cdlt
Membro registado
130 mensagems
Publicado em outubro, 11 2025 - 10:16 PM
Cédric_34 a écrit :
Bonjour,

La réponse est dans la documentation :

https://doc.pcsoft.fr/fr-FR/?1000030004#NOTE2_6

Paragraphe :

Afficher le Diagramme de Gantt à partir d'une date spécifique

Cdlt


Bonjour ....
j'ai bien vu l'info : Afficher le Diagramme de Gantt à partir d'une date spécifique

Pour afficher le Diagramme de Gantt à partir d'une date et d'une heure spécifiques, utilisez la fonction GanttPositionDateHeure.
GanttPositionDateHeure(COL_Gantt, DateSys())

et du coup dans les procédures wd_gantt je l'inscris où cette commande ??
je souhaite commencer le diagramme de gantt à date SAI_début (et toutes les autres tâches sont recalculées après)
=======

PROCÉDURE AvantCréation(tgCréée est une TâcheGantt)

// Création en cours
gbCréationFAA = Vrai

// Paramètres par défaut d'une tâche
tgCréée.Avancement = 0
tgCréée.CouleurAvancement = COULEUR_AVANCEMENT
tgCréée.CouleurFond = COULEUR_FOND
tgCréée.ID = DonneIdentifiant()
tgCréée.Titre = "Nouvelle tâche "+tgCréée.ID

// Ouvre la fenêtre d'édition
SI Ouvre(FEN_Tâche, tgCréée) ALORS

// Ajoute la nouvelle ligne
soit nIndice = TableAjouteLigne(TABLE_Gantt, tgCréée.ID, tgCréée.Titre, tgCréée.DateDébut, tgCréée.DuréeEnJour, tgCréée.Avancement)
// Positionne la tâche créée dans cette ligne
tgCréée..Ligne = nIndice
// Met à jour les informations de la tâche
COL_Titre[tgCréée.Ligne] = tgCréée.Titre
COL_DateDébut[tgCréée.Ligne] = tgCréée.DateDébut
COL_Durée[tgCréée.Ligne] = tgCréée.DuréeEnJour
COL_Avancement[tgCréée.Ligne] = tgCréée.Avancement

// Si la tâche est cumulative
SI tgCréée.Cumulative ALORS PasseTâcheEnCumulative(tgCréée.Ligne)
// Si la tâche est un jalon
SI tgCréée.Jalon ALORS PasseTâcheEnJalon(tgCréée.Ligne)
// Si c'est une tâche simple
SI tgCréée.Cumulative = Faux _ET_ tgCréée.Jalon = Faux ALORS PasseTâcheEnStandard(tgCréée.Ligne)

// Réorganise les tâches si besoin
SI COL_Gantt..RéorganisationAutomatique ALORS GanttOrganiseTâche(COL_Gantt)

// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgCréée.Ligne)
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

SINON
// Annule la création
RENVOYER Faux
FIN

RENVOYER Vrai
PROCÉDURE EntréeEnSaisie(tgEditée est une TâcheGantt)

// Si une création était en cours, ne passe pas par l'édition
SI gbCréationFAA ALORS
// La création n'est plus en cours
gbCréationFAA = Faux
// Sélectionne la ligne
TableSelectPlus(TABLE_Gantt, tgEditée.Ligne)
// Annule l'édition
RENVOYER Faux
FIN

// Ouvre la fenêtre d'édition de la tâche
EditeTâche(tgEditée)

RENVOYER Faux
PROCÉDURE SortieDeSaisie(tgModifiée est une TâcheGantt)

PROCÉDURE Sélection(tgSélectionnée est une TâcheGantt)

// Mémorise la tâche comme tâche de référence
gTâcheGanttReference = tgSélectionnée

PROCÉDURE Déplacement(tgDéplacée est une TâcheGantt)

// Si la tâche est cumulative
SI tgDéplacée.Cumulative ALORS

// Repositionne la tâche
tgDéplacée.DateDébut = gTâcheGanttReference.DateDébut
tgDéplacée.Ligne = gTâcheGanttReference.Ligne
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Si la ligne est différente
SI tgDéplacée.Ligne <> gTâcheGanttReference.Ligne ALORS
// Repositionne la tâche
tgDéplacée.Ligne = gTâcheGanttReference.Ligne
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Attention"+RC+"Il n'est pas possible de déplacer une tâche sur une autre ligne", toastCourt, cvMilieu, chCentre, RougePastel)
FIN

// Modifie le début dans la table
COL_DateDébut[tgDéplacée.Ligne] = tgDéplacée.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgDéplacée.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN

PROCÉDURE Redimensionnement(tgRedimensionnée est une TâcheGantt)

// Si la tâche est cumulative
SI tgRedimensionnée.Cumulative ALORS

// Repositionne la tâche
tgRedimensionnée.DateDébut = gTâcheGanttReference.DateDébut
// Rétablit la durée de la tâche
tgRedimensionnée.DuréeEnJour = gTâcheGanttReference.DuréeEnJour
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie la durée et le début dans la table
COL_Durée[tgRedimensionnée.Ligne] = tgRedimensionnée.DuréeEnJour
COL_DateDébut[tgRedimensionnée.Ligne] = tgRedimensionnée.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgRedimensionnée.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN
PROCÉDURE Suppression(tgSupprimée est une TâcheGantt)

RENVOYER SupprimeTâche(tgSupprimée)

PROCÉDURE AprèsLiaisonTâchePréalable (lgLien est un LienGantt)

cTâcheSource est une TâcheGantt
cTâcheDestination est une TâcheGantt


// Récupère les tâches impliquées dans la liaison
cTâcheSource <- GanttRécupèreTâche(COL_Gantt, lgLien.IDSource)
cTâcheDestination <- GanttRécupèreTâche(COL_Gantt, lgLien.IDDestination)

// Si une des tâches est cumulative
SI cTâcheDestination.Cumulative _OU_ cTâcheSource.Cumulative ALORS

// Supprime la liaison
GanttSupprimeLien(COL_Gantt, lgLien.IDSource, lgLien.IDDestination)
// Repositionne la tâche destination (qui a pu être modifiée)
cTâcheDestination.DateDébut = gTâcheGanttReference.DateDébut
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives ne peuvent être liées", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie la date de début dans la table
COL_DateDébut[cTâcheDestination.Ligne] = cTâcheDestination.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(cTâcheDestination.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN

PROCÉDURE ModificationAvancement(tgTâcheModifiée est une TâcheGantt)

// Si la tâche est cumulative
SI tgTâcheModifiée.Cumulative ALORS

// Rétablit l'avancement de la tâche
tgTâcheModifiée.Avancement = gTâcheGanttReference.Avancement
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie l'avancement dans la table
COL_Avancement[tgTâcheModifiée.Ligne] = tgTâcheModifiée.Avancement
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgTâcheModifiée.Ligne)
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN


Cordialement
Franck M
Membro registado
130 mensagems
Publicado em outubro, 11 2025 - 10:16 PM
Cédric_34 a écrit :
Bonjour,

La réponse est dans la documentation :

https://doc.pcsoft.fr/fr-FR/?1000030004#NOTE2_6

Paragraphe :

Afficher le Diagramme de Gantt à partir d'une date spécifique

Cdlt


Bonjour ....
j'ai bien vu l'info : Afficher le Diagramme de Gantt à partir d'une date spécifique

Pour afficher le Diagramme de Gantt à partir d'une date et d'une heure spécifiques, utilisez la fonction GanttPositionDateHeure.
GanttPositionDateHeure(COL_Gantt, DateSys())

et du coup dans les procédures wd_gantt je l'inscris où cette commande ??
je souhaite commencer le diagramme de gantt à date SAI_début (et toutes les autres tâches sont recalculées après)
=======

PROCÉDURE AvantCréation(tgCréée est une TâcheGantt)

// Création en cours
gbCréationFAA = Vrai

// Paramètres par défaut d'une tâche
tgCréée.Avancement = 0
tgCréée.CouleurAvancement = COULEUR_AVANCEMENT
tgCréée.CouleurFond = COULEUR_FOND
tgCréée.ID = DonneIdentifiant()
tgCréée.Titre = "Nouvelle tâche "+tgCréée.ID

// Ouvre la fenêtre d'édition
SI Ouvre(FEN_Tâche, tgCréée) ALORS

// Ajoute la nouvelle ligne
soit nIndice = TableAjouteLigne(TABLE_Gantt, tgCréée.ID, tgCréée.Titre, tgCréée.DateDébut, tgCréée.DuréeEnJour, tgCréée.Avancement)
// Positionne la tâche créée dans cette ligne
tgCréée..Ligne = nIndice
// Met à jour les informations de la tâche
COL_Titre[tgCréée.Ligne] = tgCréée.Titre
COL_DateDébut[tgCréée.Ligne] = tgCréée.DateDébut
COL_Durée[tgCréée.Ligne] = tgCréée.DuréeEnJour
COL_Avancement[tgCréée.Ligne] = tgCréée.Avancement

// Si la tâche est cumulative
SI tgCréée.Cumulative ALORS PasseTâcheEnCumulative(tgCréée.Ligne)
// Si la tâche est un jalon
SI tgCréée.Jalon ALORS PasseTâcheEnJalon(tgCréée.Ligne)
// Si c'est une tâche simple
SI tgCréée.Cumulative = Faux _ET_ tgCréée.Jalon = Faux ALORS PasseTâcheEnStandard(tgCréée.Ligne)

// Réorganise les tâches si besoin
SI COL_Gantt..RéorganisationAutomatique ALORS GanttOrganiseTâche(COL_Gantt)

// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgCréée.Ligne)
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

SINON
// Annule la création
RENVOYER Faux
FIN

RENVOYER Vrai
PROCÉDURE EntréeEnSaisie(tgEditée est une TâcheGantt)

// Si une création était en cours, ne passe pas par l'édition
SI gbCréationFAA ALORS
// La création n'est plus en cours
gbCréationFAA = Faux
// Sélectionne la ligne
TableSelectPlus(TABLE_Gantt, tgEditée.Ligne)
// Annule l'édition
RENVOYER Faux
FIN

// Ouvre la fenêtre d'édition de la tâche
EditeTâche(tgEditée)

RENVOYER Faux
PROCÉDURE SortieDeSaisie(tgModifiée est une TâcheGantt)

PROCÉDURE Sélection(tgSélectionnée est une TâcheGantt)

// Mémorise la tâche comme tâche de référence
gTâcheGanttReference = tgSélectionnée

PROCÉDURE Déplacement(tgDéplacée est une TâcheGantt)

// Si la tâche est cumulative
SI tgDéplacée.Cumulative ALORS

// Repositionne la tâche
tgDéplacée.DateDébut = gTâcheGanttReference.DateDébut
tgDéplacée.Ligne = gTâcheGanttReference.Ligne
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Si la ligne est différente
SI tgDéplacée.Ligne <> gTâcheGanttReference.Ligne ALORS
// Repositionne la tâche
tgDéplacée.Ligne = gTâcheGanttReference.Ligne
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Attention"+RC+"Il n'est pas possible de déplacer une tâche sur une autre ligne", toastCourt, cvMilieu, chCentre, RougePastel)
FIN

// Modifie le début dans la table
COL_DateDébut[tgDéplacée.Ligne] = tgDéplacée.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgDéplacée.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN

PROCÉDURE Redimensionnement(tgRedimensionnée est une TâcheGantt)

// Si la tâche est cumulative
SI tgRedimensionnée.Cumulative ALORS

// Repositionne la tâche
tgRedimensionnée.DateDébut = gTâcheGanttReference.DateDébut
// Rétablit la durée de la tâche
tgRedimensionnée.DuréeEnJour = gTâcheGanttReference.DuréeEnJour
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie la durée et le début dans la table
COL_Durée[tgRedimensionnée.Ligne] = tgRedimensionnée.DuréeEnJour
COL_DateDébut[tgRedimensionnée.Ligne] = tgRedimensionnée.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgRedimensionnée.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN
PROCÉDURE Suppression(tgSupprimée est une TâcheGantt)

RENVOYER SupprimeTâche(tgSupprimée)

PROCÉDURE AprèsLiaisonTâchePréalable (lgLien est un LienGantt)

cTâcheSource est une TâcheGantt
cTâcheDestination est une TâcheGantt


// Récupère les tâches impliquées dans la liaison
cTâcheSource <- GanttRécupèreTâche(COL_Gantt, lgLien.IDSource)
cTâcheDestination <- GanttRécupèreTâche(COL_Gantt, lgLien.IDDestination)

// Si une des tâches est cumulative
SI cTâcheDestination.Cumulative _OU_ cTâcheSource.Cumulative ALORS

// Supprime la liaison
GanttSupprimeLien(COL_Gantt, lgLien.IDSource, lgLien.IDDestination)
// Repositionne la tâche destination (qui a pu être modifiée)
cTâcheDestination.DateDébut = gTâcheGanttReference.DateDébut
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives ne peuvent être liées", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie la date de début dans la table
COL_DateDébut[cTâcheDestination.Ligne] = cTâcheDestination.DateDébut
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(cTâcheDestination.Ligne)
// Met à jour toutes les tâches si nécessaire
MetAJourTâchesSuiteRéorganisationAuto()
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN

PROCÉDURE ModificationAvancement(tgTâcheModifiée est une TâcheGantt)

// Si la tâche est cumulative
SI tgTâcheModifiée.Cumulative ALORS

// Rétablit l'avancement de la tâche
tgTâcheModifiée.Avancement = gTâcheGanttReference.Avancement
// Message pour avertir l'utilisateur sans le bloquer
ToastAffiche("Action impossible"+RC+"Les tâches cumulatives sont calculées automatiquement : vous ne pouvez pas les modifier", toastCourt, cvMilieu, chCentre, RougePastel)

SINON

// Modifie l'avancement dans la table
COL_Avancement[tgTâcheModifiée.Ligne] = tgTâcheModifiée.Avancement
// Lance le calcul des tâches cumulatives parents
CalculTâchesParents(tgTâcheModifiée.Ligne)
// Met à jour les informations du diagramme de Gantt
AfficheInfosGénéral()

FIN


Cordialement
Franck M