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 :

Implantation de dates fixes sur un calendrier et suivi hebdomadaire [AC-2010]


Sujet :

Access

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    *DOUBLE POST*

    Ca marche bien comme cela, mais quand j'affiche les liaisons je ne vois pas ce qui m'interesse (Par exemple : Dans la table "Machines" : je ne vois que les "Poi_Fk_Type_ID" qui est donc un numéro_auto, j'aimerai visualiser le nom du type de point, dois-je changer mes relations ?), et je pense que du coup, lorsque l'on voudra afficher la maintenance à effectuer, il nous indique également ces "Numero_Auto" au lieu de nous donner le nom complet ...

    J'espere que j'ai été assez clair ?

    Cordialement

  2. #22
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Ca marche bien comme cela, mais quand j'affiche les liaisons je ne vois pas ce qui m'interesse (Par exemple : Dans la table "Machines" : je ne vois que les "Poi_Fk_Type_ID" qui est donc un numéro_auto, j'aimerai visualiser le nom du type de point, dois-je changer mes relations ?), et je pense que du coup, lorsque l'on voudra afficher la maintenance à effectuer, il nous indique également ces "Numero_Auto" au lieu de nous donner le nom complet ...
    C'est normal de ne voir que les N° du type Poi_Fk_Type_ID. Car c'est ce qui est stocké réellement dans la base. Ensuite pour voir a la place le type du point par exemple, ce sera soit dans tes formulaire ou état, soit inl faut que tu définisse dans les propriétés de ton champ dans l'onglet "liste de choix" que tu définisse la propriété "controle de l'affichage" avec "zone de liste déroulante" et que tu fasse référence à ta table "Type de point" pour faire afficher la bonne information.
    attention ces Clé étrangère doivent êtres des champs numérique entier long et non pas des Numéro auto, car cette propriété "Numéro auto" ne doit être utilisé que pour des clé car tu ne peux pas saisir dedans!
    Maintenant que ta structure est construite, il faut que tu passe à la création de formulaire de saisie et de consultation.
    Dans un premier temps, clos ce poste si tu pense qu'il est résolu, cherche un peu dans les tutos, les FAQ et autre pour t'aider à construire tes formulaires.
    Ensuite si tu rencontre des difficultés, pose une nouvelle question
    Lorsque tu aura un forulaire de saisie, après avoir créé, une machine, tu devra obligatoirement lui saisir ses points de graissage.
    La on peux imaginer avoir un bouton qui nous permette de créer le planning des tâche de graissage pour ce point.
    Et c'est la que le code que je t'ai fournis rentrera en jeu
    Tu récupéreras l'ID du point que tu viendras de créer (MonPointID), La date de début de maintenance (MaDateDebut récupérée de la table Machine), la date de fin que tu souhaite (MaDateFin par exemple 31/12/2025) et enfin la fréquence (MaFrequence récupérée dans la table type de point)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreerCalendrier MonPointID, MaDateDebut , MaDateFin As Date, MaFrequence
    A bientôt sur les autres forums

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Il faut forcement retenir le Numéro Auto, de chacun des tables lors d'une saisie ? Car ce n'est pas très ergonomique ...

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Il vaut mieux que j'utilise un formulaire ou un état ?

  5. #25
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Il faut forcement retenir le Numéro Auto, de chacun des tables lors d'une saisie ?
    Non :
    soit il faut que tu définisse dans les propriétés de ton champ dans l'onglet "liste de choix" que tu définisse la propriété "controle de l'affichage" avec "zone de liste déroulante" et que tu fasse référence à ta table "Type de point" pour faire afficher la bonne information
    Il vaut mieux que j'utilise un formulaire ou un état ?
    Un formulaire sert a saisir ou visualiser les informations a l'écran, présentées de manière plus conviviale qu'une simple table.
    L'état lui est la pour présenter ces données en vu d'une impression papier

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Je m'essaye à faire un affichage d'une maintenance à effectuer (dans un premier temps pour débuter)



    Mais j'obtiens ca :



    J'ai cherché sur internet, mais je ne comprends pas bien comment on peut éviter cela, et je n'arrive pas à me servir du code que tu m'a donné ...

    Cordialement

  7. #27
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Recherche sur le forum déjà comment faire un formulaire basé sur une table ou sur une requête !
    Ensuite regarde aussi pour faire afficher tes informations liés a une autre table, comment te servir des zones de liste par exemple ou alors de te servir des fonctions RechDom().
    Toutes les solution à ton problème de formulaire ou d'état on déjà été expliqué, dans les tutos et autre FAQ et forum.
    Il faut aussi apprendre à "Chercher"

    Dans ton exemple d'état tu met en source control :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[T_Machines]![Mac_Nom]
    En premier lieu cette syntaxe n'existe pas, sauf si ton état est basé sur une requête et que tu fait affiché cette information dans ta requête.
    En suite si, comme je le présume ton état est basé uniquement sur ta table T_Taches, comment lui dire quel nom de machine prendre ?
    Pourquoi pas la première ou la seconde, etc ...
    Essaye plutôt cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = RechDom("Mac_Nom";"T_Machines";"Mac_ID","Poi_Fk_Mac_ID")
    Mais pour que cela fonctionne il faut avoir access au champ [Poi_Fk_Mac_ID].
    Donc il faut que ton état (prend plutôt un formulaire), donc ton formulaire soit basé sur ta table T_Points.
    Ensuite derriere un bouton tu pourra mettre le code qui génère pour un point le planning de la maintenance et ensuite tu affichera le résultat des lignes généres dans un sous formulaire en mode "continu"

    Donc recherche aussi sur le forum, "sous formulaire" et tu trouvera des exemples.

    Travaille sur les formulaires, sous formulaires et listes déroulantes et si tu as des question, poste un autre sujet

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    D'abord merci pour cette réponse, je pense que je peux me débrouiller sur le formulaire, cependant c'est le code que tu m'as donné qui me pose quelques soucis : C'est bien un boucle "tant que" ? Je vois comment elle fonctionne, cependant je ne sais pas où s'inscrivent les résultats de cette boucle ? Sont ils stockés en "interne" ? Dans ce cas comment les faire ressortir, pour pouvoir les "filtrer" ? Et est-ce que ce calcul est effectué pour l'ensemble de points où il est spécifié une date de début et une fréquence ?

    PS : Comment rentrer également la date de fin qui permet d'arreter la boucle ?

  9. #29
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CreerCalendrier(ByVal pnPointID As Long, ByVal pdDebut As Date, ByVal pdFin As Date, ByVal pnFrequence As Integer)
    Dim vdMaDate As Date
        vdMaDate = pdDebut 'Récupère la date du premier entretient
        While vdMaDate <= pdFin 'bouce jusqu'a la date de fin de l'entretien ou du calcul du planning
            CurrentDb.Execute "Insert Into T_Taches (Tac_Fk_Poi_ID,Tac_DateIntervention) Values (" & pnPointID & ",#" & Format(vdMaDate, "mm/dd/yyyy") & "#)"
            'Crée et exécute la clause INSERT avec l'ID du point passé en paramètre et la date mise au format anglo saxon pour être bien interprétée dans la clause SQL
            vdMaDate = DateAdd("d", pnFrequence, vdMaDate) ' Calcul la prochaine en date en rajoutant le nombre de jour contenu dans la fréquence
        Wend
    End Sub
    C'est bien un boucle "tant que" ?
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je vois comment elle fonctionne, cependant je ne sais pas où s'inscrivent les résultats de cette boucle ?
    Réponse :C'est une requête insert qui crée les nouvelle ligne dans la table "T_Taches"

    Sont ils stockés en "interne" ?
    Non elles sont stockées dans la table "T_Taches"

    Dans ce cas comment les faire ressortir, pour pouvoir les "filtrer" ?
    Justement avec un sous formulaire basé sur la table T_Tache et avec une relation père fils avec ton formulaire basé sur ta table "T_Point"

    Et est-ce que ce calcul est effectué pour l'ensemble de points
    Non, il n'est effectué que pour un seul point passé en paramètre de la procédure.

    où il est spécifié une date de début et une fréquence ?
    Dans le passage de paramètres de la procédure

    PS : Comment rentrer également la date de fin qui permet d'arreter la boucle ?
    Toujours dans le passage de paramètres de la procédure

    Exemple (déjà donné dans un post précédent):
    Tu récupéreras l'ID du point que tu viendras de créer (MonPointID), La date de début de maintenance (MaDateDebut récupérée de la table Machine), la date de fin que tu souhaite (MaDateFin par exemple 31/12/2025) et enfin la fréquence (MaFrequence récupérée dans la table type de point)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreerCalendrier MonPointID, MaDateDebut , #31/12/2015#, MaFrequence
    je pense que je peux me débrouiller sur le formulaire
    J'espère
    Bon courage

  10. #30
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Quand j'essaye d'affecter le code qui calcul les dates, je l'affecte à un bouton, mais il me repete sans cesse :

    "End sub attendu", Pourtant je veux qu'apres l'action de cliquer le code s'éxécute et je met donc le end sub à la fin ... je ne comprends pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande16_Click()
    Sub CreerCalendrier(ByVal pnPointID As Long, ByVal pdDebut As Date, ByVal pdFin As Date, ByVal pnFrequence As Integer)
    Dim vdMaDate As Date
        vdMaDate = pdDebut 'Récupère la date du premier entretient
        While vdMaDate <= pdFin 'bouce jusqu'a la date de fin de l'entretien ou du calcul du planning
            CurrentDb.Execute "Insert Into T_Taches (Tac_Fk_Poi_ID,Tac_DateIntervention) Values (" & pnPointID & ",#" & Format(vdMaDate, "mm/dd/yyyy") & "#)"
            'Crée et exécute la clause INSERT avec l'ID du point passé en paramètre et la date mise au format anglo saxon pour être bien interprétée dans la clause SQL
            vdMaDate = DateAdd("d", pnFrequence, vdMaDate) ' Calcul la prochaine en date en rajoutant le nombre de jour contenu dans la fréquence
        Wend
    End Sub
    End Sub

  11. #31
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    J'ai quelque chose comme ça en ce qui concerne le formulaire (c'est plutot pas mal ) Cependant je n'arrive pas à choisir le point que je veux voir (le "Poi_ID" reste sur "3")

    Nom : SSForm.png
Affichages : 123
Taille : 51,9 Ko

    En tout cas merci, j'avance dèjà beaucoup mieux Didier

  12. #32
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Premièrement, tu ne peux pas appeler et déclarer la procédure en me^me temps !

    Il va falloir que tu travaille aussi avec des modules.

    Tu dois créer un nouveau module.

    Dans ce module tu colle le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CreerCalendrier(ByVal pnPointID As Long, ByVal pdDebut As Date, ByVal pdFin As Date, ByVal pnFrequence As Integer)
    Dim vdMaDate As Date
        vdMaDate = pdDebut 'Récupère la date du premier entretient
        While vdMaDate <= pdFin 'bouce jusqu'a la date de fin de l'entretien ou du calcul du planning
            CurrentDb.Execute "Insert Into T_Taches (Tac_Fk_Poi_ID,Tac_DateIntervention) Values (" & pnPointID & ",#" & Format(vdMaDate, "mm/dd/yyyy") & "#)"
            'Crée et exécute la clause INSERT avec l'ID du point passé en paramètre et la date mise au format anglo saxon pour être bien interprétée dans la clause SQL
            vdMaDate = DateAdd("d", pnFrequence, vdMaDate) ' Calcul la prochaine en date en rajoutant le nombre de jour contenu dans la fréquence
        Wend
    End Sub
    Et ensuite dans ton formulaire, sur click du bouton tu dois avoir le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande16_Click()
    CreerCalendrier MonPointID, MaDateDebut , #31/12/2015#, MaFrequence
    End Sub
    Bien entendu c'est un exemple et tu dois remplacer MonPointID par le champ qui contient l'ID de ton point, MadateDebut par le champ de ton formulaire qui contient ta date de début et idem pour la fréquence

    J'ai quelque chose comme ça en ce qui concerne le formulaire (c'est plutot pas mal )
    Oui c'est bien
    Ca avance

    Cependant je n'arrive pas à choisir le point que je veux voir (le "Poi_ID" reste sur "3")
    Quel est la source de ton formulaire ? une table, une requête.
    Est ce que tu a bien plusieurs ligne dans cette source ?
    Fais tu afficher les bouton de déplacements dans ton formulaire ?

  13. #33
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Il va falloir que tu travaille aussi avec des modules.
    Comment peut-il savoir de quel module il va se servir ?

    EDIT : Laisses tomber j'suis un gros noob mdr, y'a "CreerCalendrier" dans la fonction apres ...

    Citation Envoyé par Didier L Voir le message
    Et ensuite dans ton formulaire, sur click du bouton tu dois avoir le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande16_Click()
    CreerCalendrier MonPointID, MaDateDebut , #31/12/2015#, MaFrequence
    End Sub
    Bien entendu c'est un exemple et tu dois remplacer MonPointID par le champ qui contient l'ID de ton point, MadateDebut par le champ de ton formulaire qui contient ta date de début et idem pour la fréquence
    Avec des guillemets ? Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Commande16_Click()
    CreerCalendrier "Poi_ID", "Poi_DateDebutEntretien", #12/31/2015#, "Poi_Frequence"End Sub


    Citation Envoyé par Didier L Voir le message
    Quel est la source de ton formulaire ? une table, une requête.
    Est ce que tu a bien plusieurs ligne dans cette source ?
    Fais tu afficher les bouton de déplacements dans ton formulaire ?
    La source de mon formulaire est une table, Oui j'ai plusieurs lignes dans cette source (2 pour etre exact), et je ne saisi pas tres bien ta derniere question (Pour passer d'un point à un autre ?)

  14. #34
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    non sans les Guillements car sinon c'est considéré comme du texte.
    Si le nom de tes champs contiennent un espace tu serais obligé de les mettre entre crochet [], mais dans ton cas tu peux écrire directement : Poi_ID , etc ...

    Ensuite pour ton formulaire qui est en mode simple, pour passer d'une ligne a une autre (d'un point a un autre) tu dois pouvoir le faire soit avec les touches PGUP ou PGDOWN du clavier ou tu a peut-etre en bas de ton formulaire les boutons suivant :
    Nom : Sans titre.png
