Vba sous excel question de conversion d'heure

Fermé
baguidi - 9 août 2007 à 17:37
 baguidi - 27 août 2007 à 17:42
Je suis ravi de me faire membre de votre site CommentCaMarche.net. Voici ma question

j'ai réalisé un Programme en VBA sous excel qui répond à la question suivante: calculer le Nombre Total d'Heures de Cours Effectuées sur l'Ensemble de l'Université ?
Lorsque j'ai rélisé mon code source l'affichage dans la textbox est différente de ce que la cellue g2 m'affiche alors qu'en g2 j'ai 84:45 dans la textbox j'ai 12:45 c'est vrai que j'ai changé le format de la cellule en [h]:mm. voici mon code.



Private Sub CmdTrait_Click()

'déclaration des variables mémoires

Dim vm
Dim mytime

'sélection de la feuille horaire

Sheets("HORAIRE").Select

'recherche de ligne vide

x = 1
While Cells(x, 1) <> ""
x = x + 1
Wend

'une variable mémoire récupère la ligne vide puis la soustrait de 1
LigneNonVide = x - 1

' boucle For...Next
For i = 2 To LigneNonVide

' soustraction de la colonne b et a
Range("c" & i) = Range("b" & i) - Range("a" & i)

Next i

' somme da la colonne c puis valeur récupérée en g2
Range("g2") = "=Sum(c2:" & Range("c2").End(xlDown).Address & ")"

mytime = Range("g2")
'voici la ou se trouve le problème la textebox n'arrive pas à récuperer la somme des heures
' mais plutôt il le convertie ce que je ne veut pas.Sur la cellule g2 il trouve 84:45
' puisque j'ai amené le format de la cellule à [h]:mm
' mais dans la textbox il écrit 12:45 alors que moi je veux qu'il écrive 84:45.
TextBox1.Value = Format(mytime, "h: mm")

vm = TextBox1.Value

MsgBox "Le Nombre Total d'Heures de Cours Effectuées sur l'Ensemble de l'Université est:" & " " & vm & ""


' Msg = Msg & Format(Range("g2"), "hh:mm")

' MsgBox Msg

'Unload Me

End Sub
A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 717
15 août 2007 à 22:53
bonjour,

Effectivement, je t'ai répondu sans tester et en fait, le format [hh], n'est pas tout à fait un format
car les crochets cumulent en heures les jours de la cellule :
dans ton cas 3 jours X 24 +12 = 84 heures.
(en changeant de format tu peux afficher : 03/01/1900 12:12:00)

Ce stratagème fonctionne donc sur la feuille mais pas dans la textbox !

pour afficher ton résultat, tu as tout de même de la chance car tu as effectué ton calcul sur la feuille
et donc il te suffit d'afficher directement le résultat de la feuille
TextBox1.Value = Range("g2").Text

à condition bien sûr que ta cellule "g2" soit au format "[hh]: mm"

que tu peux assurer par le code :
Range("g2").NumberFormat = "[hh]:mm"

à mettre avant l'affichage bien sûr !

Désolé mais je me suis laissé piégé en répondant vite...
2
Salut mon brave
je ne sais comment dire mais je crois que je suis un peu hors circuit c'est peut etre à cause de cela que je n'ai pas eu ton idée. c'est génial cela a marché à merveille. Je voudrais te le dire de vive voix et à meme temps demander à ce qu'on garde le contact. Tu es super il faut le reconnaitre. J'adore la programmation et je veux des partenaires.

Merci encore
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 717
20 août 2007 à 23:33
bonjour

Merci pour ton message et c'est bien que cela t'ai rendu service.

Tu sais, on est toujours un peu hors circuit quand on ne trouve pas mais cela arrive à tous.
Il faut souvent laisser mûrir les idées pour arriver au résultat,
puis se faire aider et souvent en exposant le problème on a fait le plus dur.

Pour rester en contact, pas de problème car je suis souvent sur le forum.
2
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 717
10 août 2007 à 09:06
bonjour

Pour afficher au-delà de 24 heures, sur la feuille comme dans le textbox,
tu doit mettre un format : [hh]:mm sinon tu t'arrête à 24h maxi.
1
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 75
10 août 2007 à 10:59
84 mod 24 = 12

CQFD :)
1
baguidi Messages postés 7 Date d'inscription jeudi 9 août 2007 Statut Membre Dernière intervention 16 novembre 2012
10 août 2007 à 17:04
ok je suis d'accord pour ta proposition mais comment faire pour que la textbox prenne le format [h]:mm alors que cela ne me donne pas la main pour le configurer comme cela .
je sais que sur la feuille avec le menu contextuel dans une cellule, j'ai format de cellule. Maintenent pour la textbox je fais comment ?

merci quand meme de me repondre . Je voudrais aussi savoir pour ca.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 717
10 août 2007 à 19:11
bonjour

tu as bien mis : TextBox1.Value = Format(mytime, "h: mm")

Donc si tu mets :
TextBox1.Value = Format(mytime, "[hh]: mm")


cela devrait fonctionner.
Ensuite si tu modifies la texbox, il suffit de le refaire dans l'événement change.

Sinon, on regarderas de plus près : tu nous dis...
1
Bonjour chèr ami Gbinforme

je viens de tenter ton code mais chose bizarre il me met :

:01 comme réponse cé dire qu'il convertie les 84:45 en :01

je dis bien 84:45 est la réponse dans la cellule puisqu'elle répond à [h]:mm mais avec ce tu m'a donné j'ai maintenant :01 comme réponse ce qui veut dire qu'on doit encore chercher.

merci encore pour l'aide et on garde le contact.
0
merci mon cher on garde alors le contact sur le forum.
0