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 :

DateAdd sans compter les samedi et dimanche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut DateAdd sans compter les samedi et dimanche
    Bonjour,

    J'ai un UserForme pour la rédaction des commandes.
    Dans ce UF j'ai un ComboBoxDélai qui permet à l'utilisateur de choisir 1, 2, 3 ,4 ou 5 jours de délais.
    Et de ce choix j'en déduit la date de livraison.
    Exemple si nous sommes le 2 et choix 2 jours => on obtient le 4

    Sachant que dans mon domaine on ne travail ni le samedi ni le dimanche.

    Mon objectif:
    Ne plus compter ni les samedi ni les dimanche:
    - pour ne plus avoir comme date de livraison un samedi ou un dimanche.
    - pour que par exemple si on est vendredi et qu'on choisi 2 jours de délais, cela me retourne mercredi et pas lundi (car on travail 2 jours , lundi et mardi donc livraison mercredi)

    Avez vous une idée pour faire un comptage de la date du jour + x + 1 (si on compte un samedi) + 1 (si on compte un dimanche)

    Voici mon code actuel qui ne prend pas en compte cette contrainte


    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
    If ComboBoxDélai.Value = "1 jour" Then
    DateRetenue = DateAdd("d", 1, Date)
    End If
     
    If ComboBoxDélai.Value = "2 jours" Then
    DateRetenue = DateAdd("d", 2, Date)
    End If
     
    If ComboBoxDélai.Value = "3 jours" Then
    DateRetenue = DateAdd("d", 3, Date)
    End If
     
    If ComboBoxDélai.Value = "4 jours" Then
    DateRetenue = DateAdd("d", 4, Date)
     
    If ComboBoxDélai.Value = "5 jours" Then
    DateRetenue = DateAdd("d", 5, Date)
     
    End If
    Merci d'avance
    Walt

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    avec SERIE.JOUR.OUVRE() ou SERIE.JOUR.OUVRE.INTL()
    En vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.WorkDay()
    ou 
    Application.WorkDay_Intl()
    Tu peux même spécifier des fériés.
    eric

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    nbJours=val(replace(replace(ComboBoxDélai.Value , " jour"),"s"))Maintenant tu as listindex qui te retourne la position dans la liste!
    Dernière modification par Invité ; 11/03/2016 à 08h27.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    avec SERIE.JOUR.OUVRE() ou SERIE.JOUR.OUVRE.INTL()
    En vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.WorkDay()
    ou 
    Application.WorkDay_Intl()
    Tu peux même spécifier des fériés.
    eric
    Merci c'est exactement ce qu'il me fallait

    Nous sommes vendredi et si je choisi délai "1 jour" le code me retourne lundi et non plus samedi. Super!

    Voici le code obtenu avec cette fonction qui ne compte que les jours de travail


    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
    If ComboBoxDélai.Value = "1 jour" Then
    DateRetenue = Application.WorkDay(Date, 1) '+1 jour sans samedi ni dimanche => (date de départ, nb de jours)
    End If
     
    If ComboBoxDélai.Value = "2 jours" Then
    DateRetenue = Application.WorkDay(Date, 2)
    End If
     
    If ComboBoxDélai.Value = "3 jours" Then
    DateRetenue = Application.WorkDay(Date, 3)
    End If
     
    If ComboBoxDélai.Value = "4 jours" Then
    DateRetenue = Application.WorkDay(Date, 4)
    End If
     
    If ComboBoxDélai.Value = "5 jours" Then
    DateRetenue = Application.WorkDay(Date, 5)
    End If

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateRetenue = Application.WorkDay(Date, ComboBoxDélai.ListIndex+1)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détecter les samedis et dimanches
    Par metoum dans le forum InterBase
    Réponses: 3
    Dernier message: 24/05/2012, 11h55
  2. Between sans les samedi et dimanche
    Par arthuro45 dans le forum PL/SQL
    Réponses: 12
    Dernier message: 29/02/2012, 14h23
  3. [MySQL] Utilisé SUM sans compter les doublons
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 21h04
  4. Réponses: 0
    Dernier message: 10/06/2008, 16h57
  5. Intervalle Date Sans Compter Les Week Ends
    Par datamind dans le forum Oracle
    Réponses: 6
    Dernier message: 05/05/2006, 18h14

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