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

Macros et VBA Excel Discussion :

décalage des dates macro excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut décalage des dates macro excel
    Salut mes amis,

    Je suis en train de faire un planning des tâches dans une societé (je suis en stage) et j'ai trouvé des problèmes au niveau de construction des macro puisque je suis très débutant.
    Voici le tableau suivant :

    Tâches------ Début -------- Fin

    1------ 10/05/2010 06:00 ---------- 10/05/2010 21:00 (durée = 15h)
    2------ 10/05/2010 21:00----------- 11/05/2010 01:00 (durée = 4h)
    3------ 11/05/2010 01:00---- 11/05/2010 4:35 (durée = 3.35h)
    4------ 11/05/2010 4:35 ----- 11/05/2010 16:00 (durée = 11.65h)
    5------ 11/05/2010 16:00------ 11/05/2010 23:00
    6------ 12/05/2010 23:00--------- 12/05/2010 5:00
    7------ 12/05/2010 05:00 ---- 15/05/2010 12:00 (durée = 79h)

    et j'ai cette condition : le jour commence à 6h et se termine le jour suivant à 4h (22h en total par jour). donc si on dépasse 4h (du jour suivant) on décale la tâche par 2 h et on l'achève (comme dans le tableau la tâche 3 : il faut la décaler pour qu'elle s'achève 11/05/2010 06:35 et donc automatiquement la tâche suivante se décale par 2h et ce processus se répète pour les autres).

    l'output est le tableau suivant :

    Tâches ------ Début ------- Fin
    1------- 10/05/2010 08:00------- 10/05/2010 21:00
    2------- 10/05/2010 21:00---- 11/05/2010 01:00
    3------- 11/05/2010 01:00---- 11/05/2010 6:35
    4------- 11/05/2010 6:35---- 11/05/2010 18:00
    5------- 11/05/2010 18:00---- 11/05/2010 1:00
    6------- 12/05/2010 1:00------ 12/05/2010 9:00
    7------- 12/05/2010 09:00---- 15/05/2010 22:00


    NB : pour la 7ème tâche, cette tache passe 3 jour jours donc il ne faut oublier les 6h de les ajouter.

    Est ce qu'il existe une personne qui m'aide pour déterminer une macro qui permet de résoudre ce problème ?
    Autre question, comment chercher une date entre deux autres dates ?
    et merci beaucoup.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    attention : 3.35h ne fait pas du tout 3h35...

    un peu de lecture, avec toute une serie de fonctions qui t'aideront a trouver ce que tu cherches :
    http://silkyroad.developpez.com/Exce...ionsExcel/#LVI
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    je ne sais pas comment tu rentres tes données, mais mieux vaut commencer avec un crayon et un papier pour voir si on peut établir une relation qui permette de faire une règle du genre :

    Si je rentre le début de ma première tâche, puis sa durée, et j'obtient l'e point de départ de la deuxième tâche etc.. (peu importe, c'est l'approche du raisonnement qui compte)

    on peut établir une relation du type que : si on note

    JA le jour de début
    Jb le jour de fin
    HA l'heure (de 1à24) de début
    HB l'heure (de 1à24) de fin
    H fin = heure de fin

    on peut considérer que :
    Si Ha < 4h et HB > 4h => H fin = HB+2 +(2*(JB-JA) Else H fin = HB +(2*(JB-JA)

    Le but est de dire que si entre date de départ et date de fin on a 3 jours et que l'heure de fin est supérieure à 4h alors que l'heure de départ est inférieure à 4h on aura un décalage de 8h.

    Donc Hfin (dont ton calcul de durée brute est indépendant), sert du coup à déterminer l'heure de départ de la tâche suivante...


    Je ne dis pas que c'est tout bon, c'est un brouillon d'approche que j'aurais dans ton contexte, une fois le relation (quand elle est possible) trouvée, le reste est facile ensuite...

    cordialement,

    Didier

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    mon ami j'ai pris une variable qui calcule le nombre de jour entre la date de fin et la date de début. Voici le code que j'ai utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    z = datediff("d",datedebut,datefin)
    for i=1 to z
    dater = dateadd("d",1,datedebut)
    if datepart("w",dater) =1 then datefin=dateadd("d",1,datefin) 
    datefin = dateadd("n",120,datefin)
    dater = dateadd("d",1,datedebut)
    next
    Nb : pour mon code j'ai vérifier l'existance de dimanche entre les jours.

    pour vérifier une tâche dépasse la capacité c'est facile, voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if datepart("h",datefin) > 4 then datefin = dateadd("n",120,datefin)

    Merci en tout cas pour votre aide c'est très gentil

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/10/2013, 08h43
  2. Décalage des dates automatique
    Par JamesP dans le forum PL/SQL
    Réponses: 4
    Dernier message: 02/11/2011, 17h07
  3. [XL-2003] Coment filtrer sur des dates dans Excel avec une macro
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/03/2010, 14h47
  4. Gestion des dates sous Excel avec les microsecondes
    Par fredppp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 15/12/2009, 22h36
  5. Formatage des dates depuis Excel
    Par ruzakruzak dans le forum SQL
    Réponses: 2
    Dernier message: 13/10/2008, 17h45

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