Bonjour,

Je rencontre un problème mon fichier avec 2 tableaux.
Le premier tableau "DEMANDE" Contient des tâches à réaliser
Le second tableau "REALISE" contient les tâches réalisées

Dans le principe: L
L'utilisateur ouvre un Userform avec un Listbox1 qui affiche la liste des demandes en cours
Il saisi une date dans TextBox1
Il sélectionne toutes les lignes qu'il veut dans la listbox
et Lors du click sur le Bouton "Valider"
On copie les champs du tableau "DEMANDE" dans le tableau "REALISE"
On supprime le Listrow du tableau DEMANDE
On supprime les éléments sélectionnés de la listbox
Mon problème (sur variable MyRowD apprament) est que dès lors que les éléments sélectionnés ne se suivent pas, ça ne copie pas les bonnes données.

Voilà à quoi celà ressemble
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Option Explicit
Private MyRowR As ListRow
Private MyRowD As ListRow
 
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 5
ListBox1.ColumnWidths = "270;0;0;0;400"
ListBox1.List = Range("DEMANDE[DESIGNATION]:DEMANDE[DEMANDES]").Value
End Sub
Private Sub CmdValid_Click()
Dim I As Long
If TextBox1 = "" Then
  MsgBox "Il faut obligatoirement saisir la date"
  Exit Sub
End If
  'Ici on fait le décompte du listcount à l'envers avec "Step -1"
  'Parce que le dernier élément est supprimé en premier comme ça
  'VBA a toujours les premiers éléments avec des Listcount connus (Qui n'ont pas été effacé)
  For I = ListBox1.ListCount - 1 To 0 Step -1
    If ListBox1.Selected(I) Then
      Set MyRowR = Range("REALISE").ListObject.ListRows.Add
      Set MyRowD = Range("DEMANDE").ListObject.ListRows(ListBox1.ListIndex + 1)
      MyRowR.Range(1).Value = MyRowD.Range(1).Value
      MyRowR.Range(2).Value = MyRowD.Range(5).Value
      MyRowR.Range(3).Value = CDate(TextBox1.Value)
      MyRowD.Delete
      ListBox1.RemoveItem (I)
    End If
  Next
  TextBox1.Value = ""
End Sub
Si quelqu'un a une idée je suis preneur.

Merci