Pb ligne vide dans boucle VBA

Bonjour à tous,

J'ai fait une boucle enVBA sur un tableau avec des conditions.

Le code copie une ligne entière et la colle sur la 1ère ligne non vide de ce même tableau et ainsi de suite.

Le problème que j'ai c'est que lorsque les conditions ne sont pas respectées, il y a une ligne complètement vide de coller.

Voilà mon code :

Sub exemple()

Dim LastLigne As Long
Dim PlageLigne As Range
Dim i As Integer

LastLigne = Cells(Rows.Count, 22).End(xlUp).Row

For i = 1 To (LastLigne - 41 + 1)

If Cells(40 + i, 27) <> Cells(40 + i, 26) And Cells(40 + i, 27) <> 0 Then

Range(Cells(40 + i, 22), Cells(40 + i, 42)).Copy Cells(LastLigne + i, 22)
End If
Next i

End Sub

comment faire pour ne pas avoir de ligne vide lors du copier coller ?

Merci de votre aide.

PS:

10test.xlsm (17.81 Ko)

Le tableau commence en cellule V41

WOLF76

Bonjour,

Sub exemple2()

Dim I As Long, LastLigne As Long, LigneEncours As Long

    LastLigne = Cells(Rows.Count, 22).End(xlUp).Row
    LigneEncours = LastLigne
    For I = 1 To (LastLigne - 41 + 1)
        If Cells(40 + I, 27) <> Cells(40 + I, 26) And Cells(40 + I, 27) <> 0 Then
           Range(Cells(40 + I, 22), Cells(40 + I, 42)).Copy Cells(LigneEncours, 22)
           LigneEncours = LigneEncours + 1
        End If
    Next I

End Sub

Salut Eric Kergresse,

Merci pour ta solution, elle fonctionne parfaitement.

Je l'ai juste légèrement modifiée pour ne pas écraser la dernière ligne non vide de mon tableau.

Voilà le code modifié si ça intéresse certains.

Sub exemple()

Dim I As Long, LastLigne As Long, LigneEncours As Long

    LastLigne = Cells(Rows.Count, 22).End(xlUp).Row + 1
    LigneEncours = LastLigne
    For I = 1 To (LastLigne - 41)
        If Cells(40 + I, 27) <> Cells(40 + I, 26) And Cells(40 + I, 27) <> 0 Then
           Range(Cells(40 + I, 22), Cells(40 + I, 42)).Copy Cells(LigneEncours, 22)
           LigneEncours = LigneEncours + 1
        End If
    Next I

End Sub

Je mets en résolu.

Bonne journée.

WOLF76

Rechercher des sujets similaires à "ligne vide boucle vba"