Un probleme de excel

Nicolas -  
 nicolas -
bonjour a tous

je me trouve avec on probleme j'ais demander a un ami qui connais VB de m'aider a faire une feuille pour compter les carte de temps des employers de mon travaille, tou marcher bien saufe pour un probleme, j'ais 2 worksheet (oui mon microsoft office est en anglais) ma premiere sapelle emplyer, je rentre les heure des emplyer dans cette worksheet, l'autre sommaire, les donners s'enregistre dans cette worksheet qu'an je fait ctl+alt+C.

sur ma feuille emplyer tou ce calcule bien, mais dans les cells de la feuille sommaire les heures ne s'additione pas, apret arriver a 24h il retombe a 1h qu'an il faut qu'il continue a additioner.

EX:. si dans une semaine l'employer fait 30h bien l cell affiche 6h et non 30h

Le format de mes cells sont [h]:mm:ss

les code en VB, mon ami les a fait pour que je soi cappable de voir la logique et de faire mes modifications, Voici les codes.

Sub FillData()
'
' FillData Macro
' Copier les donnees dans la feuille Sommaire
'
' Keyboard Shortcut: Ctrl+Shift+C
'

' Variable Sommaire
Dim iColSommaireNom As Integer
Dim iColSommaireSem1 As Integer
Dim iColSommaireSem2 As Integer
Dim iColSommaireBonis As Integer
Dim iColSommaireFerie As Integer
Dim iColSommaireFormation As Integer
Dim iColSommaireVacance As Integer
Dim iColSommaireDateTerm As Integer
iColSommaireNom = 2
iColSommaireSem1 = 3
iColSommaireSem2 = 4
iColSommaireBonis = 5
iColSommaireFerie = 6
iColSommaireFormation = 7
iColSommaireVacance = 8
iColSommaireDateTerm = 9

' Variable Employe
Dim iColEmployeNom As Integer
Dim iColEmployeDim As Integer
Dim iColEmployeLun As Integer
Dim iColEmployeMar As Integer
Dim iColEmployeMer As Integer
Dim iColEmployeJeu As Integer
Dim iColEmployeVen As Integer
Dim iColEmployeSam As Integer
Dim iColEmployeBonis As Integer
Dim iColEmployeFerie As Integer
Dim iColEmployeFormation As Integer
Dim iColEmployeVacance As Integer
Dim iColEmployeDateTerm As Integer
Dim iRowEmployeNom As Integer
Dim iRowSemaine1 As Integer
Dim iRowSemaine2 As Integer

iColEmployeNom = 3
iColEmployeDim = 3
iColEmployeLun = 4
iColEmployeMar = 5
iColEmployeMer = 6
iColEmployeJeu = 7
iColEmployeVen = 8
iColEmployeSam = 9
iColEmployeBonis = 11
iColEmployeFerie = 13
iColEmployeFormation = 15
iColEmployeVacance = 17
iColEmployeDateTerm = 19
iRowEmployeNom = 2
iRowEmployeBonis = 6
iRowEmployeFerie = 6
iRowEmployeFormation = 6
iRowEmployeVacance = 6
iRowEmployeDateTerm = 6
iRowSemaine1 = 14
iRowSemaine2 = 25

Dim iRow As Integer
Dim iLigneEmploye As Integer
Dim sNomEmploye As String
Dim dTotSemaine1 As Date
Dim dTotSemaine2 As Date
Dim dTotBonis As Double
Dim dTotFormation As Double
Dim sFerie As String
Dim sVacance As String
Dim sDateTerm As String

iLigneEmploye = 0
dTotSemaine1 = 0
dTotSemaine2 = 0
dTotBonis = 0
dTotFormation = 0
sFerie = ""
sVacance = ""
sDateTerm = ""

sNomEmploye = Worksheets("Employe").Cells(iRowEmployeNom, iColEmployeNom)

' Detecter la ligne de l'employer
iRow = 3 ' 1re Ligne des nom dans sommaire
Do While iRow < 200
    If Worksheets("Sommaire").Cells(iRow, iColSommaireNom) = sNomEmploye Then
        iLigneEmploye = iRow
        Exit Do
    End If
    iRow = iRow + 1
Loop

If iLigneEmploye = 0 Then
    MsgBox ("Employe Invalide")
    End
End If

