hmm, je pense que je vois.
Un truc que je voulais te demander depuis longtemps: tu les traîtes comment tes données ?
Si tu as deux notes qui se superposent -> Tu calcules (durée/nombre de notes) qui te donnera le nombre de répétitions (25 dans l'exemple) avec une durée de 1 par note. ça sera plus simple qu'avec une étape intermédiaire qui produit des données inutilisables.
i = 1
'Jusqu'à fin de la liste
While i <= listnotes.ListItems.Count
DoEvents
'Calule le saut à effectuer suivant la durée
saute = Int(1 / listnotes.ListItems.Item(i).SubItems(1))
If (saute <> 1) Then
'Saute et conserve
i = i + saute
'Efface
For j = 1 To saute
If (Val(listnotes.ListItems.Item(i - 1).SubItems(1)) = 1) Then
'i = i + 1
Exit For
End If
listnotes.ListItems.Remove (i - 1)
Next j
Else
i = i + 1
End If
Wend
J'ai déjà fait ça, durée/nombre de note mais je ne peux en aucun cas appliquer les répétitions de celle-ci. Je suis obligé de passer par une étape intermédiaire.
list4.ListItems.Clear
listnotes.ListItems.Clear
Dim i As Long
Dim i2 As Long
Dim DebutList As Long
Dim k As Long
Dim txt As String
Dim CounterTime As Long
Dim CounterNote As Integer
Dim MaxTime As Long
MaxTime = Val(list2.ListItems.Item(list2.ListItems.Count).SubItems(5))
DebutList = 1
CounterTime = 0
frm_dialog.ProgressBar.Max = MaxTime
frm_dialog.ProgressBar.Min = 0
frm_dialog.Show
i = 0
While i <= MaxTime
'Incrémentation des counter
For i2 = 1 To list4.ListItems.Count
list4.ListItems.Item(i2).SubItems(1) = Val(list4.ListItems.Item(i2).SubItems(1)) + 1 + (1 / list4.ListItems.Count)
'DoEvents
Next i2
'Suppresion des notes inutile
i2 = 1
While i2 <= list4.ListItems.Count
If (Val(list4.ListItems.Item(i2).SubItems(1)) > Int(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(2)))) Then
list4.ListItems.Remove (i2)
Else
i2 = i2 + 1
End If
Wend
'Ecriture du fichier
If (i <> 0) Then
'PAUSE
If (list4.ListItems.Count = 0) Then
listnotes.ListItems.Add = "pause"
listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
'DoEvents
'NOTE
Else
'-- Alternance
If (opt1.Value = True) Then
'TOUTE NOTES AVEC DUREE DE 1
For i2 = 1 To list4.ListItems.Count
'Ajoute note, ne pas oublier octave
listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(4)) + Val(txtoct.text))
listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = (1 / list4.ListItems.Count)
Next i2
'-- Note moyenne
ElseIf (opt2.Value = True) Then
i2 = Int(list4.ListItems.Count / 2)
If (i2 = 0) Then i2 = 1
listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(4)) + Val(txtoct.text))
listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
'-- Première note
ElseIf (opt3.Value = True) Then
listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(1))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(1))).SubItems(4)) + Val(txtoct.text))
listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
'Dernière note
Else
listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(list4.ListItems.Count))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(list4.ListItems.Count))).SubItems(4)) + Val(txtoct.text))
listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
End If
End If
End If
'Recherche note
CounterNote = 0
For i2 = DebutList To list2.ListItems.Count
'Parcours list2 et recherche i=Début Temps
If (i = Val(list2.ListItems.Item(i2).SubItems(1))) Then
If (list2.ListItems.Item(i2) = "N") Then
CounterNote = CounterNote + 1
list4.ListItems.Add = i2
list4.ListItems.Item(list4.ListItems.Count).SubItems(1) = 0
End If
Else
Exit For
End If
Next i2
DebutList = i2
frm_dialog.ProgressBar.Value = i
CounterTime = CounterTime + 1
DoEvents
'For k = 0 To 100000000: Next k
i = i + 1
Wend
frm_dialog.Hide
