comptage durée

J

JJ

Guest
Bonjour,
J'ai besoin d'aide pour m'écrire une macro:

j'ai une feuille excel avec 8 colonnes et une centaine de lignes
la colonne 7 est la durée (forme 00:00:00) et la colonne 8 le prix.
Je voudrais faire un 'cadeau' d' 1 heure à ce client en comptant et cumulant la durée de chaques lignes jusqu'à 1 heure (ces lignes doivent alors avoir aussi la mise à 0 de la colonne 8 prix (gratuité))

Puis après une durée cumulée d'1 heure, le prix n'est pas modifié, il me faudrait au bas le total de cette durée restante non gratuite

Merci à ceux qui m'aideront car c'est pas simple
JJ
 
J

JJ

Guest
Merci pour votre réponse, en fait il faut travailler sur 2 colonnes (7 pour la durée d'une location par ex, et 8 pour le prix sur la même ligne), il faut que la macro 'balaye' chaque ligne en cumulant chaque durée à la précédente (ligne) et remet a zero le prix sur chaque ligne tant que la durée cumulée n'est pas arrivée à 1H
Ensuite il suffit d'indiquer la durée restante non gratuite
ex de ligne :(col 7 et 8) 1mn 0
2mn 0
57mn 0
ensuite on compte la durée sans remettre a zero le prix en face
(je veux faire une heure de durée gratuite)
Bonne soirée
JJ
 

Gérard DEZAMIS

XLDnaute Accro
Bonsoir JJ et DG62

Un petit essai pour voir ...

La piste est bonne ?

@+ GD [file name=JJ1.zip size=8218]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JJ1.zip[/file]
 

Pièces jointes

  • JJ1.zip
    8 KB · Affichages: 27
  • JJ1.zip
    8 KB · Affichages: 29
  • JJ1.zip
    8 KB · Affichages: 26
J

JJ

Guest
Bonsoir je joins un bout de fichier excel (onglet 2) pour montrer ce que la macro doit executer car c'est pas facile en l'écrivant

Le top serait (j'y pense en l'envoyant) que la partie supérieure à 1H (toute la ligne complète soit les 8 colonnes ) soit transférée et copiée dans l'onglet feuille suivante du classeur , ce qui me permettrait d'y faire d'autres tris!
merci
Bonne soirée
 
J

JJ

Guest
Bonsoir Hervé
Je vais tester la macro, mais comment va t elle 'balayer' la feuille de classeur excel? et executer ta boucle?
Il faut qu'elle balaye les colonnes 7 et 8 du debut a la fin de la feuille pour cumuler (en mémoire) la durée colonne 7 , mettre a zero la colonne 8 correspondante jusqu a ce que la durée cumulée atteigne 1H, puis ne plus remettre a zero le prix col 8 et afficher simplement en bas de la colonne 7 la durée > a 1H

merci
JJ
 
J

JJ

Guest
J'avais oublié de zipper mon fichier
JJ [file name=Fich.zip size=4776]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Fich.zip[/file]
 

Pièces jointes

  • Fich.zip
    4.7 KB · Affichages: 22

Gérard DEZAMIS

XLDnaute Accro
Bonsoir JJ

Avant d'aller plus loin.... on n'est pas d'accord sur 00:02:30

Ce n'est rien 2 minutes 1/2 mais quand même ... ;)

@+ GD [file name=JJ2.zip size=5661]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JJ2.zip[/file]
 

Pièces jointes

  • JJ2.zip
    5.5 KB · Affichages: 22
J

JJ

Guest
Bonjour Hervé
Comme je l'ai ecrit, j'ai testé ta macro: elle me convient parfaitement.
Toutefois, comme l'ont écrit les autres 'excelnautes' (que je remercie) elle ne tient pas compte d'un dépassement éventuel de l'heure (si la derniere durée est 2H comment faire ????)
merci et bon WE
 
J

JJ

Guest
Pour Hervé suite à sa macro,
je viens d'avoir une idée, il faudrait rajouter une ligne a ta macro pour faire la somme de la colonne 7 (durée) à partir de la ligne du cumul 1H et rajouter ce qui a été dépassé effectivement
ex: si le cumul des ligne 1 à 10 fait 1H (+10min) et que le cumul restant fait 2H , on rajoute les 10 minutes non comptées soit 2H10
Est ce possible?
merci
Bon WE
 

Hervé

XLDnaute Barbatruc
bonsoir tout le monde

Salut gérard :)

JJ, comme je n'ai pas compris ce que tu voulais faire du temps 'limite' au delà de 1 heures, ben je te préviens dans la macro via une msgbox.

Ainsi tu auras la syntaxe.

Donc, ce code supprime en 8ème colonne les montants dans le cadre d'un forfait d'une heure, et préviens si un reliquat est présent.

Sub Bouton1_QuandClic()
Dim c As Integer
Dim temps As Date
c = 1

Do While temps < '01:00:00'
temps = temps + Cells(c, 7)
If temps > '01:00:00' Then
&nbsp; &nbsp; Cells(c, 8) = ''
&nbsp; &nbsp; MsgBox 'Il reste : ' & CDate(TimeValue(temps) - TimeValue('01:00:00')) & ' à facturer.'
Else
&nbsp; &nbsp; Cells(c, 8) = ''
End If
c = c + 1
Loop

End Sub

salut
 
J

JJ

Guest
Bonjour,
Ta macro précédente suffisait, simplement comme l'heure ne 'tombait' pas juste et que je faisais le total de la durée apres la ligne ou s'arretait 1H , il faut que la macro ajoute simplement a cette durée le reliquat.
ex : si la macro remet a zero jusqu a la ligne 10 avec une durée de 1H5min et que la durée cumulée de la ligne 11 a 50 par ex est de 3H et bien il faut simplement rajouter les 5 min soit 3H5min
Est ce facile a rajouter sur la 1er macro qui tourne bien
merci
Bon WE
JJ
 

Hervé

XLDnaute Barbatruc
salut jj

En reprenant ton exemple :

dans les lignes de 1 à 50 tu as un total de 4h05mn. et tu veux 3h05mn soit le total - 1 heure + le reliquat du traitement de la macro.

Alors tu n'a pas besoin de macro il te suffit de faire la somme de tes temps et d'enlever 1 heure.

par formule, ca donne : =SOMME(G1:G15)-1/24

Et voilà tu auras bien la somme de tes temps - 1 heures.

ensuite il te suffit de faire tourner la macro 1 pour enlever les sommes.

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 895
Messages
2 093 384
Membres
105 715
dernier inscrit
Yoenai