Affichages : 162
Taille : 3,3 Ko

  15. #35
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Ensuite pour ton formulaire qui est en mode simple, pour passer d'une ligne a une autre (d'un point a un autre) tu dois pouvoir le faire soit avec les touches PGUP ou PGDOWN du clavier ou tu a peut-etre en bas de ton formulaire les boutons suivant :
    Nom : Sans titre.png
Affichages : 162
Taille : 3,3 Ko
    Bonjour, tout ce qui concerne le calcul des dates fonctionne à merveille, M E R C I !

    Un petite recommandation en ce qui concerne la table :

    Nom : Date.png
Affichages : 122
Taille : 39,1 Ko

    J'ai tenté de mettre en liste déroulante, malheuresement il ne me propose que des "ID" et non de "Noms", pour faciliter le remplissage de la table (éviter de connaitre le numéro ID de la machine par coeur), a part "dérouler" la tâble machine on ne peut pas savoir, et pareil pour le type de point de graissage (dans ce cas la il faut dérouler à partir de la tâble graisse) ...

    PS : Pour les dâtes, y'a t'il moyen d'exclure les week end ? (Directement dans le code ?)

    Cordialement

  16. #36
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Pour la liste déroulante il faut que tu remplisse les propriétés "Nbre colonnes" et "Largeurs colonnes"

    Exemple:
    Si ma table T_Machine est la suivante :
    Nom : Sans titre.png
