Bonjour

Soit les 11 lignes suivantes dans la colonne A
test
a
b
a
b
b
a
a
b
a
a

Je souhaite que lorsque la valeur = a que la ligne soit copiée/collée sous celle-ci.

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
Sub test1()
 
Dim j As Integer
For j = 2 To Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1
 
        If Cells(j, 1) = "a" Then
 
            Rows(j).Copy
            Rows(j).Insert
            Cells(j + 1, 2) = "Insertion"
            j = j + 1
        Else
        End If
 
Next j
MsgBox j
 
 
End Sub
Le code s'arrête avant d'avoir traité toute la colonne A.
Cells(Columns(1).Cells.Count, 1).End(xlUp).Row est bien mis à jour, par contre on dirait que la boucle FOR ne tient compte que de ses valeurs au départ!?

Le boucle en While Wend marche:

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
Sub test()
 
derniere_ligne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
Dim j As Integer
j = 2
While j <= Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1
 
        If Cells(j, 1) = "a" Then
 
            Rows(j).Copy
            Rows(j).Insert
            Cells(j + 1, 2) = "Insertion"
            j = j + 2
        Else
            j = j + 1
        End If
 
Wend
 
MsgBox j
 
End Sub
Avez-vous une explication pourquoi cela bloque dans FOR NEXT?
Il me semble avoir déjà utilisé cela sans problème.

Merci d'avance