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 :

Pb avec NetworkDays_Intl [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut Pb avec NetworkDays_Intl
    Bonjour,

    J'ai régulièrement un fichier de 1000 à 1500 lignes sur 30 colonnes que je traite par macro pour ensuite intégrer les données dans un fichier global. Dans ce dernier il me reste des colonnes additionnelles avec des formules et quitte à traiter par macro j'ai trouvé pertinent de tout faire dans celle-ci.
    Je coince cependant avec un calcul sur des dates pour lequel je tiens compte de jours non travaillés (fériés et ponts).
    En formule je m'en sors très bien avec nb.jours.ouvrés.intl mais je n'arrive pas à faire fonctionner cela en vba. Je retranche 1 car sinon pour la même date Excel me compte 1 jour alors que pour moi du lundi 24 avril au lundi 24 avril, par exemple, ça fait zéro jour.

    Vous trouverez ci-dessous mon code qui fonctionne mais uniquement avec les jours ouvrés, j'ai donc mis en commentaires la partie que je souhaiterais que vous m'aidiez à dépatouiller.
    Ci-joint également mon fichier d'essai.

    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
    Sub test()
     
    Dim JoursFeries()
    Dim Donnees()
     
    Set donneesxls = Range("a1").CurrentRegion
    Donnees = donneesxls.Value
    LigneFin = Sheets("Jours non travaillés").UsedRange.Rows.Count
    Set JoursFeriesxls = Sheets("Jours non travaillés").Range("A2:A" & LigneFin)
    JoursFeries = JoursFeriesxls.Value
     
    For i = 2 To UBound(Donnees)
        Donnees(i, 4) = Application.WorksheetFunction.NetworkDays(Donnees(i, 1), Donnees(i, 2)) - 1
    Next
     
    'For i = 2 To UBound(Donnees)
    '    Donnees(i, 4) = Application.WorksheetFunction.NetworkDays_Intl(Donnees(i, 1), Donnees(i, 2), 1, JoursFeries) - 1
    'Next
     
    End Sub
    Je remercie par avance celles et ceux qui sauraont m'aider.
    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 409
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 409
    Points : 16 250
    Points
    16 250
    Par défaut
    Bonjour

    Marche si tu utilises la plage JoursFeriesxls. Le format date de JoursFeries et non numérique comme value2 de la plage semble gêner...

    Je ne comprends pas trop ta logique de -1 car un lundi férié est 1 jour férié... mais bon c'est toi qui vois...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Merci Chris ça marche super.

    Le -1 c'est parce qu'avec les 2 formules d'Excel nb.jours.ouvres ou nb.jours.ouvres.intl, si la date de début est égale à la date de fin j'obtiens 1. Or, dans ma logique bien entendu, pour mon besoin je considère que si une action est finie le même jour qu'elle a commencé c'est moins de 1 jour donc zéro.
    Si le début c'est lundi et que je compte 4 jours je vais compter mardi, mercredi, jeudi, vendredi. Si je ne retire pas 1 et que je mets par exemple en date de début un lundi quelconque et en date de fin le vendredi de la même semaine, excel me donnera 5 avec ces formules pour une semaine sans jour férié.
    Mais tout ça est simplement lié à l'usage que je fais des données, l'essentiel étant qu'avec ta réponse la formule fonctionne.

    Cdlt.

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

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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