Affichages : 116
Taille : 9,5 Ko

    Alors pour les propriétés seront les suivantes:
    Nom : Sans titre.png
Affichages : 125
Taille : 19,0 Ko

    Car tu veux récuperer le nom, pour l'affichage et l'ID pour le lien avec ton champ.
    Donc il faut que tu récupère au moins les 2 premières colonnes (Attention c'est le nombre de colonne depuis la première et non pas le nombre de colonne que tu souhaite afficher)

    Et ensuite tu donne la largeur que tu veux a chaque colonne, séparé par un point virgule. Comme tu ne veux pas que la première colonne s'affiche tu met 0 et ensuite la seconde prendra toute la place disponible

    Si le champ nom avait été en 3 eme position nous aurions eu :
    Nbr Colonnes : 3
    Largeur Colonnes : 0;0



    Et pour les date les week-end, tu peux tester la nouvelle date que tu viens d'avaoir dans ta boucle et si c'est un samedi ou un dimanche tu ne fais pas ta requête "insert".
    Il te faut donc un IF et te servir de la fonction Format pour savoir si c'est un samedi ou un diamnche ;-)
    Cherche un peu dans l'aide

    Mais que veux tu faire dans ce cas, tu décale la fréquence et tu passe obligatoirement au lundi ? ou tu reporte d'autant la prochaine date ?

  17. #37
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Nickel Merci

    Citation Envoyé par Didier L Voir le message
    Et pour les date les week-end, tu peux tester la nouvelle date que tu viens d'avaoir dans ta boucle et si c'est un samedi ou un dimanche tu ne fais pas ta requête "insert".
    Il te faut donc un IF et te servir de la fonction Format pour savoir si c'est un samedi ou un diamnche ;-)
    Cherche un peu dans l'aide

    Mais que veux tu faire dans ce cas, tu décale la fréquence et tu passe obligatoirement au lundi ? ou tu reporte d'autant la prochaine date ?
    Tout simplement les oculter, faire comme si les semaines n'avaient que 5 jours . Par exemple pour cette semaine, retirer le 4 et le 5 avril ... Et peut être pouvoir faire un decalage avec les jours fériés ? Mais cela doit être assez complexe, du fait que certains jour fériés (Comme le lundi de pentecote) ne tombent pas à des dates "fixes" .... A moins que tu es dèjà entendu parler de cela ?

    EDIT : En fait j'ai trouvé assez rapidement, c'est la mise en oeuvre qui va poser quelques problèmes, je pense (et oui car desormais j'ai une approche en VBA grace a toi mdr) qu'il faut introduire ce code directement dans le module ? Cependant, cela va juste nous dire si il est férié ou non ... Et ce n'est pas trop de que je recherche, faudrait faire une sorte de Fonction : "Si Date = Jour férié, alors décaler au jour d'apres" (< Ca c'est du code niveau CP comment je viens de l'écrire mdr ).

    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
    Function EstFerie(ByVal QuelleDate As Date) As Boolean
    Dim anneeDate As Integer
    Dim joursFeries(1 To 11) As Date
    Dim I As Integer
      anneeDate = Year(QuelleDate)
     
      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 Pentecôte = lundi de Pâques + 49
     
      For I = 1 To 11
        If QuelleDate = joursFeries(I) Then
          EstFerie = True
          Exit For
        End If
      Next
    End Function
     
    Private Function fLundiPaques(ByVal Iyear As Integer) As Date
            'Adapté de +ieurs scripts...
            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

  18. #38
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Salut,

    Tu peux dans un premier temps créer une fonction qui pourra s'appeler du style
    "JourChome" pour jour Chomé
    Cette fonction te renverra vrai si c'est un samedi, un dimanche ou un jour férié (grâce à ta fonction ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function JourChome(ByVal pdDate As Date) As Boolean
        Select Case Format(pdDate, "w", vbMonday)
            Case 6, 7 'Samedi et dimanche
                JourChome = True
            Case Else 'Autres jour de la semaine
                If EstFerie(pdDate) Then
                    JourChome = True
                Else
                    JourChome = False
                End If
        End Select
    End Function
    Ensuite dans ton code qui génère ton planning tu insère cette fonction afin d'avancer d'un jour ton traitement tant que c'est un jour chomé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CreerCalendrier(ByVal pnPointID As Long, ByVal pdDebut As Date, ByVal pdFin As Date, ByVal pnFrequence As Integer)
    Dim vdMaDate As Date
        vdMaDate = pdDebut 'Récupère la date du premier entretient
        While vdMaDate <= pdFin 'bouce jusqu'a la date de fin de l'entretien ou du calcul du planning
            CurrentDb.Execute "Insert Into T_Taches (Tac_Fk_Poi_ID,Tac_DateIntervention) Values (" & pnPointID & ",#" & Format(vdMaDate, "mm/dd/yyyy") & "#)"
            'Crée et exécute la clause INSERT avec l'ID du point passé en paramètre et la date mise au format anglo saxon pour être bien interprétée dans la clause SQL
            vdMaDate = DateAdd("d", pnFrequence, vdMaDate) ' Calcul la prochaine en date en rajoutant le nombre de jour contenu dans la fréquence
            While JourChome(vdMaDate)
                vdMaDate = vdMaDate + 1
            Wend
        Wend
    End Sub
    Et voila

  19. #39
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Les variables de la fonction EstFerie, doivent-elles etre les memes que dans la fonction de la boucle ?

  20. #40
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Tu parles de quelle variable ??
    Lorsqu'un variable est déclarée a l'intérieur d'une procédure elle n'est connue que de cette dernière .
    Donc peux importe leurs noms.
    C'est pour cela que l'on passe des paramètres afin de transmettre une ou plusieurs valeurs a une fonction ou procédure afin qu'elle travaille avec.

    As tu essayé le code ?
    Fonctionne t'il ?
    Je n'ai pas vraiment compris ta question, mais si ma réponse n'est pas claire, essaye de reformuler ta question

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

Discussions similaires

  1. [XL-2010] Faire un modulo avec une date (Fréquence) sur un calendrier
    Par TTAM54 dans le forum Excel
    Réponses: 2
    Dernier message: 01/04/2015, 08h01
  2. Récupérer une date en cliquant sur le calendrier
    Par christophe_halgand dans le forum MATLAB
    Réponses: 10
    Dernier message: 23/01/2008, 09h10
  3. date du jours ds calendrier
    Par vins111282 dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 16h01
  4. [Dates] Test sur un champ de formulaire
    Par rdams dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2005, 16h03
  5. [Format Date] erreur sur insertion d'une date
    Par philobedo dans le forum SQL
    Réponses: 4
    Dernier message: 14/06/2005, 10h41

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