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