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 :

[VBA-E] Jours ouvrables


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [VBA-E] Jours ouvrables
    Bonjour j'ai deux colonnes A, B:
    Dans la première j'ai des dates données et dans la seconde je dois mettre la forume "Date +2j", jusqu'içi tout va bien.
    Mais si le résultat donnée tombe samedi ou dimanche il faut passer au lundi d'aprés.
    y a t'il une fonction prévus pour les jours ouvrables et avez vous des conseils sur la façon de s'y prendre

    Merci d'avance

  2. #2
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Tu testes si le résultat est samedi ou dimanche (avec des fonctions comme weekDay, format...), si oui tu vas au lundi (tu ajoutes 1 ou 2 jour), tu l'as dis toi-même.

    En ce qui concerne les fonctions pour les jours ouvrable, si t'es sous excel, tu as "SERIE.JOUR.OUVRE" (trouvé en faisant une recherche dans Excel à Jour ouvrable)

  3. #3
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    J'ai probablement trouvé une solution à ton problème : tu peux utiliser la fonction DateAdd et la fonction WeekDay pour comparer le jour avec dimanche et samedi.
    Cela donne le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim DateDebut
    Dim DateFin
     
    DateDebut = "01-04-2005"
     
    DateFin = DateAdd("d", 2, DateDebut) ' "d" pour les jours
    If Weekday(DateFin) = 1 Or Weekday(DateFin) = 7 Then
    '1 = dimanche
    '7 = samedi
        DateFin = DateAdd("d", 2, DateFin)
    End If
    MsgBox DateFin 'Affiche la date calculée
    Voilà bon courage pour la suite

    @+
    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Super les gars , merci.

    si c samedi je rajoute 2 jours en plus à la date initial soit (2+2=4j) et 3pour dimanche cool.

    Merci encore bonne journée

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Aie aie aie
    mon chef vient de changer la donne:
    En fait , on a une colonne A qui contient des dates , une colonne B : des délais de transport et une colonne C qui doit être le résultat de A+B.
    Le problème est comment rajouter ces délais sans compter les week end ?

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Comment compte tu gérer les jours fériés ? Tu les inclus ou pas ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Je donnes un exemple :
    Date de départ :07/04/2005.............;c un jeudi
    délais :5 jours
    Date résultante: 12/04/2005 qui est mardi ben c faux
    Il faut en fait faire: vendredi08/04,lundi 11/04,mardi 12/04 , mercredi 13/04, jeudi 14/04
    Et voilà de quoi faire une bonne moutarde...aie aie

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Pourquoi ne pas faire la différence entre les deux dates d'abord. Ensuite tu fais une division entière par 7 (nombre de jours dans une semaine) de cette différence. Ce résultat donne le nombre de week ends. Tu le multiplies par 2 (jours) et tu le soustrait de la différence.

  9. #9
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Je ne sais toujours pas si tu es sous EXCEL.
    Mais si c'est le cas: SERIE.JOUR.OUVRE est exactement ce que tu veux.
    Tu lui mets une date (ta colonne A), unnombre de jour ouvré (ta colonne) et ça te retourne une date.

    Tu peux ajouter une plage pour les jour férié si tu veux.

  10. #10
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Re bonjour

    Aurais-je réfléchi le problème à l'envers? Y'a des chances! Heureusement, mon raisonnement se retourne comme un bas!

    Tu as un nombre de jours ouvrables et tu veux savoir à quelle date ça nous conduit? C'est ça!

    Tu fais une division entière de ce nombre par 5 pour obtenir le nombre de week ends et tu multiplie le nombre de week ends par 2 pour obtenir le nombre de jours à ajouter. Ensuite tu ajoute ce nombre de jours à ton nombre de jours ouvrables et tu calcule la date ou ça nous mène.

    Il reste à vérifier le nombre (à les compter, s'il y a lieu) de jours fériés dans l'intervalle et à les ajouter à ton résultat... et à revérifier s'il n'y a pas encore un jour férié... jusqu'à ce que tu obtienne la date voulue.

  11. #11
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Je crois que c'est ce coup-ci que tu as compris de travers (Ou sinon c'est moi).

    Tout à l'heure ton raisonnement était bon, sauf que ça se compliquait si on voulait en plus les jours fériées.

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Pas tant que ça.

    Si la différence entre les deux dates initiales correspond au nombre de jours que l'on veut convertir en jours ouvrables... et si la différence entre ces deux date correspond à une période de plus d'une semaine, il est possible qu'il y ait plus d'un week end...

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Tout d'abord merci à tous d'avoir donné des réponses.
    Ma moulinette est sur EXCEL 2000
    Mais je crois que je me suis mal fait comprendre:
    je la refais une deuxième fois.

    je suis dans une usine , j'ai mon article qui est pret le jeudi 07 avril, le delais d'expedition au magasin est de 5 jours.

    si je fais 7+5=12 or c pas bon car le livreur ne livre pas le samedi , dimanche. donc je dois compter le 8,11,12,13,14 avril .
    Voilà en gros:

    |date de dispo|délais| date résultante|
    --------------------------------------------
    |07/04/2005 | 05 | 14/04/2005 |

  14. #14
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Tu peux passer par une macro :

    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
    Public Sub main()
        Debug.Print JourLivraison("07/04/2005", 5)
    End Sub
     
    Private Function JourLivraison(DateCommande As Date, Delais As Long) As Date
        If NumeroJour(DateCommande) > 5 Then
            JourLivraison = JourLivraison(JourSuivant(DateCommande), Delais)
        ElseIf Delais > 0 Then
            JourLivraison = JourLivraison(JourSuivant(DateCommande), Delais - 1)
        Else
            JourLivraison = DateCommande
        End If
    End Function
     
    Private Function JourSuivant(Jour As Date) As Date
        JourSuivant = DateAdd("d", 1, Jour)
    End Function
     
    Private Function NumeroJour(Jour As Date) As String
        NumeroJour = Weekday(Jour, vbMonday)
    End Function

  15. #15
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    On t'as déjà parlé plusieur fois de SERIE.JOUR.OUVRE (et des la première réponse), as-tu été voir l'aide. Car sauf erreur, c'est exactement ce que tu cherches. Regardes l'aide d'EXCEL.

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

Discussions similaires

  1. Jour ouvrable vba
    Par julius999 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2010, 12h44
  2. Calcul Jours Ouvrables
    Par beurnoir dans le forum Access
    Réponses: 8
    Dernier message: 26/10/2005, 15h53
  3. Réponses: 5
    Dernier message: 14/10/2005, 12h11
  4. Decaler les dates d'un jour en jours ouvrables
    Par beurnoir dans le forum Access
    Réponses: 4
    Dernier message: 06/10/2005, 10h13
  5. [VB6] Avec num. de semaine, savoir le 1er et der. jour ouvrable?
    Par lololefada dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2004, 13h07

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