Re : Erreur 1004 lors de suppression de lignes
Voici une partie de ma macro:
Sub classement()
'nettoyage de la feuille classement
Sheets("Classement").Select
Rows("2:148").Select
Selection.Delete Shift:=xlUp
'copier les noms dans la feuille de classement final
Sheets("TOTAL FINAL").Range("B2:B96").Copy
Sheets("Classement").Range("B2").PasteSpecial Paste:=xlPasteValues
'copier les colonnes de classement de chaque journée de classement final
Sheets("S3A1").Range("E8:E96").Copy
Sheets("Classement").Range("F2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A2").Range("E8:E96").Copy
Sheets("Classement").Range("G2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A3").Range("E8:E96").Copy
Sheets("Classement").Range("H2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A4").Range("E8:E96").Copy
Sheets("Classement").Range("I2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A5").Range("E8:E96").Copy
Sheets("Classement").Range("J2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A6").Range("E8:E96").Copy
Sheets("Classement").Range("K2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A7").Range("E8:E96").Copy
Sheets("Classement").Range("L2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A8").Range("E8:E96").Copy
Sheets("Classement").Range("M2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A9").Range("E8:E96").Copy
Sheets("Classement").Range("N2").PasteSpecial Paste:=xlPasteValues
Sheets("S3A10").Range("E8:E96").Copy
Sheets("Classement").Range("O2").PasteSpecial Paste:=xlPasteValues
Sheets("TOTAL FINAL").Range("P2😛96").Copy
Sheets("TOTAL FINAL").Range("Q2").PasteSpecial Paste:=xlPasteValues
Sheets("TOTAL FINAL").Range("Q2:Q96").Copy
Sheets("Classement").Range("P2").PasteSpecial Paste:=xlPasteValues
' supprimer les lignes entières ne comportant pas de Résultats
Range("P2😛96").xlCellTypeBlanks.EntireRow.Delete (>>> Bugg Erreur 1004 dans VB)
'copier les résultats dans la feuille de classement final
Sheets("TOTAL FINAL").Range("N2:N96").Copy
Sheets("Classement").Range("C2:C96").PasteSpecial Paste:=xlPasteValues
'copier les points de bonus dans la feuille de classement final
Sheets("TOTAL FINAL").Range("M2:M96").Copy
Sheets("Classement").Range("E2:E96").PasteSpecial Paste:=xlPasteValues
'pour une matrice des lignes 2 à 112
'avec en colonne A un index des joueurs,
'en colonne B leur nom et
'en colonne C le rang que l'on va remplir automatiquement
'classer dans l'ordre alphabétique
'classer selon le score
Rows("2:96").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Mettre 1 au rang du premier en donnant comme rang le N° de ligne moins 1
Range("D2").Select
ActiveCell.FormulaR1C1 = "=ROW(RC[-1])-1"
' Au suivant mettre son N° de ligne -1 s'il est différent du précédent,
'sinon mettre comme le précédent
Range("D3").Select
ActiveCell.FormulaR1C1 = "=+IF(RC[-1]=R[-1]C[-1],R[-1]C,ROW(RC[-1])-1)"
'copier cette formule dans toute lma colonne score de la matrice
Range("D3").Select
Selection.AutoFill Destination:=Range("D3😀96"), Type:=xlFillDefault
'Copier la colonne des scores et la coller en valeur (collage spécial valeur)
Range("D2😀96").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'retrier les lignes en fonction de l'index des joueurs mais ce pourrait être par ordre alphabétique par exemple
Rows("2:96").Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("D3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("D3").Select
Range("D2😀96").Select
Selection.Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D2😀96").Select
Selection.ClearContents
' supprimer les lignes entières ne comportant pas de Noms
Range("B2:B96").SpecialCells(xlCellTypeBlanks).EntireRow.Delete