Besion d'aide sur un code VBA

roum1

XLDnaute Junior
Bonjour à toutes et à tous,
Je ne comprend pas pourquoi mon code ne marche pas. A priori c'est au niveau de la supression des lignes vides!!

Code:
[COLOR="Green"]'Je copie colle une grande plage avec beaucoup de de lignes vides[/COLOR]
Sheets("Client").Range("B20:F767").Copy
Sheets("Suivi").Range("A16").PasteSpecial Paste:=xlPasteAll

[COLOR="green"]'je veux supprimer les lignes vides[/COLOR]
For l = 16 To 767
If Sheets("Suivi").Cells(l, 2) = "" Then
Sheets("Suivi").Rows(l).Delete
End If
Next

[COLOR="green"]'je compte les lignes remplies remplies pour ne pas a effectuer une boucle (voir plus bas) sur la plage 16 to 767[/COLOR]
compteur = 0
For k = 16 To 767
If Sheets("Suivi").Cells(k, 2) = "" Then
compteur = compteur + 1
End If
Next
[COLOR="green"]
'au maximum tout est rempli je compte donc les cellules vides et je soustrais sur la plage[/COLOR]
celluleremplie = 767 - 16 - compteur

[COLOR="green"]'Les lignes de code suivantes trient le tableaux dans l'ordre croissant.[/COLOR]
Sheets("suivi").Range(Cells(16, 1), Cells(celluleremplie + 16, 11)).Sort Key1:=Range("D16"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
          

[COLOR="green"]'Les lignes de code suivantes additionne les quantités offres et les quantités commandées si il y a plusieurs lignes de types de matériel identiques.[/COLOR]
For j = 1 To 15 [COLOR="green"]'15 lignes de type de matériel identiques possible.[/COLOR]
    For i = 16 To celluleremplie + 16
        If Cells(i, 4) = Cells(i + 1, 4) Then
        Cells(i, 6) = Cells(i, 6) + Cells(i + 1, 6) [COLOR="green"]'additionne les quantités[/COLOR]
        Cells(i, 7) = Cells(i, 7) + Cells(i + 1, 7) [COLOR="green"]'additionne les quantités offres[/COLOR]
        Worksheets("suivi").Rows(i + 1).Delete [COLOR="green"]'supprime les lignes identiques[/COLOR]
    End If
    Next
Next

[COLOR="green"]'Les lignes de code suivantes trient le tableau dans l'odre croissant selon la marque du matériel.[/COLOR]
Sheets("suivi").Range(Cells(16, 1), Cells(celluleremplie + 16, 11)).Sort Key1:=Range("A16"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal


Pleeeease !! Help me !!
 

mutzik

XLDnaute Barbatruc
Re : Besion d'aide sur un code VBA

bonjour,

pourquoi ne fais-tu pas un tri au préalable, ainsi toutes les lignes vides se trouveraient à la fin de ton tableau, et, du coup, même plus besoinde les effacer ...
 
D

Denis

Guest
Re : Besion d'aide sur un code VBA

Bonjour le Fil et le Forum
pour effacer tes ligne vides, il faut partir du bas

'je veux supprimer les lignes vides
For l = 767 To 16 step -1
If Sheets("Suivi").Cells(l, 2) = "" Then
Sheets("Suivi").Rows(l).Delete
End If
Next

Bon courage et à +
Denis
 

Discussions similaires

Réponses
11
Affichages
378