Addition Heures Listbox vba
Résolu
lanetmel
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
J'espère que quelqu'un aura une idée car je suis bloquée! merci à l'avance de prendre le temps de me lire! Prendre note aussi que je suis débutante :)
Voilà : J'ai un fichier Excel dans lequel toute ma production est détaillée.
à partir d'un usf, je visualise l'information voulue par date
Pour ouvrir le Usf : Feuille 2007 : Case B2 (Bouton1)
Il faut ensuite ajouter des dates : 2007-01-10 au 2007-01-11
ensuite : appuyer sur le bouton afficher
La production de la journée apparait alors dans la listbox.
Cela fonctionne.
Seulement dans la tbox pause, (qui est au bas de la colonne pause) Je voudrais calculer
le total de temps de pause afficher dans la colonne. En l'occurence dans ce cas ci ça devrait être 1:00. Hors ça indique 00:00... Quelqu'un a -til une idée de ce que je fais de mal?
Voici mon code et j'ai aussi joint mon fichier :
Private Sub Userform_initialize()
Dim NbLigneAtraiter As Long
End Sub
Private Sub CommandButton1_Click() ' bouton afficher
Dim totalpause As Date
Dim TotalTemps As Date
With Sheets("2007")
NbLigneAtraiter = .Range("A" & Rows.Count).End(xlUp).Row
ListBox1.Clear
Tbox_pause = ""
Tbox_durée = ""
For i = 13 To NbLigneAtraiter
If .Range("L" & i) >= DTPicker_Du.Value And .Range("L" & i) <= DTPicker_Au.Value Then
ListBox1.AddItem .Range("L" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Format(.Range("M" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(.Range("N" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(.Range("O" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(.Range("P" & i), "hh:mm")
totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
TotalTemps = Val(Tbox_durée) + Val(.Range("P" & i))
Tbox_pause = Format(totalpause, "hh:mm")
Tbox_durée = Format(TotalTemps, "hh:mm")
End If
Next i
End With
End Sub
encore merci
Mélanie
https://www.cjoint.com/?3GnoiviaI9p
J'espère que quelqu'un aura une idée car je suis bloquée! merci à l'avance de prendre le temps de me lire! Prendre note aussi que je suis débutante :)
Voilà : J'ai un fichier Excel dans lequel toute ma production est détaillée.
à partir d'un usf, je visualise l'information voulue par date
Pour ouvrir le Usf : Feuille 2007 : Case B2 (Bouton1)
Il faut ensuite ajouter des dates : 2007-01-10 au 2007-01-11
ensuite : appuyer sur le bouton afficher
La production de la journée apparait alors dans la listbox.
Cela fonctionne.
Seulement dans la tbox pause, (qui est au bas de la colonne pause) Je voudrais calculer
le total de temps de pause afficher dans la colonne. En l'occurence dans ce cas ci ça devrait être 1:00. Hors ça indique 00:00... Quelqu'un a -til une idée de ce que je fais de mal?
Voici mon code et j'ai aussi joint mon fichier :
Private Sub Userform_initialize()
Dim NbLigneAtraiter As Long
End Sub
Private Sub CommandButton1_Click() ' bouton afficher
Dim totalpause As Date
Dim TotalTemps As Date
With Sheets("2007")
NbLigneAtraiter = .Range("A" & Rows.Count).End(xlUp).Row
ListBox1.Clear
Tbox_pause = ""
Tbox_durée = ""
For i = 13 To NbLigneAtraiter
If .Range("L" & i) >= DTPicker_Du.Value And .Range("L" & i) <= DTPicker_Au.Value Then
ListBox1.AddItem .Range("L" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Format(.Range("M" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(.Range("N" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(.Range("O" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(.Range("P" & i), "hh:mm")
totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
TotalTemps = Val(Tbox_durée) + Val(.Range("P" & i))
Tbox_pause = Format(totalpause, "hh:mm")
Tbox_durée = Format(TotalTemps, "hh:mm")
End If
Next i
End With
End Sub
encore merci
Mélanie
https://www.cjoint.com/?3GnoiviaI9p
A voir également:
- Addition Heures Listbox vba
- Addition excel - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Tableau calcul heures supplémentaires - Forum Excel
5 réponses
De rien.
Cette proposition t'as été faite ici, mais à cause du site et du système de commentaires qui s'affichent ou pas... Ben c'est passé inaperçu!
Nous avons de par le fait faillit ne pas résoudre ton souci alors que...
C'est décidé, je ne réponds plus par commentaire, mais par "répondre"....
A bon entendeur.
En tout cas, ravi pour toi Mélanie, et à la prochaine.
Comme d'hab, n'hésite pas...
Cette proposition t'as été faite ici, mais à cause du site et du système de commentaires qui s'affichent ou pas... Ben c'est passé inaperçu!
Nous avons de par le fait faillit ne pas résoudre ton souci alors que...
C'est décidé, je ne réponds plus par commentaire, mais par "répondre"....
A bon entendeur.
En tout cas, ravi pour toi Mélanie, et à la prochaine.
Comme d'hab, n'hésite pas...
Bonjour,
Je continue d'essayer de trouver ma solution mais je n'y arrive toujours pas.
J'ai fais le changement suivant à mon code :
enlever
Tbox_pause = Format(totalpause, "hh:mm")
totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
Remplacé par
Tbox_pause = Val(Tbox_pause) + Val(.Range("O" & i))
Si je prends le même exemple que dans mon premier message :
Pour ouvrir le Usf : Feuille 2007 : Case B2 (Bouton1)
Il faut ensuite ajouter des dates : 2007-01-10 au 2007-01-11
ensuite : appuyer sur le bouton afficher
au lieu d'afficher 00:00 comme avant, j'ai maintenant 4
00:15 : 1.0416667
00:30 : 2.083333
00:15 : 1.0416667
_____ : ________
1:00 4.1667
Alors je me dis que mon 4 doit être 4.1667 arrondi..
Quelqu'un a une idée comment mettre mon 4 en 1:00?
merci à l'avance
Mélanie
Je continue d'essayer de trouver ma solution mais je n'y arrive toujours pas.
J'ai fais le changement suivant à mon code :
enlever
Tbox_pause = Format(totalpause, "hh:mm")
totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
Remplacé par
Tbox_pause = Val(Tbox_pause) + Val(.Range("O" & i))
Si je prends le même exemple que dans mon premier message :
Pour ouvrir le Usf : Feuille 2007 : Case B2 (Bouton1)
Il faut ensuite ajouter des dates : 2007-01-10 au 2007-01-11
ensuite : appuyer sur le bouton afficher
au lieu d'afficher 00:00 comme avant, j'ai maintenant 4
00:15 : 1.0416667
00:30 : 2.083333
00:15 : 1.0416667
_____ : ________
1:00 4.1667
Alors je me dis que mon 4 doit être 4.1667 arrondi..
Quelqu'un a une idée comment mettre mon 4 en 1:00?
merci à l'avance
Mélanie
Bonjour Eric,
merci pour ta réponse, j'ai essayé mais
Si je laisse ma variable en date ça me donne 03/01/1900 si je ne défini pas le type ça me donne encore 4...
merci à l'avance
Mélanie
merci pour ta réponse, j'ai essayé mais
Si je laisse ma variable en date ça me donne 03/01/1900 si je ne défini pas le type ça me donne encore 4...
merci à l'avance
Mélanie
Bonjour Éric,
J'ai changé totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
pour totalpause = totalpause + Val(Range("O" & i))
qui a effectivement plus d'allure..
mais ça ne change rien au résultat.. Je sais que ton changement ne devait pas changer mon format.. je cherche toujours la réponse..
merci encore
Mélanie
J'ai changé totalpause = Val(Tbox_pause) + Val(.Range("O" & i))
pour totalpause = totalpause + Val(Range("O" & i))
qui a effectivement plus d'allure..
mais ça ne change rien au résultat.. Je sais que ton changement ne devait pas changer mon format.. je cherche toujours la réponse..
merci encore
Mélanie
Bonjour Eric,
Chez-moi ça ne fonctionne pas..
Si je mets ma variable comme suit : Dim totalpause As Date
ensuite ce code : With Sheets("2007")
NbLigneAtraiter = .Range("A" & Rows.Count).End(xlUp).Row
ListBox1.Clear
Tbox_pause = ""
Tbox_durée = ""
For i = 13 To NbLigneAtraiter
If .Range("L" & i) >= DTPicker_Du.Value And .Range("L" & i) <= DTPicker_Au.Value Then
ListBox1.AddItem .Range("L" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Format(.Range("M" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(.Range("N" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(.Range("O" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(.Range("P" & i), "hh:mm")
totalpause = totalpause + Val(Range("O" & i))
Tbox_pause = Format (totalpause, "hh:mm")
End If
Next i
End With
End Sub
J'obtiens : 00:00
Si j'enlève le format de ma tbox_pause : Tbox_pause = totalpause
J'obtiens : 1900-01-03
Si je décalre ma variable ainsi : Dim totalpause et que j'enlève mon format de ma textbox : Tbox_pause = totalpause
J'obtiens : 4
As-tu une idée de ce qui peut faire que ça fonctionne chez-toi et pas chez-moi?
encore merci
Mélanie
Chez-moi ça ne fonctionne pas..
Si je mets ma variable comme suit : Dim totalpause As Date
ensuite ce code : With Sheets("2007")
NbLigneAtraiter = .Range("A" & Rows.Count).End(xlUp).Row
ListBox1.Clear
Tbox_pause = ""
Tbox_durée = ""
For i = 13 To NbLigneAtraiter
If .Range("L" & i) >= DTPicker_Du.Value And .Range("L" & i) <= DTPicker_Au.Value Then
ListBox1.AddItem .Range("L" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Format(.Range("M" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(.Range("N" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(.Range("O" & i), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(.Range("P" & i), "hh:mm")
totalpause = totalpause + Val(Range("O" & i))
Tbox_pause = Format (totalpause, "hh:mm")
End If
Next i
End With
End Sub
J'obtiens : 00:00
Si j'enlève le format de ma tbox_pause : Tbox_pause = totalpause
J'obtiens : 1900-01-03
Si je décalre ma variable ainsi : Dim totalpause et que j'enlève mon format de ma textbox : Tbox_pause = totalpause
J'obtiens : 4
As-tu une idée de ce qui peut faire que ça fonctionne chez-toi et pas chez-moi?
encore merci
Mélanie
pourquoi tu enlèves le format "hh:mm" puisque c'est c'est celui que tu veux ????
Si je décalre ma variable ainsi : Dim totalpause et que j'enlève mon format de ma textbox : Tbox_pause = totalpause
Ca ne prouve qu'une chose : c'est donc ce qu'il ne faut pas faire.
Tu avances au hasard et tu dis ça ne marche pas... Ben oui...
Moi j'ai fait du 3/1/2007 au 4/1/2007
Poste le fichier qui est mauvais chez toi, il y a sûrement autre chose.
Ou reprend celui que tu as posté et change juste ce que je t'ai indiqué.
eric
Si je décalre ma variable ainsi : Dim totalpause et que j'enlève mon format de ma textbox : Tbox_pause = totalpause
Ca ne prouve qu'une chose : c'est donc ce qu'il ne faut pas faire.
Tu avances au hasard et tu dis ça ne marche pas... Ben oui...
Moi j'ai fait du 3/1/2007 au 4/1/2007
Poste le fichier qui est mauvais chez toi, il y a sûrement autre chose.
Ou reprend celui que tu as posté et change juste ce que je t'ai indiqué.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Encore par ici Mélanie?
Au vu du nombre de lignes à traiter (14 000), je suggère de passer par une variable tableau beaucoup plus rapide...
Encore par ici Mélanie?
Au vu du nombre de lignes à traiter (14 000), je suggère de passer par une variable tableau beaucoup plus rapide...
Private Sub Userform_initialize()
Dim NbLigneAtraiter As Long
End Sub
Private Sub CommandButton1_Click() ' bouton afficher
Dim totalpause As Date
Dim cpt As Long, ch As String
Dim i As Long, Donnees()
Dim msg As String
With Sheets("2007")
NbLigneAtraiter = .Range("A" & Rows.Count).End(xlUp).Row
Donnees = Range("L3:P" & NbLigneAtraiter)
ListBox1.Clear
Tbox_pause = ""
Tbox_durée = ""
For i = LBound(Donnees, 1) To UBound(Donnees, 1)
If CDate(Donnees(i, 1)) >= DTPicker_Du.Value And CDate(Donnees(i, 1)) <= DTPicker_Au.Value Then
cpt = cpt + 1
ListBox1.AddItem CDate(Donnees(i, 1))
ListBox1.List(ListBox1.ListCount - 1, 1) = Format(Donnees(i, 2), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(Donnees(i, 3), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(Donnees(i, 4), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(Donnees(i, 5), "hh:mm")
totalpause = totalpause + CDate(Donnees(i, 4))
Tbox_pause = Format(totalpause, "hh:mm")
ch = totalpause & " = " & Format(totalpause, "hh:mm")
End If
Next i
End With
msg = "compteur date = " & cpt
msg = msg & vbCrLf & "Total pause : " & ch
MsgBox msg
End Sub