Date sous VBA Excel

Résolu
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013 - 11 juil. 2013 à 13:45
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre 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?

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2013 à 20:03
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.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2013 à 23:22
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.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 juil. 2013 à 08:32
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.
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
11 juil. 2013 à 14:28
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
11 juil. 2013 à 14:51
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?
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
11 juil. 2013 à 14:53
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2013 à 15:03
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.
0
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
11 juil. 2013 à 16:40
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
0
Utilisateur anonyme
11 juil. 2013 à 16:51
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.
0
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
11 juil. 2013 à 18:32
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
0
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
11 juil. 2013 à 23:11
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
0
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
15 juil. 2013 à 14:42
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 juil. 2013 à 15:32
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.
0
alinoe70 Messages postés 7 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 juillet 2013
16 juil. 2013 à 15:04
Merci j ai pas eu le temps d essayer mais merci
0
Rejoignez-nous