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. #1
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut Emploi du temps incrémenté et paramêtré
    Bonjour,

    Je suis actuellement étudiant en stage pendant deux mois dans une entreprise et je dois réaliser un plan de maintenance préventive.
    L'objectif final est d'avoir un formulaire à onglet affichant du lundi au samedi en cliquant dessus ( en prenant en compte les jours feriés etc etc) un sous formulaire en mode feuille de données avec les interventions à effectué à ce jour. Avec possibilité d’acquitter ces tâches et de les reporter au lendemain. DE PLUS et là est le plus gros des problèmes, les interventions déterminées par une récurrence lorsqu'on les créer se répètent donc tous les X jours... Par exemple j'ai l'intervention ABC à effectuer ce lundi avec une récurrence de 7 jours, elle devra déjà être présente dans la base de données comme " à effectuer" le lundi d’après automatiquement.
    Pour le moment les données sont rentrées les tables terminées et les formulaires d'options comme les ajouts d'interventions, l'ajout de machines, d'intervenant etc sont terminés et fonctionnels.
    En gros le reste de la base de données est terminé hormis la partie Planning...
    J'ai donc en tables 'importantes' :
    -Intervention ( ID, Intitulé, Date, Récurrence, report, avec les Clés étrangères)
    -Machines ( ID, Nom, Date 1ère intervention, CE ...)
    -Secteur (ID, Nom - qui regroupe des machines)
    -Formulaire d'affichage ( PLANNING)

    LE PROBLEME : Je suis débutant en VBA et la programmation n'est pas mon fort.. Je comprend assez bien ce que font les programmes mais je ne parvient pas à les faire moi même hormis les plus simples

    J'aimerais donc savoir comment procéder, par ou commencer etc car je vous avoue que je suis un peu perdu pour le coup...

    Merci d'avance à tout ceux qui prendront le temps de me lire et peut être de me répondre ..
    Bonne soirée !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Est-ce que tu as essayé de "décortiquer" les exemples de Planning proposés sur le forum dont celui hebdomadaire ici.

    Tu en as d'autres dans la section "Tutoriels" d'Access qui devront te permettre d'appréhender le moyen de concevoir les plannings.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Tout d'abord merci d'avoir pris du temps et de vous être penché sur le problème

    J'ai bien lu le tutoriel, le soucis avec celui ci, est que ce n'est pas l'interface désirée, le traitement des heures, matin et après midi n'est pas important. Il s'agit juste d'un "composant application" -> Onglet avec 6 jours et à l’intérieur de chaque le même sous formulaire qui s'actualise automatiquement par date lorsque l'on change de jour (via la barre d'onglet justement). De plus, je ne trouve vraiment pas comment traiter la récurrence et c'est mon plus gros point noir
    Pour finir je dois aussi prendre en compte les jours feriés.

    J'avais donc composé 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
     
    Public Function Ferier(ByVal DateX As Date) As Boolean
    Dim anneeDate As Integer
    Dim joursFeries(1 To 11) As Date
    Dim I As Integer
      anneeDate = Year(DateX)
     
      joursFeries(1) = DateSerial(anneeDate, 1, 1)
      joursFeries(2) = DateSerial(anneeDate, 5, 1)
      joursFeries(3) = DateSerial(anneeDate, 5, 8)
      joursFeries(4) = DateSerial(anneeDate, 7, 14)
      joursFeries(5) = DateSerial(anneeDate, 8, 15)
      joursFeries(6) = DateSerial(anneeDate, 11, 1)
      joursFeries(7) = DateSerial(anneeDate, 11, 11)
      joursFeries(8) = DateSerial(anneeDate, 12, 25)
      joursFeries(9) = fLundiPaques(anneeDate)
      joursFeries(10) = joursFeries(9) + 38 ' Ascension = lundi de Pâques + 38
      joursFeries(11) = joursFeries(9) + 49 ' Lundi de pentecote = lundi de Pâques + 49
     
      For I = 1 To 11
        If DateX = joursFeries(I) Then
          Ferier = True
          Exit For
        End If
      Next
    End Function
    Ainsi que pour gérer les jour de travail et de non travail afin de décaler automatiquement les interventions :

    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
     
     
    Public Function JourNT(ByVal pdDate As Date) As Boolean 'Fonction Oui/Non
       Select Case Format(pdDate, "w", vbMonday) 'Définition du Format
            Case 7  ' dimanche
                JourNT = True
            Case Else 'Autres jour de la semaine
                If Ferier(pdDate) Then 'Regroupe les jours fériés dans cette fonction
                    JourNT = True
                Else
                    JourNT = False
                End If
        End Select
    End Function
     
    J'ai également un programme qui traite le calcul du jour de paques qui vient de votre site d'ailleurs :D
     
    Merci d'avance !

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    C'était un exemple ! et celui-là ?
    Qui ne gère pas les heures !

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    bonjour,

    ok je crois avoir compris comment faire.

    je regarde ce week-end.

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut Merci
    Bonjour,

    Merci à vous deux pour vos réponses ! je continue les recherches de mon coté

    Bonne journée à vous

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Rebonjour,

    Il faudrait que tu te base sur cet exemple :

    La récurrence est donnée en nombre de jours.

    Reviens avec tes questions et on ajustera.

    à+
    Denis
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Bonsoir bonsoir

    Voilà donc j'ai un peu regardé vos deux proposition, User je trouve le programme tellement complexe, comme s'il y avait plusieurs fois la même chose et plusieurs choses rébarbative en mon sens. Je suis loin d'être un expert mais en cherchant un peu sur le net je n'ai jamais vu de pgm aussi long pour traiter des dates et récurrence . Quoi qu'il en soit j'ai un peu de mal à me repéré entre calendar, periodicité, planning... pas tout compris...

    Ce qu'on va faire c'est que je vais vous donner le code que j'ai pour le moment dans un module appelé (Calendrier). La solution ne marche pas ... du moins elle "marchotte" c'est à dire qu'en cliquant sur les onglets que je vais vous mettre en photos plus bas, les intervention à réaliser le jour s'affichent. Simplement je n'arrive pas à les répéter tous les X jours dans le calendrier et ni à les déplacer pour éviter le dimanche et les J feriés.


    Code module.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    Option Compare Database
     
    Option Explicit
     
    Sub CreerCalendrier(ByVal pnMachineCE As Long, ByVal pdDebut As Date, ByVal pdFin As Date, ByVal pnFrequence As Integer)
    Dim vdMaDate As Date 'Déclaration des variables
    Dim NbJ As Integer
        vdMaDate = pdDebut 'Récupère la date du premier entretien
        While JourNT(vdMaDate) 'Tant que ma date est un jour non ouvré
            vdMaDate = vdMaDate + 1
        Wend
        While vdMaDate <= pdFin 'boucle jusqu'a la date de fin de l'entretien ou du calcul du planning
            CurrentDb.Execute "Insert Into Intervention (CE_Machine,Date_Intervention) Values (" & pnMachineCE & ",#" & Format(vdMaDate, "mm/dd/yyyy") & "#)"
            NbJ = 1
            While NbJ <= pnFrequence 'Tant que le jour sur lequel on tombe est non ouvré
                vdMaDate = vdMaDate + 1 'On rajoute un jour
                If Not JourNT(vdMaDate) Then NbJ = NbJ + 1 'Si on tombe sur un jour ouvré, on arrête
     
            Wend
     
        Wend
    End Sub
    Sub CreerCalendrierTous()
    Dim MesInter As Recordset
        Set MesInter = CurrentDb.OpenRecordset("R1", dbOpenSnapshot) 'Utilisation requête
        With MesInter
            While Not .EOF 'Tant qu'il n'y a pas de dates (Table entretien vide pour un point)
                CreerCalendrier !CE_Machine, !DD_Intervention, #12/31/2040#, !Recurrence
                .MoveNext 'Point suivant
            Wend
            .Close 'Une fois que tous les points ont au mois une date d'entretien
        End With
        MsgBox "Génération du calendrier terminé !", vbInformation
    End Sub
     
     
     
     
    Public Function JourNT(ByVal pdDate As Date) As Boolean 'Fonction Oui/Non
       Select Case Format(pdDate, "w", vbMonday) 'Définition du Format
            Case 7  ' dimanche
                JourNT = True
            Case Else 'Autres jour de la semaine
                If Ferier(pdDate) Then 'Regroupe les jours fériés dans cette fonction
                    JourNT = True
                Else
                    JourNT = False
                End If
        End Select
    End Function
     
     
    Public Function Ferier(ByVal DateX As Date) As Boolean
    Dim anneeDate As Integer
    Dim joursFeries(1 To 11) As Date
    Dim i As Integer
      anneeDate = Year(DateX)
     
      joursFeries(1) = DateSerial(anneeDate, 1, 1)
      joursFeries(2) = DateSerial(anneeDate, 5, 1)
      joursFeries(3) = DateSerial(anneeDate, 5, 8)
      joursFeries(4) = DateSerial(anneeDate, 7, 14)
      joursFeries(5) = DateSerial(anneeDate, 8, 15)
      joursFeries(6) = DateSerial(anneeDate, 11, 1)
      joursFeries(7) = DateSerial(anneeDate, 11, 11)
      joursFeries(8) = DateSerial(anneeDate, 12, 25)
      joursFeries(9) = fLundiPaques(anneeDate)
      joursFeries(10) = joursFeries(9) + 38 ' Ascension = lundi de Pâques + 38
      joursFeries(11) = joursFeries(9) + 49 ' Lundi de pentecote = lundi de Pâques + 49
     
      For i = 1 To 11
        If DateX = joursFeries(i) Then
          Ferier = True
          Exit For
        End If
      Next
    End Function
     
     
    Private Function fLundiPaques(ByVal Iyear As Integer) As Date
     
            Dim l(6) As Long, Lj As Long, Lm As Long
     
            l(1) = Iyear Mod 19: l(2) = Iyear Mod 4: l(3) = Iyear Mod 7
            l(4) = (19 * l(1) + 24) Mod 30
            l(5) = ((2 * l(2)) + (4 * l(3)) + (6 * l(4)) + 5) Mod 7
            l(6) = 22 + l(4) + l(5)
     
            If l(6) > 31 Then
                    Lj = l(6) - 31
                    Lm = 4
            Else
                    Lj = l(6)
                    Lm = 3
            End If
     
            ' Lundi de Pâques = Pâques + 1 jour
            fLundiPaques = DateAdd("d", 1, (Lj & "/" & Lm & "/" & Iyear))
     
    End Function


    Code Ouverture formulaire et changement de l'onglet ( lundi mardi... ) dans le formulaire

    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 Form_Open(Cancel As Integer)
     
    Dim i As Integer
    Dim vdDate As Date
        vdDate = Date
        For i = 1 To 6
            While JourNT(vdDate)
                vdDate = vdDate + 1 'Décalage des jour chomés sur les onglets
            Wend
            Controls("Date" & i) = vdDate
            tabChildren.Pages(i - 1).Caption = Format(vdDate, "dddd") 'Affichage jour de la semaine
            vdDate = vdDate + 1
        Next
        Madate = Date1 'Onglet suivant
    End Sub
     
     
     
     
    Private Sub tabChildren_Change()
    Madate = Controls("Date" & tabChildren + 1) 'Mise à jour sur changement d'onglet
    End Sub
    Je pense que j'ai du faire des erreurs au niveau des cibles du tableau calendrier...
    Mais je suis un peu perdu... J'ai vu quelqu'un ayant fait marcher ce code, mais je n'arrive pas à mettre mes valeurs à la place des siennes... :/

    C'est peut être un peu flou et j'en suis désolé ^^ mais pour récapituler le problème vient de la récurrence qui ne se fait pas, et du traitement des jourNT (non travail) qui ne se font pas non plus...


    Encore merci de vos réponses et de votre patience !

    Bon WE et bonne soirée !

    Geo'

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut,

    il n'y a pratiquement pas de code tu peux supprimer le module m_periodicite.

    je vais te faire une version plus condensé.

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Voila,

    Pour la mise à jour des onglets, voici le code :

    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
    Public Sub MajPlanning()
    Dim dt As Date
     
    Forms!F_Planning!Titre.Caption = "PLANNING DE LA SEMAINE DU " & UCase(Format(DateDebut, "dd mmmm yyyy")) & " AU " & UCase(Format(DateDebut + 6, "dd mmmm yyyy"))
    Forms!F_Planning!DateD.Value = DateDebut
     
    dt = DateDebut
     
    Forms!F_Planning!CtlTabPlanning.Pages(0).Caption = Format(dt, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsLundi.Requery
     
    Forms!F_Planning!CtlTabPlanning.Pages(1).Caption = Format(dt + 1, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsMardi.Requery
     
    Forms!F_Planning!CtlTabPlanning.Pages(2).Caption = Format(dt + 2, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsMercredi.Requery
     
    Forms!F_Planning!CtlTabPlanning.Pages(3).Caption = Format(dt + 3, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsJeudi.Requery
     
    Forms!F_Planning!CtlTabPlanning.Pages(4).Caption = Format(dt + 4, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsVendredi.Requery
     
    Forms!F_Planning!CtlTabPlanning.Pages(5).Caption = Format(dt + 5, "ddd dd mmmm yyyy")
    Forms!F_Planning!SF_InterventionsSamedi.Requery
     
    End Sub
    Pour générer les récurrences des interventions si pas présentes dans la table:

    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
    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, ID As String
     
    Set db = CurrentDb
    Set rs1 = db.OpenRecordset("R_Interventions2")
    Set rs2 = db.OpenRecordset("T_Intervention", dbOpenDynaset)
     
    Do Until rs1.EOF ' on parcourt les interventions de base servant à générer les récurrences (date d'intervention minimum par ID. Intervention)
     
    ID = rs1!IDIntervention
    dt = rs1!DateIntervention
    r = rs1!Recurrence
    n = rs1!NbRecurrences  ' nombre de récurrences (on peut choisir un nbre arbitraire, ex.:100)
     
    Do While n > 0 ' boucle pour créer les récurrence
    dt = dt + r ' jour prochaine récurrence.
     
       If (Not EstFerie(dt)) And (Weekday(dt) <> 1) Then ' si la date est différente d'un jour férié ou du dimanche
       n = n - 1
       rs2.FindFirst "IDIntervention like '" & ID & "' and DateIntervention=#" & Format(dt, "mm/dd/yyyy") & "#"
     
          If rs2.NoMatch Then ' Si aucune intervention à cette date n'a été trouvée, on l'ajoute pour cette récurrence
             rs2.AddNew
             rs2!IDIntervention = ID
             rs2!DateIntervention = dt
             rs2!Recurrence = r
             rs2!NbRecurrences = n
             rs2.Update
          End If
     
       End If
    Loop
     
    rs1.MoveNext
    Loop
     
    rs1.Close
    set rs1=nothing
     
    rs2.Close
    set rs2=nothing
    End Sub
    Voici la base jointe :

    Il y a 2 modules à voir M_Generer et M_Planning et surtout les 2 procédures précédentes.

    à+
    Denis
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut Merci !
    Bonjour, merci beaucoup pour ton investissement, c'est vraiment sympa ! j'essaie ça dès lundi à l'entreprise je vous tiens au courant

    Bon week end

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Nous y voilà. J'ai donc travaillé sur le sujet pendant déjà deux heures et voici ce que j'y ai fait :

    -Modifié ma table Intervention -> J'y ai mit Le "NRecurrence" dedans et la "Recurrence" elle était déjà dedans, je me trompe peut être mais je ne voit pas l'interêt d'avoir une table juste pour ceci... Quand au NB récurrence serait-il possible qu'il soit infini ?

    -Adapté le code à mes données. J'ai donc en module copier collé les deux votre soit Planning et Générer ainsi que mon module de mot de passe ce qui nous fait 3 modules. J'ai bien fait attention de corriger toutes les différences de noms etc etc.

    -J'ai ensuite créer toutes les requêtes et ensuite tous les formulaires correspondants. J'ai recréer " à neuf" le F_Planning y ait rentré la procédure à l'ouverture et ai remit les formulaire correspondants aux 6 jours de la semaine. J'ai aussi mit le petit calendrier pour arriver au jour voulu d'ailleurs merci pour le gadget je comptais en faire un

    Je pensais donc qu'a ce stade ce serait bon. Je n'ai pas vraiment d'erreurs, Mais évidemment toujours un MAIS, J'ai un problème avec "DateD" c'est comme s'il n'arrivait pas à obtenir de valeur, l’erreur renvoie toujours au module ou à la procédure. en surlignant la ligne ou DateD se situe. J'ai regardé si je n'avais rien oublié et apparement non...
    Cela empêche par conséquent le fonctionnement du logiciel...

    Si vous savez de quoi ça vient... ? Ou si j'ai oublié quelque chose...


    Merci d'avance

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut,

    Il faut que tu vois aussi le code dans dans le module du formulaire F_Planning, je te donne l'essentiel du code du module qui utilise la variable DateDebut:

    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
    '...
     
    Private Sub CmdPrecedent_Click()
    ' Sur l'évènement "clic" du bouton de commande CmdPrecedent.
     
    DateDebut = DateDebut - 7 ' Recule de 7 jours dans le temps.
    MajPlanning ' Met à jour le planning.
    End Sub
     
    Private Sub CmdSuivant_Click()
    ' Sur l'évènement "clic" du bouton de commande CmdSuivant.
     
    DateDebut = DateDebut + 7 ' Avance de 7 jours dans le temps.
    MajPlanning ' Met à jour le planning.
    End Sub
     
    Private Sub Form_Load()
    ' Sur chargement du formulaire.
     
    DateDebut = DebutSem(Date) ' Renvoie le premier jour de la semaine courante.
    MajPlanning ' Met à jour le planning.
     
    ' Sur chargement du formulaire
     
    End Sub
    Egalement, dans le module M_Planning, au début il faut déclarer la variable publique DateDebut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Compare Database
    Option Explicit
     
    ' Module de l'application pour gérer le planning.
     
    ' Dans la partie déclaration du module on définit la date du 1er jour du planning
    ' hebdomadaire.
     
    Public DateDebut As Date
     
    '...
    J'oubliais, il faut que tu ajoutes aussi la zone de texte "DateD" sur le formulaire F_Planning. Actuellement, elle n'est pas visible sur le formulaire...

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    J'ai bien toutes ces lignes de rentrées comme dans le projet que tu m'as envoyé, je n'ai rien oublié j'ai tout vérifié 3 fois. En fait la ligne qui " beug" est celle-ci lorsque j'ouvre le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!F_Planning!DateD.Value = DateDebut
    Elle se situe dans M_Planning.

    Et si je clique sur les boutons suivant precedent même ligne.

    Cependant si je clique sur le calendrier il me renvoie à sa propre commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim lDate As String
        lDate = DisplayCalendar(Me.DateD, "Choisir une date", _
                                         IIf(IsDate(Me.DateD), Me.DateD, Now), _
                                         "Comic sans MS", 8, True, vbBlack, _
                                         vbYellow, "arial", 10)
        If Not lDate = "" Then
           Me.DateD.Value = lDate
           ' Sur l'évènement "changement" du contrôle DTPicker.
     
           DateDebut = DebutSem(DateD.Value) ' Renvoie le premier jour de la semaine.
           MajPlanning ' Met à jour le planning.
        End If

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Oups ... " Choisir une date" c'est moi qui doit la remplir non ? :oops

  16. #16
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Est-ce que tu as bien la zone de texte "DateD" présente en haut du planning, en fait je l'ai masquée sur mon formulaire...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Ahh non je ne l'avais pas la petite ! Le problème est "reglé" pour ça.
    Les flèches fonctionnent bien, le calendrier quand à lui bloque sur "DisplayCalendar" et me dit "Sub ou Function non définie".

    Et ensuite j'ai un problème que je ne comprend pas du tout, J'ai créer deux interventions dans ma table Interventions. Les deux sont définies et remplies comme il se doit
    et mà dans le formulaire, pour chaque jour j'ai une liste de 100 voir 200 fois la même intervention ... avec des situations ' prête, terminée,... ) différent à chaque fois. (Je précise que dans les requetes j'ai inséré d'autres tables pour les informations comme nom de secteur et de machine)
    Mes requetes sont bien faites et limitée au jour J..

  18. #18
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Ahh non je ne l'avais pas la petite ! Le problème est "reglé" pour ça.
    Les flèches fonctionnent bien, le calendrier quand à lui bloque sur "DisplayCalendar" et me dit "Sub ou Function non définie".
    Il faut importer le module M_Calendar pour gérer le sélecteur de date.

    Et ensuite j'ai un problème que je ne comprend pas du tout, J'ai créer deux interventions dans ma table Interventions. Les deux sont définies et remplies comme il se doit
    et mà dans le formulaire, pour chaque jour j'ai une liste de 100 voir 200 fois la même intervention ... avec des situations ' prête, terminée,... ) différent à chaque fois. (Je précise que dans les requetes j'ai inséré d'autres tables pour les informations comme nom de secteur et de machine)
    Mes requetes sont bien faites et limitée au jour J..
    Là il faudrait que je vois comment tu as construit l'appli.

    La procédure va te génerer les n interventions périodiques à partir de la 1ère, en fonction du nombre de récurrence.

    Peux-tu poster en exemple ton fichier avec des données type.

    Il faut aussi bien faire des liaisons entre les tables placées dans chacune de tes requêtes sinon Access va te faire le produit cartésien.

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Alors j'ai bien rajouté calendar et ça fonctionne merci

    Voici le dossier.
    Je précise que il reste beaucoup d'exception à gérer, le report, le changement de situation dans le F_Planning afin de la mettre sur terminée ou prête etc...


    Maintenance_PreventiveA.zip

  20. #20
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Re,

    Il faut faire des liens entre tes tables :

    Dans la table requête "R_Inter" ajoute les champs "CE_Etat", "CE_Secteur" et "CE_Machine".

    Ensuite, dans tes requêtes "SF_InterventionLundi"... relie la requête R_Inter avec les tables Etat,Secteur,Machine sur ces champs.

    Sinon, il va te faire le produt cartésien...

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 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