VBA - changer l'ordre d'insertion des lignes

Bonjour à tous,

Par avance, merci pour votre aide précieuse.

Je dispose d'un script me permettant d'insérer des lignes manquantes à un fichier. Cependant, je souhaite disposer d'une incrémentation décroissante en place d'une incrémentation croissante sur la colonne D de mon fichier.

En intervenant sur la ligne ci-dessous, je pensais résoudre l'anomalie mais sans succès

For x = arrColumnT(i, 1) To 0 Step -1

Le code est celui-ci

For i = UBound(arrColumnT, 1) To LBound(arrColumnT, 1) + 1 Step -1
            If arrColumnT(i, 1) > 0 Then

                'calcul en valeur des colonnes Q et T
                .Cells(i, "Q").Formula = "=IF(P" & i & "="""",0,INDEX(D:D,$P" & i & ",1)+1)"
                .Cells(i, "T").Formula = "=IF(D" & i & "-Q" & i & "<0,0,IF(D" & i & "-Q" & i & ">12,12,(D" & i & "-Q" & i & ")))"

                'on copie la ligne qui doit être dupliquée
                .Range("A" & i & ":T" & i).Copy
                .Range("A" & i & ":T" & i + arrColumnT(i, 1) - 1).Insert Shift:=xlDown
                Application.CutCopyMode = False

                tmpInt = .Cells(i, 8) + 1
                tmpInt2 = .Cells(i, 9)

                For x = arrColumnT(i, 1) To 0 Step -1

                    arrOneRow = .Range("A" & i + x & ":I" & i + x)

                    arrOneRow(1, 4) = x

                    If tmpInt > 0 Then
                            arrOneRow(1, 8) = tmpInt - 1
                            tmpInt = tmpInt - 1
                            arrOneRow(1, 5) = 1
                        Else
                            If tmpInt2 > 0 Then
                                    arrOneRow(1, 9) = tmpInt2 - 1
                                    tmpInt2 = tmpInt2 - 1
                                    arrOneRow(1, 5) = 3
                                Else
                                    arrOneRow(1, 9) = 0
                                    arrOneRow(1, 8) = 0
                                    arrOneRow(1, 5) = 6
                            End If
                    End If
                    .Range("A" & i + x).Resize(UBound(arrOneRow, 1), UBound(arrOneRow, 2)) = arrOneRow

                Next x

Je suis dans une impasse.

Le fichier est en pièce jointe, la deuxième feuille du fichier affiche le résultat attendu

Milles mercis pour votre aide !

Rechercher des sujets similaires à "vba changer ordre insertion lignes"