XL 2010 CREATION DE ROTATION

Claude5

XLDnaute Occasionnel
Bonjour à vous,

Je dois reconstruire les rotations de ces mouvements.

Je m'explique: dans mon fichier les titres des colonnes commencant par A sont les arrivées et par D les départs.

Comment construire la rotation A et D comme dans mes 3 exemples (RESULTAT SOUHAITE)

Je m'appuie sur la REGISTRATION et la cohérence date heure

Merci de votre précieuse aide/Claude
 

Pièces jointes

  • RECHERCHE DEMI TOUR.xlsx
    13.9 KB · Affichages: 70

Paf

XLDnaute Barbatruc
re,

effectivement c'est la copie dans la feuille résultat qui 'perturbe' ces dates, certaines sont au format texte d'autre au format US.

remplacer la partie de code traitement des dates par:

VB:
'traitement des dates
For i = LBound(T1, 1) To UBound(T1, 1)
    T1(i, 10) = CDbl(T1(i, 10))
    T1(i, 4) = CDbl(T1(i, 4))
Next
For i = LBound(T2, 1) To UBound(T2, 1)
    T2(i, 10) = CDbl(T2(i, 10))
    T2(i, 4) = CDbl(T2(i, 4))
Next
'*

et conserver Worksheets("Résultat").Range("D:D,O:O,J:J,U:U").NumberFormat = "m/d/yyyy h:mm" en fin de macro

A+
 

Claude5

XLDnaute Occasionnel
Bonjour et merci

j'ai inclus ce nouveau code mais en actionnant la requête via F8, celle ci tourne en rond à ce stade

T2(i, 10) = CDbl(T2(i, 10))
T2(i, 4) = CDbl(T2(i, 4))

Salutations/Claude


Sub MacroROTATION()
'
' MacroROTATION Macro
'

'
Sheets.Add After:=Sheets(Sheets.Count)
ActiveCell.FormulaR1C1 = "Résultat²"
Range("A1").Select
Selection.ClearContents
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "Résultat"
Range("C38").Select
End Sub
Sub Rotation()
Dim DerL1 As Long, DerL2 As Long, T1, T2, TT(), i As Long, j As Long, k As Long, x As Long

With Worksheets("RECHERCHE DEMI TOUR")
DerL1 = .Range("A" & Rows.Count).End(xlUp).Row
DerL2 = .Range("M" & Rows.Count).End(xlUp).Row
T1 = .Range("A2:K" & DerL1)
T2 = .Range("M2:W" & DerL2)
End With
'traitement des dates
For i = LBound(T1, 1) To UBound(T1, 1)
T1(i, 10) = CDbl(T1(i, 10))
T1(i, 4) = CDbl(T1(i, 4))
Next
For i = LBound(T2, 1) To UBound(T2, 1)
T2(i, 10) = CDbl(T2(i, 10))
T2(i, 4) = CDbl(T2(i, 4))

Next

'For i = LBound(T1, 1) To UBound(T1, 1)
' For j = LBound(T2, 1) To UBound(T2, 1)
' If T1(i, 6) = T2(j, 6) Then
' If T1(i, 10) < T2(j, 10) Then
' x = x + 1
' ReDim Preserve TT(1 To UBound(T1, 2) * 2, 1 To x)
' For k = 1 To UBound(T1, 2)
' TT(k, x) = T1(i, k)
' TT(k + UBound(T1, 2), x) = T2(j, k)
' Next



'Worksheets("Résultat").Range("A1").Resize(x, UBound(TT, 1)) = Application.Transpose(TT)
Worksheets("Résultat").Range("D:D,O:O,J:J,U:U").NumberFormat = "m/d/yyyy h:mm"
 

Paf

XLDnaute Barbatruc
bonjour,

j'ai inclus ce nouveau code mais en actionnant la requête via F8, celle ci tourne en rond à ce stade

T2(i, 10) = CDbl(T2(i, 10))
T2(i, 4) = CDbl(T2(i, 4))

Dans la mesure où ces deux lignes sont incluses dans une boucle sur toutes les lignes de la partie droite du tableau c'est normal que le code tourne en rond jusqu'à la dernière ligne; et à moins qu'il y ait quelques centaines de milliers de lignes le temps de traitement devrait être imperceptible ( sur cette boucle).
Ce qui parait curieux, c'est qu'il n'y a pas de soucis sur la boucle précédente qui fait exactement le même traitement sur le même nombre de lignes (environ...)

Avez vous laisser le traitement se dérouler jusqu'au bout ?

A+
 

Claude5

XLDnaute Occasionnel
Re, ca y est. J'ai réussi à faire tourner correctement la macro. Et ca donne un bon résultat. Mais j'ai encore un problème de formule qui ne me donne pas le bon écart en minutes entre 2 dates malgré, il me semble, la bonne formule. J'ai un fichier Excel où j'ai récupéré bon nombre de formules. Je vous joins le fichier, la ligne en question est en rouge. Merci encore. Claude
 

Pièces jointes

  • RECHERCHE DEMI TOUR V 13DEC16.xlsm
    301.3 KB · Affichages: 40

Paf

XLDnaute Barbatruc
Re,

pour la ligne 582, vous signalez une erreur colonne AA ( et non AT) où le résultat affiché devrait être 1 puisque la valeur en Y (3:57) est inférieure à 4:00, alors qu'il affiche 2 (donc Y > 4:00)

en regardant les dates qui donnent l'écart de 3:57, 19/11/2016 17:19 et 16/11/2016 13:2, ce que la formule n'affiche pas c'est qu'il y a 3 jours de décalage entre les deux dates ! donc le résultat pris en compte pour comparer avec 4:00, c'est (24 * 3) +3:57 donc 75:57. qui est bien > 4:00.

Passer les cellules des colonnes X et Y au format personnalisé : [h]:mm le nombre d'heures total sera affiché.

A+
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 836
Messages
2 092 652
Membres
105 479
dernier inscrit
chaussadas.renaud