ma macro plante le système

Informan

XLDnaute Nouveau
Bonjour à tous,

J'ai un vrai problème avec ma macro, elle fonctionne avec de très petites données une centaine de ligne au plus mais à partir de 3000 lignes tout le système se plante, les calculs deviennent tellement long que le programme ne repond plus.
Ma formule de calcul recherche dans une table triée, suivant 2 critères distincts le numéro de l'article (art) et la division (div) le prix unitaire (PU)
Voici la formule de calcul:

Selection.FormulaArray = _
"=+IF(ISNA(MATCH(RC[-3]&RC[-2],art&div,0)),""S/O"",INDEX(pu,MATCH(RC[-3]&RC[-2],art&div,0)))"


Je ne sais vraiment pas comment faire fonctionner cette macro, J'ai besoin de vos conseils dans ce genre de situation. Existe-il d'autres possibilités de calcul pouvant effectuer la même opération? techniquement comment pourrais-je faire fonctionner cette macro?

voici la macro entière

Sub calculer_hawa()
'
Application.Goto reference:="r2c1"
ActiveCell.Offset(0, 19).Range("A1").Select
Columns("t:t").Select
Selection.Insert Shift:=xlToRight
Range("t1").Select
ActiveCell.FormulaR1C1 = "Prix Unit"
Range("t2").Select
ActiveCell.FormulaR1C1 = "=+RC[-2]/RC[-1]"
Range("t2").Select
Selection.Style = "Currency"
Selection.NumberFormat = _
"_ * #,##0.000_) $_ ;_ * (#,##0.000) $_ ;_ * ""-""??_) $_ ;_ @_ "
Selection.NumberFormat = _
"_ * #,##0.0000_) $_ ;_ * (#,##0.0000) $_ ;_ * ""-""??_) $_ ;_ @_ "
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 0).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 1).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Columns("t:t").EntireColumn.AutoFit
Range("t87").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select

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

ActiveWorkbook.Names.Add Name:="pu", RefersTo:="=Contrat!" & Selection.Address


Range("f2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Names.Add Name:="div", RefersTo:="=Contrat!" & Selection.Address
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Names.Add Name:="art", RefersTo:="=Contrat!" & Selection.Address
Application.Goto reference:="r2c1"

Sheets("Contrôle HAWA").Select
Range("E11").Select
Selection.FormulaArray = _
"=+IF(ISNA(MATCH(RC[-3]&RC[-2],art&div,0)),""S/O"",INDEX(pu,MATCH(RC[-3]&RC[-2],art&div,0)))"
ActiveCell.Select
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "0%"
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.NumberFormat = "#,##0.000"
ActiveCell.FormulaR1C1 = "0"
Range("E11").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False

End Sub

Merci d'avance
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : ma macro plante le système

Bonjour Informan,
que valent pu, art et div ? ce sont des variables ? des noms de plages définis ?

Edit : désolé, je n'avais pas vu où tu les définissais dans le code...

Pourquoi redéfinir ces noms pour chaque ligne ?
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
743
Réponses
2
Affichages
958

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 304
dernier inscrit
halo palo