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][Excel]fonction networkdays


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Points : 28
    Points
    28
    Par défaut [VBA][Excel]fonction networkdays
    Salut,

    Je travail sous Excel et je lance des macro en automatique. J'ai un souci qui survient lorsque je fais tournée ma macro la nuit et pas lorsque que je la fait tournée la journée.

    L'erreur qui s'affiche est "Impossible de trouver la macro ''"

    J'aimerais savoir si la fonction networkdays pourrais etre la cause de mon probleme. A savoir que ma macro tourne a 5h00.

    Merci


    je vous met mon code si sa peu vous aider

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Private Sub SommeDonnee()
    On Error GoTo Err_SommeDonnee
        Dim NbLgn As Integer, NbTotalJourOuvrer As Integer, idLgn As Integer
     
        NbLgn = WorksheetFunction.CountA(Columns(1))
        NbTotalJourOuvrer = networkdays("01/01/2005", Date) ' Calcul du nombre de jour ouvré depuis le 01/01/2005
        For idLgn = 10 To NbLgn + 8
            'Conso jour
            If Cells(idLgn, 5) <> 0 Then
                Cells(idLgn, 6) = Cells(idLgn, 5) / NbTotalJourOuvrer
                Cells(idLgn, 6).NumberFormat = "0"
            End If
    ' ----------------------------------------------------------------------------------------------------*
     
            'Dispo a j
            If Cells(idLgn, 6) <> 0 Then
                Cells(idLgn, 7) = (Cells(idLgn, 10) + Cells(idLgn, 11) + Cells(idLgn, 12)) / Cells(idLgn, 6)
                Cells(idLgn, 7).NumberFormat = "0"
            End If
    ' ----------------------------------------------------------------------------------------------------*
     
            'Dispo max
            If Cells(idLgn, 6) <> 0 Then
                Somme = 0
                For i = 1 To 10
                    If i = 1 And i <= 3 Then Somme = Somme + Cells(idLgn, 9 + i)
                    If i >= 4 And i <= 8 Then Somme = Somme + Cells(idLgn, 14 + i)
                    If i >= 9 Then Somme = Somme + Cells(idLgn, 15 + i)
                Next
                Cells(idLgn, 8) = Somme / Cells(idLgn, 6)
                Cells(idLgn, 8).NumberFormat = "0"
            End If
    ' ----------------------------------------------------------------------------------------------------*
     
            'Dispo max (20%)
            If Cells(idLgn, 8) <> 0 Then
                Cells(idLgn, 9) = Cells(idLgn, 8) * 0.8
                Cells(idLgn, 9).NumberFormat = "0"
            End If
    ' ----------------------------------------------------------------------------------------------------*
     
            'Stock mini
            If Cells(idLgn, 6) <> 0 Then
                Cells(idLgn, 29) = Cells(idLgn, 6) * 2
                Cells(idLgn, 29).NumberFormat = "0"
            End If
    ' ----------------------------------------------------------------------------------------------------*
     
            'Ecart-type
            Cells(idLgn, 30) = (Cells(idLgn, 10) + Cells(idLgn, 11)) - Cells(idLgn, 6)
            Cells(idLgn, 30).NumberFormat = "0"
    ' ----------------------------------------------------------------------------------------------------*
     
           'Priorite
           If Cells(idLgn, 10) <> 0 Or Cells(idLgn, 6) <> 0 Then
                If Cells(idLgn, 10) < Cells(idLgn, 6) Then
                    Cells(idLgn, 31) = "A"
                ElseIf (Cells(idLgn, 10) > Cells(idLgn, 6)) And (Cells(idLgn, 10)) < (Cells(idLgn, 6) * 2) Then
                    Cells(idLgn, 31) = "B"
                ElseIf Cells(idLgn, 10) > Cells(idLgn, 6) Then
                    Cells(idLgn, 31) = "C"
                End If
            End If
        Next
    Exit Sub
     
    Err_SommeDonnee:
        Call EnvoiMailErr("SommeDonnee", Err.Description)
    End Sub

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je ne connais pas la fonction networkdays qui n'est pas dans ma version d'Excel.

    Est-elle de ta fabrication et si oui quel code contient-elle ?

    Si tout marche bien de jour mais pas de nuit, elle est vraisemblablement impliquée (une division par 0 à un moment précis, peut-être ?)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Points : 28
    Points
    28
    Par défaut
    La fonction networkday est une fonction qui se trouve dans les feuilles de classeur d'excel.
    Pour l'ajouter il faut aller dans
    -outil
    - macro complémentaire
    - cocher la case utilitaire d'analyse VBA.
    De la il est possible d'utiliser certaine fonctions d'excel qui ne sont disponible que depuis la feuille de calcul.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je ne l'ai pas chez moi (version trop vieille peut-être).

    Désolé

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Points : 28
    Points
    28
    Par défaut
    ok c'est pas grave merci quand meme

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    J'ai du mal à croire que cela vienne de la fonction elle-même même si les addins ont des comportements parfois bizarre :
    comportement en fonction de la langue installée par exemple - Networkdays ou NB.JOURS.OUVRES .

    Par curiosité, lorsque ton code ne fonctionne pas, teste le résultat de Networkdays pour vérifier si le problème vient de là -
    Tu peux également forcer le retour de valeur avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run("ATPVBAEN.XLA!NetWorkDays",datedébut, datefin)
    des fois que ...

    D'autre part, la fonction Networkdays utilise des dates en paramètres et c'est une chaine de texte qui lui est passée dans ton code !
    serait probablement plus approprié

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Merci DarkVader, j'ai trouvé chez moi NB.JOURS.OUVRES

    Ceci étant dit, ce qui me parait surprenant est que celà fonctionne de jour et pas de nuit.

    Autre surprise après relecture du 1er message :

    un message d'erreur apparaît lors d'un lancement de nuit :

    "Impossible de trouver la macro ''
    Si j'en crois mes yeux, la macro serait donc reconnue de jour et pas de nuit !!!

    Que peut-il donc y avoir derrière tout celà ??? Des protections ??? Des barrages ???

    JE N'EN SAIS HELAS RIEN, bien que je devine que la fonction incriminée n'est pas DIRECTEMENT responsable.

    :

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 78
    Points : 28
    Points
    28
    Par défaut
    Ok j'en prend note.

    Je met ca en place et je vous donne la réponse lundi.

Discussions similaires

  1. [VBA-EXCEL] - Fonction NB.SI en liaison avec un autre classeur
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/01/2007, 16h43
  2. VBA excel, fonction exponentiel
    Par vanima dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/09/2006, 10h33
  3. VBA -> Excel : Fonction ChartObjects()
    Par fabb5 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/07/2006, 10h22
  4. [VBA/Excel] Fonction open sous Excel 97
    Par nico01984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2006, 14h19
  5. [VBA EXCEL] Fonction Instr
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/01/2006, 14h43

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