Limiter le nombre de lignes dans la feuille de calcul

Bonjour,

J'aimerais savoir s'il y a une possibilité de limiter le nombre de lignes dans une feuille de calcul.

J'ai mis au point une macro qui a un temps de traitement relativement long.

Merci par avance pour votre réponse.

Bonjour,

Merci de joindre un fichier à ta demande, que l'on voit la chose !...

Cdlt.

Bonjour Jean-Eric,

En réalité mon problème concerne la taille de mon fichier. A l'origine le fichier sans macro fait aux alentours de 1976 Ko, une fois que j'ai fait tourner les deux macros attachées à mon fichier, je me retrouve avec une taille de 11 391 Ko, ce qui entraîne un ralentissement considérable. Dans la première macro (voir ci-dessous), j'ai incorporé une procédure que tu m'avais conseillé sur un sujet antérieur (FILTRE).

Sub Mise_en_forme_rapport_referentiel_derniere_version()

' Conversion des cellules en format text en format numéraire

'Effacement des données dans l'onglet Rapport Referentiel

Sheets("Rapport Referentiel").Select

Range("A1:L1").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.ClearContents

Sheets("Rapport Referentiel source").Select

Range("G1").Select

Application.CutCopyMode = False

Selection.NumberFormat = "0"

ActiveCell.FormulaR1C1 = "1"

Range("G1").Select

Selection.Copy

Range("C5").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

Rows("4:4").Select

Application.CutCopyMode = False

Dim AL1 As Object

Dim x As Integer, i As Long

Set AL1 = CreateObject("System.Collections.ArrayList")

plg = Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)

AL1.Add ""

For i = LBound(plg) To UBound(plg)

If IsError(Application.Match(plg(i, 1), AL1.Toarray(), 0)) Then x = 1 Else x = 0

If x = 1 And plg(i, 1) <> "FIL01" Then AL1.Add plg(i, 1): Err.Clear

Next

r = AL1.Toarray()

Range("$A$4:$L$123").AutoFilter

If Not ActiveSheet.FilterMode Then Range("$A$4:$L$123").AutoFilter

ActiveSheet.Range("$A$4:$L$123").AutoFilter Field:=2, Criteria1:=r, Operator:=xlFilterValues

'Sélection du champs à partir des cellules A4:L4 jusqu'à la dernière cellule non vide _

et copie dans la cellule A1 de la Feuil2

Range("A4:L4").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets("Rapport Referentiel").Select

ActiveWindow.SmallScroll Down:=-9

Range("A1").Select

ActiveSheet.Paste

End Sub

Une fois que j'ai fait tourner la première macro, le fichier n'augmente pas en taille.

Par contre, le lancement de la macro ci-dessous entraîne une augmentation excessive du fichier.

Sub Actualisation_base_partagee_derniere_version()

'ACTUALISATION DU FICHIER DE LA BASE PARTAGEE

'Effacement des données dans l'onglet J-1 base travail Référentiel

Sheets("J-1 base travail Referentiel").Select

