Date sous VBA Excel [Résolu]

Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
- - Dernière réponse : alinoe70
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
- 16 juil. 2013 à 15:04
Bonjour à tous
j'ai besoin d'un coup de main.
Je dois calculer une voir plusieurs dates (nb de jour)
puis et c'est la que ca cloche, les séparer par année civile
En sachant que le tout doit être sur une seule ligne
1 c'est possible en VBA?

2 Sur la feuille avec des formules?
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bon !
1 c'est possible en VBA? ===>> oui
2 Sur la feuille avec des formules? ===>> probablement, mais alors : avec une formule risquant d'être longue comme un jour sans pain
Dans un cas comme dans l'autre :
je demande si c est possible de le faire oui ou non pas de me l écrire

te voilà donc servi.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Mon but était de savoir si une personne avais déjà été confronté à ce problème

Et quelle nécessité de savoir si quelqu'un a ou non été confronté à cet exactement même "problème" ? Hein ?
Réponse valable pour tout "problème" : si la raison (avec papier + crayon) permet (sans autre apport "subjectif") de résoudre un problème,on peut alors forcément le résoudre par du code (application d'un algorithme de résolution). Et qui dit algorithme, dit raison et mécanisme de pensée .
Et l'"algo" en cause ici est vraiment simple !
Alors ? ===>> Au boulot. "Ya plus qu'à" !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Et l'"algo" en cause ici est vraiment simple !

juste pour ton info et justifier cette phrase
je viens de m'y amuser (juste pour voir et en bâclant) :
On y parvient avec un code niveau enfantin :
avec dateserial, une simple boucle for to next et un bête Select Case, hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
21 juillet 2013
0
Merci
Bonjour,

comme sur l'autre forum, pas assez de précision ...
Les réponses ne te conviennent pas ?

Ici, forum de programmeurs, tu dois d'abord montrer ton code,
un minimum d'investissement est requis, pas de commande ni de livraison clef en main ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Commenter la réponse de MarcPL
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Tres drôle le monsieur le code je ne l'ai pas c'est vrai enfin pas pour plusieurs possibilité
sur l'autre j'ai mis 2 exemples mais pas plus de réponse enfin


pour être clair sur une feuille c'est limpide séparément et il n'y a pas de formule pour ça c'est du = + ou - .

Ma question est donc simple c' est possible ou pas?
Commenter la réponse de alinoe70
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Bonjour,

tu n'expliques pas ce que tu dois faire avec ces calculs de dates, ou j'ai mal lu/compris...
Difficile d'aider dans ce cas.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
et si tu faisais l' "énorme" (?) effort d'exposer plus clairement les tenants et aboutissants de ton problème ?
Ce serait sans doute mieux, hein ...
Prends ton temps ... mais fais-le sans la moindre ambiguïté et sans que l'on ait la moindre question à te poser ... A plus.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Ok le but et de calculer un nombre de jour pour une, deux ou trois périodeset dans certain cas sur deux années. Ce calcule et fait pour rémunérer prorata temporis et par année une personne.

cas 1 Date de départ date de fin = Nb de jour.

cas 2 date de départ (2012) date de fin (2012) + date de départ (2012), date de fin (2013) = nb de jour Total et Nb de jour par année.

Et ceci jusqu'a trois périodes consecutives

Pour le cas 1 ok pas de problème mais depuis le cas 2 et surtout sur 2 ans ca bug avec un Nb de jour de - 4123 (N° de série) d'excel ou un NB de jour bien supérieur
Commenter la réponse de alinoe70
0
Merci
le code je ne l'ai pas c'est vrai


LE RÈGLEMENT RÈGLEMENT RÈGLEMENT RÈGLEMENT RÈGLEMENT RÈGLEMENT RÈGLEMENT
dit que tu dois fournir ton code.
Commenter la réponse de Utilisateur anonyme
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Je vois que c est un dialogue se sourds je demande si c est possible de le faire oui ou non pas de me l écrire car si c est seulement possible sur une feuille par formule interposée je ne me creuse plus la tête
Commenter la réponse de alinoe70
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Merci je pioche mais au moins pas pour rien je sais en formule comme en vba tous n est pas possible mais en cherchant bien ... Mon but était de savoir si une personne avais déjà été confronté à ce problème
Commenter la réponse de alinoe70
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Hello,

merci pour l'info.

j'ai commencé par le début et le voici

Function Nbdate(D1, D2)
Dim Prem, Der, i
If D1 = D2 Then
Prem = D1
If TYPEJOUR(Prem) 0 Then Nbdate 1
Exit Function
End If
Select Case D1 < D2
Case True: Prem D1: Der D2
Case False: Prem D2: Der D1
End Select
For i = Prem To Der
Nbdate Nbdate + (TYPEJOUR(i) 0) * -1
Next
End Function

Private Function TYPEJOUR(D)
Dim A, T
Dim LP, LD
Dim Toto

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD 1 Then TYPEJOUR 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) + 6 - ((A + A \ 4 + T + (T > 48) + 1) Mod 7)
Select Case D
End Select
End Function

Bon ben la il ne me reste plus que la suite
Commenter la réponse de alinoe70
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
regarde ce que fait ceci :
Private Sub CommandButton1_Click()
  voyons Range("A1").Value, Range("B1").Value
End Sub
Function voyons(depart As Date, arrivee As Date) As Variant
 Dim toto(), comb As Integer, i As Integer, deb As Date, fin As Date
  comb = Year(arrivee) - Year(depart)
  ReDim toto(comb, 1)
  For i = 0 To comb
    Select Case i
      Case Year(arrivee) - Year(depart)
        deb = DateSerial(Year(arrivee), 1, 1)
        fin = arrivee
      Case 0
        deb = depart
        fin = DateSerial(Year(depart), 12, 31)
      Case Else
        deb = DateSerial(Year(depart) + i, 1, 1)
        fin = DateSerial(Year(depart) + i, 12, 31)
    End Select
    toto(i, 0) = Year(depart) + i
    toto(i, 1) = fin + 1 - deb
  Next
  Range("C1:F2") = Application.Transpose(toto)
End Function

Avec, sur une feuille de calcul :
- un bouton de commande CommandButton1
- les cellules des colonnes A et B en format Date
- une date de départ en A1 et une de fin en A2
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
lundi 14 juillet 2008
Dernière intervention
16 juillet 2013
0
Merci
Merci j ai pas eu le temps d essayer mais merci
Commenter la réponse de alinoe70

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.