Développer des dates

Pat5

XLDnaute Junior
Bonsoir le forum

Bonne année à tous et à toutes.

Petit problème de développement de dates.

Tout est dans le fichier car je n'arrive pas à l'expliquer par écrit (fatigué?).

Y a t'il moyen de le faire par VBA (je préfèrerais) ou par formules ?

Avec mes remerciements

Pat5 ;o) [file name=DevelopperDates.zip size=1837]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/DevelopperDates.zip[/file]
 

Pièces jointes

  • DevelopperDates.zip
    1.8 KB · Affichages: 19

myDearFriend!

XLDnaute Barbatruc
Bonsoir Pat5, folamoureuse,

Peut-être une solution dans le classeur joint...

J'ai utilisé la procédure suivante :
Sub Traitement()
Dim PlageResult As Range
Dim TabTemp As Variant, Result As Variant
Dim
L As Long, L2 As Long, D As Long
      With Sheets('Feuil1')
            'Charge les données dans un tableau variant temporaire
            L = .Range('A65536').End(xlUp).Row
            TabTemp = .Range(.Cells(6, 1), .Cells(L, 2)).Value
            'Détermine la longueur maxi du tableau résultats (Nbre de lignes)
            For L = 1 To UBound(TabTemp, 1)
                  D = D + DateDiff('d', TabTemp(L, 1), TabTemp(L, 2))
            Next L
            'Dimensionnement du tableau résultats
            ReDim Result(1 To L + D, 1 To 2)
            'Transfert des données dans le tableau résultats
            For L = 1 To UBound(TabTemp, 1)
                  L2 = L2 + 1
                  Result(L2, 1) = TabTemp(L, 1)
                  'si Debut/Fin chevauchent 2 dates
                  D = DateDiff('d', TabTemp(L, 1), TabTemp(L, 2))
                  If D > 0 Then
                        'On comble l'espace temps entre les 2 dates
                        Result(L2, 2) = DateValue(Result(L2, 1)) + TimeValue('23:59')
                        Do While Result(L2, 2) < TabTemp(L, 2)
                              Result(L2 + 1, 1) = DateValue(Result(L2, 1)) + 1 _
                                          + TimeValue('00:00')
                              L2 = L2 + 1
                              Result(L2, 2) = DateValue(Result(L2, 1)) + TimeValue('23:59')
                        Loop
                  End If
                  Result(L2, 2) = TabTemp(L, 2)
            Next L
            'Définition de la plage des résultats sur la feuille
            Set PlageResult = .Range(.Cells(6, 4), Cells(5 + UBound(Result, 1), 3 + _
                        UBound(Result, 2)))
      End With
      'MAJ de la feuille
      PlageResult.Value = Result
      PlageResult.NumberFormat = 'dd/mm/yyyy hh:mm'
End Sub
Cordialement, [file name=PourPat5.zip size=12301]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourPat5.zip[/file]
 

Pièces jointes

  • PourPat5.zip
    12 KB · Affichages: 30

Pat5

XLDnaute Junior
Bonsoir le forum

Je ne peux qu'arriver maintenant, mais
myDearFriend! , c'est excellent et superbe.

Je vais l'essayer un peu plus car j'aurais peut-être autre chose à demander mais pour le moment un grand merçi car je plantais dessus.

Le coup des tableaux est au top.

Pat5 ;o)
 

Pat5

XLDnaute Junior
Re Bonsoir le forum

Petit problème en plus. Voir fichier joint.

Comment mettre les groupes à jour en même temps que le développement des dates et comment récupérer rien que les dates ?

Encore merçi myDearFriend

Pat5 ;o)
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Pat5, le Forum,

Ci-joint une adaptation du code précédent pour intégrer cette notion de groupe.

Pour la 2ème question, voir le commentaire associé à la cellule G6.

Cordialement,

Message édité par: myDearFriend!, à: 19/01/2006 21:25
 

Pièces jointes

  • PourPat5_3.zip
    12.8 KB · Affichages: 30

Statistiques des forums

Discussions
314 655
Messages
2 111 601
Membres
111 216
dernier inscrit
mauphico