' Calculer les montants
dTotSemaine1 = Worksheets("Employe").Cells(iRowSemaine1, iColEmployeDim)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeLun)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeMar)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeMer)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeJeu)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeVen)
dTotSemaine1 = dTotSemaine1 + Worksheets("Employe").Cells(iRowSemaine1, iColEmployeSam)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireSem1) = FormatDateTime(dTotSemaine1, vbLongTime)

dTotSemaine2 = Worksheets("Employe").Cells(iRowSemaine2, iColEmployeDim)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeLun)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeMar)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeMer)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeJeu)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeVen)
dTotSemaine2 = dTotSemaine2 + Worksheets("Employe").Cells(iRowSemaine2, iColEmployeSam)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireSem2) = FormatDateTime(dTotSemaine2, vbLongTime)

dTotBonis = Worksheets("Employe").Cells(iRowEmployeBonis, iColEmployeBonis)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireBonis) = FormatDateTime(dTotBonis, vbLongTime)

dTotFormation = Worksheets("Employe").Cells(iRowEmployeFormation, iColEmployeFormation)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireFormation) = FormatDateTime(dTotFormation, vbLongTime)

sFerie = Worksheets("Employe").Cells(iRowEmployeFerie, iColEmployeFerie)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireFerie) = sFerie

sVacance = Worksheets("Employe").Cells(iRowEmployeVacance, iColEmployeVacance)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireVacance) = sVacance

sDateTerm = Worksheets("Employe").Cells(iRowEmployeDateTerm, iColEmployeDateTerm)
Worksheets("Sommaire").Cells(iLigneEmploye, iColSommaireDateTerm) = sDateTerm

End Sub
A voir également:

6 réponses

Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
Désolé, j'ai abandonné la lecture de ton message après avoir essayé de déchiffrer les 3 premières lignes ... et je ne suis certainement pas le seul !
1
Nicolas
 
et au lieu de posser des questions sur ce que tu ne comprend pas tu prefere passer un petit commantaire negatif, si tu veux pas aider pas de trouble.
0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
"pas de trouble" -> je n'ai pas bien compris cette expression, qui doit être traduite littéralement de l'anglais ...

Justement, c'est parce que je voudrais aider que je regrette de ne pas pouvoir lire ta prose !
Je n'ai d'ailleurs posé aucune question ... Je te préviens simplement que tu n'auras que peu de réponses, car tu décourages ceux qui essaient de te lire.
0
nicolas
 
desoler Raymond, c'est ma faute, pas de trouble veux dire pas de probleme.
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Bonjour

Comme le laisse entendre Raymond (Bonjour Raymond, ici il pleut, c'est comment dans les iles ?), c'est pas facile à lire (et à encore moins comprendre) !.

Perdre quelques secondes pour relire sa question de la rendre la plus claire possible fait gagner du temps à tous les contributeurs.

Ce qui pour toi semble une anomalie est en réalité tout à fait normal :
= FormatDateTime(Date[,NamedFormat]) ne renvoie que la partie fractionnaire du temps (les heures, minutes, secondes sont des fractions de jour)

Pour obtenir le temps complet il suffit d'écrire = Temps

Dans ton cas, par exemple au lieu de
= FormatDateTime(dTotSemaine1, vbLongTime)
écrire :
= dTotSemaine1

0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
As-tu essayé ma solution ?
0
nicolas
 
oui j'ais essaye mais sa n'as pas fontioner, mon ami a tout changer les codes de tout facon, mais je me trouve avec un autre probleme.

pour un total de 7:30 moi je veux que sa marque 7.5 et si le total est de 7:15 il faut que sa marque 7.25 tout en respectent un braquette de temps.
je mexplique
de 53 minute a 06 minute sa marque .00
de 07 minute a 21 minute sa marque .25
de 22 minute a 37 minute sa marque .50
de 38 minute a 52 minute sa marque .45
j'espaire avoir ete claire.
0

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

Posez votre question
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Pour moi, ça fonctionne, mais si le code n'est plus le même la question se pose-t-elle encore ?

Pour convertir des heures (07:30) en nombre décimal (7,5) il suffit de multiplier la valeur des heures par 24 (et d'afficher au format nombre).
Cordialement
Patrice
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Qu'est-ce qu'un braquette ?
0
nicolas
 
tout est superb, merci pour tout et de votre patience.
0