Code vba date

Résolu
Bonjour,

je viens de reprendre un code dans livre
et lorsque je l'enregistre,
j'ai un message concernant un problème de déclaration de variable,

voici le code

Function nbrejoursouvres(date1, date2)
Dim tjour(7) As String
Dim vnbjours As Integer
tjour(1) = 1 'dimanche
tjour(2) = 0 'lundi
tjour(3) = 1 'mardi
tjour(4) = 1 'mercredi
tjour(5) = 1 'jeudi
tjour(6) = 1 'vendredi
tjour(7) = 1 'samedi
For i = date1 To date2
If tjour(Weekday(i)) = 1 Then vnbjours = vnbjours + 1
Next
nbrejoursouvres = vnbjours

End Function

je veux utiliser cette fonction dans le cadre d'un gantt
j'ai besoin d'éliminer les jours fériés, et d'attribuer la valeur 1 au dimanche.
(le code ci dessus et celui du livre)

Ma question où est le problème de variable ?

merci

Charlyjack

4 réponses

  1. Modérateur
    Bonjour,
    problème de déclaration de variable?
    ==> For i = date1 To date2
    i est déclaré comme quoi dans ta fonction?
    Essaye donc ceci :
    Dim tjour(7) As Integer 'Comme l'a si justement dis Lermitte222 (salut)  
    Dim vnbjours As Integer  
    Dim i As Date

    Franck P
    1
    1. Bonsoir
      merci à toi pijaku
      dim i as date a réglé mon problème
      je vais jeter le livre qui me donne des codes erronés
      encore merci

      Charlyjack
      0
  2. Contributeur
    Bonjour,
    Après tout, tu fais comme tu veux. :-)
    L'erreur..
    Dim tjour(7) As Integer   
    

    A+
    --Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
    1. Bonjour lermitte,
      après essai ça ne fonctionne pas,
      j'ai toujours le même message d'erreur !

      cdt

      David
      0
  3. Bonjour,

    Pour compter les dimanches, il suffit, dans la première formule, de remplacer <6 par =7
    1
    1. Bonjour
      je ne veux compter que les dimanches uniquement,
      voire les jours fériés

      Cdt

      Charlyjack
      0
    2. C'est bien ce que je t'ai dit : Pour compter les dimanches
      0
    3. A ben oui,
      autant pour moi,
      je n'avais pas remplacer le signe inférieur par =

      merci beaucoup pour cette formule
      qui fonctionne parfaitement

      Charlyjack
      0
    4. De rien, au plaisir de te relire sur le forum
      0
  4. Bonjour,

    Pourquoi écrire une macro quand une simple formule suffit ?
    Date1 en A1 et Date2 en B1,
    en C1 : =SOMMEPROD((JOURSEM(LIGNE(INDIRECT(A1&":"&B1));2)<6)*1)

    Ou encore plus simple en activant la macro complémentaire utilitaire d'analyse (analysis tool) :
    =NB.JOURS.OUVRES(A2;B2)

    Cordialement
    Patrice
    0
    1. Effacé
      0
    2. Salut Patrice et merci de l'interêt que tu portes à ma question,
      En fait j'ai besoin qu'excel identifie le dimanche, et attribue la valeur 1.

      Le but est d'ajouter une journée de travail à une tâche dans mon GANTT
      puisque le dimanche est non travaillé.

      merci de ton aide

      Charlyjack
      0