Boucle simple qui ne fonctionne pas
vincent024
Messages postés
7
Statut
Membre
-
vincent024 Messages postés 7 Statut Membre -
vincent024 Messages postés 7 Statut Membre -
Bonjour,
Je commence la programmation de macro sur Excel et je ne trouve pas comment faire ma tâche qui semble très simple.
J'aimerais mesurer l'intervalle de temps entre le moment où la valeur à la colonne P, à ligne i, passe de 1 à 0.
Le temps se trouve à la colonne B.
J'ai un problème avec la saisie des données ainsi qu'avec mes conditions "if".
Voici le code:
Merci de votre aide.
Je commence la programmation de macro sur Excel et je ne trouve pas comment faire ma tâche qui semble très simple.
J'aimerais mesurer l'intervalle de temps entre le moment où la valeur à la colonne P, à ligne i, passe de 1 à 0.
Le temps se trouve à la colonne B.
J'ai un problème avec la saisie des données ainsi qu'avec mes conditions "if".
Voici le code:
Public Sub Temps()
Dim i As Long
Dim time_start As Date, time_end As Date
time_start = 0 '12:00:00 AM
time_end = 0 '12:00:00 AM
Range("P6").Select 'First line of data
i = Range("P6").Row 'Firt line
Do Until IsEmpty(ActiveCell) And time_end = 0 And time_start = 0
If Range("P" & i).Value = 1 Then
time_start = Range("B" & i).Value
End If
If Range("P" & i).Value = 0 and Not(time_start =0)Then
time_end = Range("B" & i).Value
End If
i = i + 1
Loop
Range("U6").Value = time_end - time_start
End Sub
Merci de votre aide.
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Boucle simple qui ne fonctionne pas
- 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
- Simple comic - Télécharger - Vie quotidienne
2 réponses
Bonjour,
Que donnerait quelque chose de ce genre :
Que donnerait quelque chose de ce genre :
Sub getDelai()
Dim valData As Integer
Dim valTime As Date
Dim maFeuille As Worksheet
Set maFeuille = ActiveSheet
Dim colTime As Integer
colTime = 2 'B
Dim colData As Integer
colData = 16 'P
Dim Derniere_Ligne As Long
Dim time_start As Date
Dim time_end As Date
Derniere_Ligne = maFeuille.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
'Boucle de la ligne 6 à -> Derniere_Ligne
For i = 6 To Derniere_Ligne
valData = maFeuille.Cells(i, colData).Value
valTime = maFeuille.Cells(i, colTime).Value
If (Not IsEmpty(valData)) Then
If ((valData = 1 And time_start = "00:00:00")) Then time_start = (valTime)
If (valData = 0 And Not time_start = "00:00:00" And time_end = "00:00:00") Then
time_end = (valTime)
'Debug.Print ("time_start :" & time_start & " - time_end:" & time_end)
maFeuille.Range("U6").Value = timeDifinHMS(time_start, time_end)
Exit For
End If
End If
Next
End Sub
Function timeDifinHMS(dtmSart, dtmEnd)
Dim intSeconds As Integer
Dim intHours As Integer
Dim intMinutes As Integer
Dim result As Date
intSeconds = DateDiff("s", dtmSart, dtmEnd)
intHours = intSeconds \ 3600
intMinutes = intSeconds \ 60 Mod 60
intSeconds = intSeconds Mod 60
result = CDate(intHours & ":" & intMinutes & ":" & intSeconds)
timeDifinHMS = result
End Function