j'ai realiser ca avec excel (la formule en excel est la suivante:
mais je n'arrive pas a le realise avec VBA et sur les cellule de A2:A100, B2:B100 C2:C100Code:=si(d2>0;heure(d2)*60+minute(d2);0)
et merci d'avance
Version imprimable
j'ai realiser ca avec excel (la formule en excel est la suivante:
mais je n'arrive pas a le realise avec VBA et sur les cellule de A2:A100, B2:B100 C2:C100Code:=si(d2>0;heure(d2)*60+minute(d2);0)
et merci d'avance
bonjour
c'est sensiblement la meme chose
target est la cellule ou se trouve l'heure, a est la variable qui recoit de resultatCode:
1
2
3 a = 0 if target> 0 then a = Hour(Target) * 60 + Minute(Target)
si tu saisis par une Userform --> textbox1
joyeux noelCode:
1
2
3
4
5 dim tps as date, a as integer tps = cdate(textbox1.value) ' transforme en format horaire a = 0 if tps>0 then a = hour(tps) * 60 + minute(tps)
voir « IIf »
Bon...
une heure, c'est un nombre (comme une date), qui est une fraction de 1
1/24 = 1 heure
1/1440 = 1 minute
1/86400 = 1 seconde
La partie entière d'un nombre représente une date.
donc, déjà, ta fonction Si ne sert à rien, puisque si ta cellule est vide, l'heure sera à 0, les minutes aussi, et donc le résultat sera 0.
Tu pourrais donc te contenter de ta formule, sans le SI.
Ensuite, comment t'y prendre en VBA ?
J'ai un nombre dont j'ignore la taille
- poser le raisonnement en français
- transformer en code
Seule la partie décimale m'intéresse
Je dois donc d'abord retirer la partie entière.
Une fois la partie entière retirée, j'aurai un nombre de jours (une fraction, mais l'unité est en jours), qu'il me faut convertir en minutes, la partie entière de ce résultat représentera les minutes, la partie décimale les secondes.
Les secondes ne m'intéressant pas, je ne dois garder que la partie entière.
Ceci se traduit par cette formule où DT représente le nombre de Date/Heure à analyser
Maintenant qu'on a la formule, il faut faire une fonctionCode:int((DT-int(DT))*1440)
Dans un module, tu écris :
Si tu veux pouvoir utiliser cette formule dans n'importe quel classeur, tu devrais enregistrer ce classeur en tant que Macro Complémentaire et charger la macro complémentaire ainsi créée.Code:
1
2
3
4
5
6
7
8
9 Function MyMinutes (DT as Date) as Long '------------------------------------------------------------------------------- ' Fonction MyMinutes ' Cette fonction reçoit un argument DT de type date ' Elle renvoie un nombre entier long représentant le nombre de minutes de la date DT '------------------------------------------------------------------------------- MyMinutes=int((DT-int(DT))*1440) End Function
Son usage :
Dans une cellule, tu peux, par exemple, faire :
=MyMinutes(A1)
et recopier cette formule sur ta colonne A1:A100