Range("A3:AM3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.ClearContents

'Copie des données J base travail Referentiel dans l'onglet J-1 base travail Référentiel

Sheets("J base travail Referentiel").Select

Range("A3:AM3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets("J-1 base travail Referentiel").Select

Range("A3").Select

ActiveSheet.Paste

'Effacement des données dans l'onglet J base travail Référentiel

Sheets("J base travail Referentiel").Select

Range("A3:AM3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.ClearContents

'Copie des données du Rapport Référentiel retraité à partir des cellules B2:L2 dans l'onglet J base travail Référentiel

Sheets("Rapport Referentiel").Select

Range("B2:L2").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets("J base travail Referentiel").Select

Range("C3").Select

ActiveSheet.Paste

'Boucle pour copier les formules des cellules A2:B2 dans le champs A3:B300 tant que les cellules se trouvant dans le champs C3:D300 sont non vides :

Do

Sheets("J base travail Referentiel").Select

Range("A2:B2").Select

Selection.Copy

Range("A3:B3").Select

Range(Selection, Selection.End(xlDown)).Select

ActiveSheet.Paste

Loop While ("C3:D300") = ""

Do

Sheets("J base travail Referentiel").Select

Range("N2:AM2").Select

Selection.Copy

Range("N3:AM300").Select

ActiveSheet.Paste

Loop While ("C3:D300") = ""

'Remplacement des formules par leur valeur à partir des cellules A3:B3 jusqu'à la dernière cellule non vide

Range("A3:B3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Remplacement des formules par leur valeur à partir des cellules N3:AM3 jusqu'à la dernière cellule non vide

ActiveWindow.ScrollWorkbookTabs Sheets:=-1

Sheets("J base travail Referentiel").Select

ActiveWindow.ScrollColumn = 2

ActiveWindow.ScrollColumn = 3

ActiveWindow.ScrollColumn = 4

ActiveWindow.ScrollColumn = 5

ActiveWindow.ScrollColumn = 7

ActiveWindow.ScrollColumn = 8

ActiveWindow.ScrollColumn = 9

ActiveWindow.ScrollColumn = 10

Range("N3:AM3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Mise en forme de la couleur du champ de cellules N3:AM3, remplacement du fond rouge par un fond blanc

Range("N3:AM3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Application.CutCopyMode = False

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorDark1

.TintAndShade = 0

.PatternTintAndShade = 0

End With

'Remplacement de tous les messages d'erreur #N/A par NA

'Utilisation d'une boucle For to

For i = 3 To 300

If WorksheetFunction.IsNA(Range("P" & i)) = True Then Range("P" & i) = "NA"

Next

'Utilisation d'une boucle For to

'Remplacer dans la colonne S les champs vides par le commentaire " En attente ", dans la colonne T les champs vides par la date du jour et dans la colonne W les champs vides par le commentaire " A analyser ".

For i = 3 To 300

If Range("P" & i).Value = "NA" Then

Range("S" & i).Value = "En attente"

Range("T" & i).Value = Date

Range("W" & i).Value = "A analyser"

End If

Next

'Si variables de la colonne N à partir de la ligne 3 jusqu'à 300 sont supérieurs à 10000 alors les cellules de la colonne_

'N à la colonne AM sont vides

For h = 3 To 300

If Range("N" & h).Value > 10000 Then

Range("N" & h).Value = ""

Range("O" & h).Value = ""

Range("P" & h).Value = ""

Range("Q" & h).Value = ""

Range("R" & h).Value = ""

Range("S" & h).Value = ""

Range("T" & h).Value = ""

Range("U" & h).Value = ""

Range("V" & h).Value = ""

Range("W" & h).Value = ""

Range("X" & h).Value = ""

Range("Y" & h).Value = ""

Range("Z" & h).Value = ""

Range("AA" & h).Value = ""

Range("AB" & h).Value = ""

Range("AC" & h).Value = ""

Range("AD" & h).Value = ""

Range("AE" & h).Value = ""

Range("AF" & h).Value = ""

Range("AG" & h).Value = ""

Range("AH" & h).Value = ""

Range("AI" & h).Value = ""

Range("AJ" & h).Value = ""

Range("AK" & h).Value = ""

Range("AL" & h).Value = ""

Range("AM" & h).Value = ""

Range("B" & h).Value = ""

End If

Next

' Actualisation_données Macro

'

ActiveWorkbook.RefreshAll

End Sub

Je n'arrive pas à trouver ce qui entraîne l'augmentation de la taille du fichier.

Je ne peux pas fournir le fichier EXCEL car c'est un document interne qui ne peut être divulgué. J'aimerais savoir si le fait d'avoir déclaré les variables (notamment dans la procédure que tu m'as fourni), peut être à l'origine de cette augmentation de taille. De même, j'ai utilisé la fonction SI ce qui a entraîné des messages d'erreur NA et REF qui étaient dupliqués jusqu'à la fin de la feuille EXCEL. J'ai incorporé des procédures afin de les remplacer par """ (notamment par IF RANGE ("N" & h). value > 10000 Then ...). Merci par avance pour un début de réponse mais si je sais que sans fichier EXCEL, cela va être difficile de pouvoir m'aider. Bonne journée.

Rechercher des sujets similaires à "limiter nombre lignes feuille calcul"