IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Emploi du temps incrémenté et paramêtré [AC-2010]


Sujet :

Access

  1. #21
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Je n'ai même pas fait attention en les mettant moi même qu'elles ne s'étaient pas misent automatiquement. Parfois ca ne va pas chercher loin...
    Donc j'ai maintenant une seule fois l'intervention dans la R_inter, j'ai bien les intervention par date dans les R_lundi mardi.... etc
    Mais rien ne s'affiche dans le planning ce coup ci. Pas d'erreur à l'ouverture non plus.
    Peut être faut-il mettre la requête en source de données du formulaire complet ? Ou encore un Requery manquant qui fait que le formulaire n'est pas actualisé...?

  2. #22
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Voici les corrections sur la partie planning.

    J'ai importé que la partie planning car j'avais des problèmes de références avec ton fichier.

    Il y a un bouton actualiser en haut à droite du planning pour générer les récurrences, par défaut j'ai mis 10 récurrences quand le nombre n'est pas inscrit.

    Les changements portent principalement sur les requêtes R_Inter, R_Inter2, SF_InterventionsLundi...,
    Le formulaire F_Planning
    La procedure GenererInterventions...


    à+
    Fichiers attachés Fichiers attachés

  3. #23
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Hmm toujours rien, j'ai bien tout remplacé, en cherchant un peu je me demande si dans le module il ne faut pas sur cette ligne ajouter les autres données que l'on récupère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rs2.FindFirst "Intitule_Intervention like '" & IT & "' and Date_Intervention=#" & Format(dt, "mm/dd/yyyy") & "#"
    Car si je comprend bien ici il prend seulement l'intitulé et la date, or la date n'apparait plus dans le formulaire ( car pas besoin) mais il manque le nom de la machine du secteur report etc etc...

  4. #24
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Le bouton actualiser marche bien et me calcule bien toutes les prochaines intervention niquel

  5. #25
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    il va y avoir plusieurs interventions avec le m^me intitulé dans la table Intervention, ces différentes interventions à des dates régulières (fonction du champ "recurrence"), ces interventions constituent les récurrences qui ont toutes le même intitulé mais des dates différentes qui se suivent...

  6. #26
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Je vais essayer de voir pourquoi les interventions du jour ne s'affichent pas ça ne doit pas être sorcier, merci beaucoup en tout cas, vraiment !
    Je reviens vers vous si vraiment je ne trouve pas..

    Bonne journée

  7. #27
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    En fait cela vient du critère dans les requête "SF_InterventionMardi","SF_InterventionMercredi","SF_InterventionJeudi","SF_InterventionVendredi","SF_InterventionSamedi"

    pour "SF_InterventionMardi":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_Intervention = [Forms]![F_Planning]![DateD]+1
    pour "SF_InterventionMercredi":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_Intervention = [Forms]![F_Planning]![DateD]+2
    pour "SF_InterventionJeudi":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_Intervention = [Forms]![F_Planning]![DateD]+3
    etc...

    J'ai remplacé le fichier Planning Interventions v3 dans mon précédent message.

    à+

  8. #28
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Ca fonctionne parfaitement !!
    Mille merci ne seraient pas assez !

  9. #29
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par GeoFrey Voir le message
    Ca fonctionne parfaitement !!
    Mille merci ne seraient pas assez !
    Content de te rendre service, comme d'autres le font pour moi

  10. #30
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Oyé oyé !

    J'ai une dernière petite question pour terminer ce planning, la touche report. J'ai ce bout de programme qui lorsqu'on clique sur le checkbox "Report" doit supprimer tous les enregistrements relatif à lui ( donc les nregistrements qui sont incrémenté par la récurrence) et tout recalculer a partir du lendemain.

    J'ai donc quelquechose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Compare Database
    
    Private Sub Report_Click()
    Dim DateJ As Date
    Dim IDinter As Long
    Dim Recu  As Long
    Dim MachineX As String
    Dim SecteurX As String
    Dim Name As String
    
        If Report Then
            If MsgBox("Confirmez vous le décallage de cette intervention ?", vbQuestion + vbYesNo) = vbYes Then
                'je stocke mes valeur avant de supprimer mon entretien
                DoCmd.RunCommand acCmdSaveRecord
                DateJ = Date_Intervention
                Name = NI ' Nom intervention
                Recu = Recurrence
                MachineX = NM 'nom machine
                SecteurX = NS 'nom secteur
                'Je supprime tous les entretien suppérieur ou égal à cette date
                CurrentDb.Execute "Delete * from Intervention where Intitule_intervention =  'x'    <--- J'ai essayé avec des AND en prenant : intitulé and secteur and machine mais je n'y parvient pas..
    
                'Je recrée le planning à partir du lendemain
                GenererInterventions     <----- Le planning ne se recréer pas. Je pense qu'il faut lui redonner les valeurs 
                Me.Requery
            Else
                Report = False
                DoCmd.RunCommand acCmdSaveRecord
            End If
        End If
    
    End Sub
    Je bloque, je pense qu'il faut une requête pour arriver directement à la table intervention... Je seche. Car Je ne peux pas supprimer à partir d'un nom, plusieurs interventions peuvent avoir le même nom...

    Bonne journée

  11. #31
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Salut,

    Pourquoi supprimer les enregistrement plutôt que de faire un simple décallage de 1 jour des dates avec une requête update, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub Report_AfterUpdate()
     
       If (Me.Report = True) Then
          If MsgBox("Souhaitez-vous reporter cette intervention ?", vbYesNo) = vbNo Then
             Me.Undo
             Exit Sub
          End If
       Else
          Exit Sub
       End If
     
    DoCmd.SetWarnings False ' enlève les avertissements
    DoCmd.RunSQL ("UPDATE Intervention SET Intervention.Date_Intervention = (Intervention.[Date_Intervention]+1) WHERE Intitule_Intervention like '" & Nz(Me.Intitule_intervention, "") & "' and Intervention.Date_Intervention>#" & Format(Me.Date_Intervention, "mm/dd/yyyy") & "# ;") ' ajoute un jour aux interventions avec le même intitulé et une date supéreure.
    DoCmd.SetWarnings True
     
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 1 ' ajoute un jour à l'intervention en cours.
    Me.Requery 'raffraichit le sous-formulaire
     
    Me.Parent.CmdActualiser.SetFocus ' Passe le focus au formulaire principal F_Planning, bouton actualiser.
     
    MajPlanning ' Met à jour le planning.
     
    End Sub
    à+

  12. #32
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    T'es le meilleur... Un énorme merci.

  13. #33
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Hm petit problème qui devrait se résourdre simplement je pense, les report ne prennent pas en compte le dimanche, j'ai donc pensé à rajouter un If pour mettre le décalage à deux jour si l'on est samedi.Ainsi on évite simplement le dimanche. Evidemment le code ne marche pas mais avec les index de page ce n'est pas possible de les mettre en valeur ?

    Vraiment désolé de t'embêter avec mon logiciel ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Private Sub Report_AfterUpdate()
     
       If (Me.Report = True) Then
          If MsgBox("Souhaitez-vous reporter cette intervention ?", vbYesNo) = vbNo Then
             Me.Undo
             Exit Sub
          End If
       Else
          Exit Sub
       End If
     
    DoCmd.SetWarnings False ' enlève les avertissements
    DoCmd.RunSQL ("UPDATE Intervention SET Intervention.Date_Intervention = (Intervention.[Date_Intervention]+1) WHERE Intitule_Intervention like '" & Nz(Me.Intitule_intervention, "") & "' and Intervention.Date_Intervention>#" & Format(Me.Date_Intervention, "mm/dd/yyyy") & "# ;") ' ajoute un jour aux interventions avec le même intitulé et une date supéreure.
    DoCmd.SetWarnings True
     If (IndexPage = 5) Then
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 2 ' ajoute deux jours à l'intervention en cours si on est samedi
    Me.Requery 'raffraichit le sous-formulaire
    Else
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 1 ' ajoute un jour à l'intervention en cours.
    Me.Requery
    End If
    Me.Parent.CmdActualiser.SetFocus ' Passe le focus au formulaire principal F_Planning, bouton actualiser.
     
    MajPlanning ' Met à jour le planning.
     
    End Sub

  14. #34
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Oui mais la procédure risque de perdre la récurrence :

    Par exemple si tu as une intervention "Remplacement" programmée le samedi "23/04/2016" avec une récurrence de 2 jours :

    La prochaine intervention sera le lundi 25/04/2016.

    Si maintenant on reporte l'intervention du samedi 23/04/2016, on passe le dimanche et on la programme pour le lundi 25/04/2016,
    et celle du lundi 25/04/2016 on la décalle d'un jour au mardi 26/04/2016.

    Donc la 1ère intervention est programmée le 25/04/2016
    et la 2ème intervention est programmée le 26/04/2016

    Donc, on perd la récurrence de 2 jours

  15. #35
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Ah oui j'y avais pas pensé..
    Dans ce cas pourquoi faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Private Sub Report_AfterUpdate()
     
       If (Me.Report = True) Then
          If MsgBox("Souhaitez-vous reporter cette intervention ?", vbYesNo) = vbNo Then
             Me.Undo
             Exit Sub
          End If
       Else
          Exit Sub
       End If
     
    DoCmd.SetWarnings False ' enlève les avertissements
    DoCmd.RunSQL ("UPDATE Intervention SET Intervention.Date_Intervention = (Intervention.[Date_Intervention]+1) WHERE Intitule_Intervention like '" & Nz(Me.Intitule_intervention, "") & "' and Intervention.Date_Intervention>#" & Format(Me.Date_Intervention, "mm/dd/yyyy") & "# ;") ' ajoute un jour aux interventions avec le même intitulé et une date supéreure.
    DoCmd.SetWarnings True
     If (IndexPage = 5) Then
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 2 ' ajoute deux jours à l'intervention en cours si on est samedi
    Me.Requery 'raffraichit le sous-formulaire
    Else
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 2 ' ajoute un jour à l'intervention en cours.
    Me.Requery
    End If
    If NOT (IndexPage=5) then 
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 1 ' ajoute deux jours à l'intervention en cours si on est samedi
    Me.Requery 'raffraichit le sous-formulaire
    Else
    Me.Date_Intervention = CDate(Me.Date_Intervention) + 1 ' ajoute un jour à l'intervention en cours.
    Me.Requery
    End If
     
    Me.Parent.CmdActualiser.SetFocus ' Passe le focus au formulaire principal F_Planning, bouton actualiser.
     
    MajPlanning ' Met à jour le planning.
     
    End Sub

  16. #36
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Je viens de voir avec l'entreprise, a priopri il n'y aurait pas d'intervention a court terme. soit des remplacement tous les mois ou toutes les 2 3 semaines rien de précis. Donc au pire un jour de décallage n'est pas grave
    On pourrait donc rester sur la première solution ( avec l'index page ) qui fait que si au pire un jour se décalle, les récurrences suivantes resterons identiques non ?

  17. #37
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Salut,

    Ajoute cette procédure dans le module M_Generer:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Public Sub ReporterInterventions(ID As Long)
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim leSQL As String
    Dim n As Long, r As Long, dt As Date, IT As String
     
    Set db = CurrentDb
    Set rs1 = db.OpenRecordset("select * from intervention where ID_Intervention=" & ID)
     
       If Not rs1.EOF Then
     
          IT = rs1!Intitule_intervention
          dt = rs1!Date_Intervention
          r = rs1!Recurrence
     
          leSQL = "select * from Intervention " & _
                  "where Intitule_Intervention like '" & IT & "' and Intervention.Date_Intervention>#" & Format(dt, "mm/dd/yyyy") & "# " & _
                  "order by Intervention.Date_Intervention asc;"
     
          Set rs2 = db.OpenRecordset(leSQL, dbOpenDynaset)
     
          dt = dt + 1
     
          Do Until (Not EstFerie(dt)) And (Weekday(dt) <> 1)
             dt = dt + 1
          Loop
     
          rs1.Edit
          rs1!Date_Intervention = dt
          rs1.Update
     
          dt = dt + r ' prochaine date.
     
          Do Until rs2.EOF
     
             If (Not EstFerie(dt)) And (Weekday(dt) <> 1) Then
     
                rs2.Edit
                rs2!Date_Intervention = dt
                rs2.Update
     
                rs2.MoveNext
                dt = dt + r
     
             Else
     
                dt = dt + 1
     
             End If
     
     
          Loop
     
          rs2.Close
          Set rs2 = Nothing
     
       End If
     
    rs1.Close
    Set rs1 = Nothing
     
    End Sub
    Ensuite, ton code au niveau de la case a cocher "Report" devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub Report_AfterUpdate()
    Dim ID As Long
     
       If (Me.Report = True) Then
          If MsgBox("Souhaitez-vous reporter cette intervention ?", vbYesNo) = vbNo Then
             Me.Undo
             Exit Sub
          End If
       Else
          Exit Sub
       End If
     
    ID = Nz(Me.ID_Intervention, 0)
    Me.Requery 'raffraichit le sous-formulaire
     
    Me.Parent.CmdActualiser.SetFocus ' Passe le focus au formulaire principal F_Planning, bouton actualiser.
     
    ReporterInterventions ID
     
    MajPlanning ' Met à jour le planning.
     
    End Sub
    à+

  18. #38
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Au top... Encore merci ! T'assure

  19. #39
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut Petite correction
    Salut,

    Pour prendre en compte les jours feriés et dimanche au moment de générer les futurs interventions et pour garder la récurrence, il faut imaginer une périodicité qui ne tient pas compte des dimanches et jours feriés.

    Donc, dès qu'on rencontre un dimanche ou jour férié au cours de la procédure, on passe on suivant (+1) et on réitère la procédure en tenant compte à nouveau de la récurrence (+7).

    Voici la routine GenererInterventions qui le fait (à remplacer):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Public Sub GenererInterventions()
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim n As Long, r As Long, dt As Date, IT As String
    Dim s As Long, m As Long, e As Long
     
    Set db = CurrentDb
    Set rs1 = db.OpenRecordset("R_Inter2")
    Set rs2 = db.OpenRecordset("Intervention", dbOpenDynaset)
     
    Do Until rs1.EOF
     
    IT = rs1!Intitule_intervention
    dt = rs1!Date_Intervention
    r = rs1!Recurrence
    n = Nz(rs1!NbRecurrence, 10)
    e = rs1!CE_Etat
    m = rs1!CE_Machine
    s = rs1!CE_Secteur
     
    dt = dt + r
     
    Do While n > 0
     
       If (Not EstFerie(dt)) And (Weekday(dt) <> 1) Then ' si jour ouvré.
          n = n - 1
          rs2.FindFirst "Intitule_Intervention like '" & IT & "' and Date_Intervention=#" & Format(dt, "mm/dd/yyyy") & "#"
     
          If rs2.NoMatch Then
             rs2.AddNew
             rs2!Intitule_intervention = IT
             rs2!Date_Intervention = dt
             rs2!Recurrence = r
             rs2!NbRecurrence = n
             rs2!CE_Etat = e
             rs2!CE_Machine = m
             rs2!CE_Secteur = s
             rs2.Update
          End If
     
          dt = dt + r ' on prend le jour d'après + récurrence
     
       Else ' si dimanche ou jour férié.
     
          dt = dt + 1 ' on passe au jour suivant
     
       End If
    Loop
     
    rs1.MoveNext
    Loop
     
    rs1.Close
    Set rs1 = Nothing
     
    rs2.Close
    Set rs2 = Nothing
     
    End Sub
    Cdlt,

  20. #40
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    C'est tout bon ! Merci beaucoup pour tout ton travail et ton investissement..
    Bonne continuation à toi

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Conception d'emploi du temps dans un etablissement scolaire
    Par sessime dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/02/2010, 13h18
  2. emploi du temps
    Par franfr57 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/04/2006, 18h25
  3. Génération d'un emploi du temps
    Par cocorinneco dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2006, 17h58
  4. creer un emploi du temps hebdomadaire
    Par tibiurs dans le forum Access
    Réponses: 6
    Dernier message: 21/12/2005, 18h53
  5. Quelle base de données pour un emploi du temps
    Par edouard21 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/10/2005, 22h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo