ma macro plante le système

  • Initiateur de la discussion Initiateur de la discussion Informan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

Informan

Guest
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 modification par un modérateur:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
381
L
Réponses
9
Affichages
1 K
Réponses
2
Affichages
949
M
Réponses
1
Affichages
1 K
mahaut57
M
P
  • Résolu(e)
Réponses
2
Affichages
1 K
Pdedieu
P
E
Réponses
5
Affichages
2 K
EDI9366
E
J
Réponses
22
Affichages
3 K
jui42
J
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
1 K
Retour