Bonjour,
Nous venons de migrer sur Excel 2013 dans notre entreprise et nous rencontrons beaucoup de difficultés pour adapter nos macros par rapport au nouveau comportement d'Excel.
Nous bloquons sur le point suivant. Il y a une ligne qui était quasi instantanée sur Excel 2010 et qui dure indéfiniment sur Excel 2013.
Nous filtrons sur la colonne Periode (qui est triée par défaut), puis nous supprimons les lignes visibles.
'tableau avec une ligne d'entete
'Base_LigneDeb : c'est le no de la premiere ligne de données
'donc Base_LigneDeb - 1 : c'est la ligne d'entête
'nos colonnes sont gérées en énumération qui s'appelle IndTabBase
L'onglet Base contient 70 000 lignes et la suppression concerne 10 000 lignes.
Pour info, nous avons essayé avec ScreenUpdating = false + EnableEvents = false + Calcul Manuel mais toujours le pb de lenteur...
Merci de nous dire ce qu'il faut changer. Peut être qu il y a un paramètre à appliquer dans Excel 2013!! (Noël approche!!)
Merci d'avance pour vos messages constructifs.
Nous venons de migrer sur Excel 2013 dans notre entreprise et nous rencontrons beaucoup de difficultés pour adapter nos macros par rapport au nouveau comportement d'Excel.
Nous bloquons sur le point suivant. Il y a une ligne qui était quasi instantanée sur Excel 2010 et qui dure indéfiniment sur Excel 2013.
Nous filtrons sur la colonne Periode (qui est triée par défaut), puis nous supprimons les lignes visibles.
'tableau avec une ligne d'entete
'Base_LigneDeb : c'est le no de la premiere ligne de données
'donc Base_LigneDeb - 1 : c'est la ligne d'entête
'nos colonnes sont gérées en énumération qui s'appelle IndTabBase
L'onglet Base contient 70 000 lignes et la suppression concerne 10 000 lignes.
Code:
Sub EffacerLignesBase()
Dim LigneFin As Long
'on recherche la dernière ligne
LigneFin = Cells(Rows.Count, IndTabBase.Ste).End(xlUp).Row
'on nettoie
Range(Cells(Base_LigneDeb - 1, IndTabBase.MINELEMENTS), Cells(LigneFin, IndTabBase.MAXELEMENTS)).AutoFilter Field:=IndTabBase.Periode, Criteria1:=">=" & Params.PeriodeDeb, Operator:=xlAnd, Criteria2:="<=" & Params.PeriodeFin
If Cells(Rows.Count, IndTabBase.Ste).End(xlUp).Row >= Base_LigneDeb Then
Range(Cells(Base_LigneDeb, IndTabBase.MINELEMENTS), Cells(LigneFin, IndTabBase.MAXELEMENTS)).SpecialCells(xlCellTypeVisible).EntireRow.Delete 'Ca patiente très longtemps sur cette ligne
End If
ActiveSheet.AutoFilterMode = False
LigneFin = Cells(Rows.Count, IndTabBase.Ste).End(xlUp).Row
Range(Cells(Base_LigneDeb - 1, IndTabBase.MINELEMENTS), Cells(LigneFin, IndTabBase.MAXELEMENTS)).AutoFilter
End Sub
Pour info, nous avons essayé avec ScreenUpdating = false + EnableEvents = false + Calcul Manuel mais toujours le pb de lenteur...
Merci de nous dire ce qu'il faut changer. Peut être qu il y a un paramètre à appliquer dans Excel 2013!! (Noël approche!!)
Merci d'avance pour vos messages constructifs.
Dernière édition: