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 :

calcul des dates jours ouvrés avec une function [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut calcul des dates jours ouvrés avec une function
    Bonjour a tous

    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
    Public Function RespDelais(startD As Date, delais As Integer) As Date
     
        'Return the estimated date of answser
        Dim i As Double
        Dim u As Integer
        Dim k As Integer
        u = 0
        For i = 0 To delais
            If Weekday(DateAdd("d", i, startD), vbMonday) > 5 Then
            u = 2
            'Adds 2 days if it overlaps the weekend
            End If
        Next i
     
        If Weekday(DateAdd("d", delais + u, startD), vbMonday) = 6 Then
            k = 2
        ElseIf Weekday(DateAdd("d", delais + u, startD), vbMonday) = 7 Then
            k = 1
            'Adds 2 days if it overlaps the weekend
        Else
            k = 0
        End If
     
        RespDelais = DateAdd("d", delais + u + k, startD)
     
    End Function
    J'ai des dates sur la colonne G et jaimerais créer une variable qui prend la valeur de toutes les cellule de cette colonne 1 par 1 => puis calcule la nouvelle date avec cette function et la place dans la cellue de la colonne I .

    Merci

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour
    ...et.. du coup... quelle est ta question?
    Tu as un erreur quand tu lances ta fonction? Si oui, où et quelle erreur?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut
    Voila ou ma function est appelé et ou je rencontre l'erreure :

    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
    Sub calcul_leadtime()
    ligne = 3
    Dim datec As Date
    Dim cellu As cell
    Dim del As Integer
     
    With Sheets("Suivi_Faisa")
    For Each cellu In Range("G4:G1000000")
            ligne = ligne + 1
                del = 4
                datec = Cells(ligne, 7)
                .Cells(ligne, 9).Value = RespDelais(datec, del)
            Next cellu
    End With
    End Sub
    J'ai essayé de boucler au niveau de toutes les lignes .

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    OK, mais quelle erreur, quel message d'erreur? Sur quelle ligne exactement?

    Déjà, datec est une valeur et pas une cellule, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datec = Cells(ligne, 7).Value
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datec = Cells(ligne, 7)


    Et
    Au lieu de

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut
    Oui c vrai Merci , la ça marche nickel

    Seul soucis j'aimerai ajouter un condition si cellule vide ne pas prendre en compte .
    Parceque la il a fait toutes les cellules de la colonne .

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    La fonction isEmpty te permet de vérifier si la cellule est vide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim myCell as Range
    If isEmpty(myCell) = False Then      'si la cellule n'est pas vide, alors
        'je fais ce que j'ai à faire
    End If

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each cellu In Range("G4:G1000000")
            If IsEmpty(cellu) = False Then
                ligne = ligne + 1
                del = 4
                datec = Cells(ligne, 7).Value
                .Cells(ligne, 9).Value = RespDelais(datec, del)
            End If
     
        Next cellu
    Ça continue de prendre en compte les cellule vide :/

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Tes cellules sont-elles réellement vide ou y a-t-il une formule qui renvoie une chaine de caractère vide?
    Par exemple :
    n'est pas considéré comme une cellule vide.

    Si on est dans ce cas, tu peux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("A1").Value = "" Then
    ' ...
    End If

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With Sheets("Suivi")
            For Each cellu In Range("G4:G1048576")
     
                If cellu.Value <> "" Then
                datec = Cells(ligne, 7).Value
                .Cells(ligne, 8).Value = RespDelais(datec, del)
                ligne = ligne + 1
     
                End If
     
            Next cellu
     
    End With
    Mon code fait le calcul pour les cellules vides alors que je voudrais qu'il s’exécute seulement pour les cellules qui contiennent une date :/

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    non, le code testant déjà les cellules non vides

    ___________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut
    j'ai sorti le ' Ligne=Ligne+1 de la boucle est ça marche

    Merci en tout cas

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

Discussions similaires

  1. [XL-2003] Coment filtrer sur des dates dans Excel avec une macro
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/03/2010, 14h47
  2. Probleme avec des dates/jours ouvres
    Par progfou dans le forum Excel
    Réponses: 10
    Dernier message: 11/02/2009, 12h58
  3. Calcul de date / jours ouvrés
    Par Elumastebit dans le forum Excel
    Réponses: 4
    Dernier message: 23/10/2008, 20h55
  4. Calcul des dates et des jours ouvrés
    Par okparanoid dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2007, 16h50
  5. [Q] VB Excel: Macros calcul de date jours ouvrés
    Par naouara17 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h59

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