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

Excel Discussion :

[VBA-E] Calcul Automatique Date


Sujet :

Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut [VBA-E] Calcul Automatique Date
    Bonjour

    J'ai un problème pour calculer une date de fin basé sur un nombre de jour.
    Simplement, après avoir rentré une date de début, l'utilisateur entrera une durée (En Jour / Semaine où Mois) et je souhaites que la date de fin s'affiche automatiquement.

    Pour les semaines, ça marche a peu près bien j'utilise ce code :

    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
    Sub EndDate_weeks()
     
    Dim startDate As Date
    Dim endDate As Date
    Dim engageLength As Integer
     
        engageLength = Sheets("General").Range("F33").Value
        startDate = Sheets("General").Range("F32").Value
        endDate = startDate + (engageLength * 7) - 1
     
     
     If startDate <> 0 Then
        Sheets("General").Range("F34").Value = endDate
     
     
        Else
     
        MsgBox ("You have not entered a start date in the General Screen")
     
        End If
     
    End Sub
    Mais pour ce qui est des jours et des mois ca marche beaucoup moins bien car forcement avec le mois de Février, et toutes les années Bisexstiles...

    Bref, je sais que je peux lié ma macro à la date du systeme comme vous en avez discuté http://www.developpez.net/forums/sho...highlight=date mais ça marche pas trop pour moi !

    Merci d'avance,

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai bien vu où tu trouves la date de départ et le format JJ SS MM que tu utilises mais il serait bien de donner un exemple de délai (jrs; sem; mois ou jrs, sem, mois) qu'on parte sur de bonnes bases

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    C sur ça peut aider !!

    En fait voila ce qui se passe, j'ai des radio buttons qui permettent de choisir quelle unités on souhaite Jour Semaine ou Mois.

    En fonction du choix un tableau très simple s'ouvre, il propose de rentrer la date de début et avec un spinner le nombre de Jour/Sem/mois (en fonction de l'unité choisie)

    Par Exemple, si je suis en semaine, que le départ c'est le 01/01/2007 et que je choisie comme durée 1. Alors il s'affichera le 7 Janvier.

    C'est là mon problème car la vrai fin de semaine c'est le 5 et non pas le 6... Alors je pourrait simplement mettre 5 à la place de 7 dans ma macro mais ça se décale au fur et à mesure...

    Idem pour les mois, on perd un jour par mois du coup au fur et à mesure la fin du mois avance, par exemple si je choisi 25 mois avec la macro si dessous, je tombe le 21 Janvier 2009...

    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
    Dim startDate As Date
    Dim endDate As Date
    Dim engageLength As Integer
     
        engageLength = Sheets("General").Range("F37").Value
        startDate = Sheets("General").Range("F36").Value
        endDate = startDate + (engageLength * 30) + 1
     
     
     If startDate <> 0 Then
        Sheets("General").Range("F38").Value = endDate
     
     
        Else
     
        MsgBox ("You have not entered a start date in the General Screen")
     
        End If
     
    End Sub

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    tu devrais regarder la fonction DateAdd

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Là je n'ai plus le tps mais jète un oeil Désolé de me citer mais il faut que "j'y aille"
    Je n'ai pas tout compris (juste lu en diagonale) mais si ça correspond à l'un de tes soucis, tant mieux
    A+

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    en jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datefin=datedebut+nbjours
    en semaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datefin=datedebut+(nbsemaines*7)
    en mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datefin=dateserial(year(datedebut),month(datedebut)+nbmois,day(datedebut)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Merci,

    Je pense qu'entre le dernier message, la fonction dateadd + la citation d'Ouskeln'or je devrais réussir !

    Elle est belle la vie !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Bonjour,

    Un grand à celui qui m'a conseillé d'utiliser la fonction DateAdd, ça m'a pris un peu de temps de tout mettre en place mais l'aide en ligne est précieuse !

    Bref si ça peut dépanner quelqu'un jour qui cherche comme moi à avoir une date de fin en fonction de la date de début, voici mon code :

    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
    Sub try_EnDate_Months()
     
    Dim StartDate As Date
    Dim EndDate As Date
    Dim EngagementLenght As Long
    Dim IntervalType As String
     
        IntervalType = "m"  
     
    'Here the interval type is "m" for month, change to "w" for week or "d" for days
     
        StartDate = Sheets("General").Range("F36").Value
        EngagementLenght = Sheets("General").Range("F37").Value
        EndDate = DateAdd(IntervalType, EngagementLenght, StartDate)
     
    Sheets("General").Range("F38").Value = EndDate
     
     
    End Sub
    En éspérant pouvoir aider un jour un perdu en VBA (un peu comme moi !! mais de moins en moins grace au NET ! )

    @+

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

Discussions similaires

  1. [VBA Excel] Calcul automatique
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/02/2007, 09h16
  2. [VBA-E] Calculs d'écarts entre 2 dates
    Par harpic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/12/2006, 16h48
  3. [VBA-E]Calculer nbre de Jrs avec chevauchement de dates
    Par YoungBlood dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/06/2006, 20h55
  4. [VBA-E] Calcul de formule automatique
    Par ashurai dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/05/2006, 16h43
  5. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53

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