Calcul différence d'heure entre 2 cellules non contigues
geo909
Messages postés9Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention30 mars 2010
-
30 mars 2010 à 20:20
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
30 mars 2010 à 20:48
Bonjour,
Je vais tenté de vous expliquer simplement mon problème (ayez de l'indulgeance lol)
J'ai du code VBA qui me permet de créer un fichier contenant une liste de défauts techniques apparus au cours de la journée(voir exemple dans fichier joint)...il contient pour chaque défaut apparu :
date - heure - type - ligne - intitulé - adresse - n°
Chaque item correspondant au titre d'une colonne
Ce qui fait (entre parenthèse le n° de ligne excel)
+ correspondant à l'apparition du défaut
- correspondant à la disparition du défaut
J'aimerais calculer le temps total du défaut air (B6-B1), cpl(B3-B2+B6-B5), aze(B7-B4) sachant que :
- les apparitions et disparitions des défauts ne se suivrent pas,
- un défauts peut se reproduire dans la journée
- un défaut peut etre apparu au jour J-1 et disparaitre au jour J (dans ce cas on ne peut pas mesurer le temps)
- un défaut peut apparaitre au jour J et disparaitre au jour J-1 (dans ce cas on ne peut pas mesurer le temps)
- le nombre de défaut varie d'un jour à l'autre (et donc le nombre de lignes excel)
Pourriez vous me donner une méthode pour calculer les différences d'heure entre chaque défaut (je vous promet que j'ai tout essayer sans y arriver avec les filtres auto et tout mais j'ai peut etre pas connaissance des outils necessaires)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mars 2010 à 20:42
Salut
Ca fait plaisir de voir des questions correctement posées, merci.
Hélas, je ne pense pas que tu puisses faire ça dans la feuille (dans les cellules).
Il va falloir que tu aies recours à la fonction du VB nommée DateDiff qui peut te fournir, par exemple, le nombre de minutes entre deux dates (Voir aussi DateAdd).
Pour la globalité de ton problème, ce ne sera pas simple :
Calcul de temps pour un seul Item : - Rechercher une disparition du bas vers le haut
- Rechercher parmi les précédents item la première apparition portant le même intitulé
- Une fois que tu auras ces deux items en ligne de mire, tu pourras calculer le nombre de minutes entre eux --> Stocker cette valeur dans une nouvelle colonne, à droite des autres, de la ligne disparition.
- Recommencer cette phase pour la disparition de l'item suivant (*) pour lequel on n'a pas encore calculé de durée
(*) comme on fait des recherches du bas vers le haut, 'suivant' veut en fait dire 'précédent'
Sommation : Une fois ce calcul fait pour chaque défaut, il faut recommencer la même approche :
Rechercher (du bas vers le haut) chaque disparition d'un défaut nommé (une recherche par intitulé de défaut) et additionner les minutes précédemment calculées.
Tu as du boulot !
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mars 2010 à 20:48
Pour info :
Syntaxe de base d'une énumération de cellules dans un Range :
Dim maCellule As Object
For Each maCellule In Range("A1:A33")
Debug.Print maCellule.Value ' Contenu de la cellule pointée
Debug.Print maCellule.Offset(0, 2).Value ' Contenu de la cellule 2 colonnes à droite
Next
+
Exit For
si tu as besoin de ressortir de ta boucle avant la fin