Bonjour à tous,

Je vais tenté d'être plus explicite.

Je dois détruire les lignes Excel qui sont sélectionnées dans un recordset clone. Imaginons que j'ai trois lignes sélectionnées via SQL dans un recordSet et que l'un des champs correspond à un incrément (dans mon exemple colonne 4 nommé Nr) donc unique.

Je boucle sur mon recordset et pour chaque incrément de mon enregistrement courant, je recherche dans la colonne 4 la valeur ayant celle du recordSet!Nr et je détruis la ligne dans l'onglet. J'ai donc le code suivant:
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
'--- With string variables
    sSql = "SELECT now(), Nr " & _
            " FROM mononglet AS A  " & _
            " WHERE True" & _
            " AND [Responsable] = 'Toto'"
 
 
    '--- Run the SQL SELECT
    oRSetActive.Open sSql, goADODBCnx, adOpenKeyset
    If oRSetActive.EOF Then oRSetActive.Close: GoTo Exit_
    Set oRSetClone = oRSetActive.Clone
    'oRSetActive.Close
 
    'oShtArchive.Cells(lLastRowArchive + 1, 1).CopyFromRecordset oRSetClone
 
    Debug.Print oRSetClone.RecordCount
    oRSetClone.MoveFirst
    Do While Not oRSetClone.EOF
        Debug.Print oRSetClone.RecordCount & " - " & oRSetClone![Nr]
        lRowDel = oShtActive.Columns(4).Find(oRSetClone![Nr]).Row
        oShtActive.Rows(lRowDel).EntireRow.Delete  
 
        oRSetClone.MoveNext '------------------> Au 1er MoveNext, ça positionne le curseur sur le 3ième enregistrement et cela est dû à .Delete
    Loop
oRSetClone.MoveNext
Au 1er MoveNext, positionne le curseur sur le 3ième enregistrement et cela est dû à Entire.Delete car si mets en commentaire EntireRow.Delete alors à la première itération du MoveNext, le curseur se positionne bien sur le 2ième enregistrement

Une explication?