Accélerer une Macro , optimisation code

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 !

castorjunior

XLDnaute Nouveau
bonjour ,

j'ai fait une macro qui fait plein de truc , effacage de plages , concaténation , création de noms et elle est lourde, voire très lourde

j'ai donc une question , avez vous quelques ruses pour optimiser mon code ??

Code:
Sub tintin()
Dim cle, cleligne As Integer
Dim nommachine As Variant
If MsgBox("Vous avez peut-etre effectué des modifications de pièces ou de machines , voulez-vous lancer la reconstruction de l'arborescence machine ?    Attention étape pouvant durer plusieurs minutes", vbYesNo) = vbYes Then

'concatene
Sheets(nomf2).Select
For i = 2 To Sheets(nomf2).Range("A65536").End(xlUp).Row ' taille de la liste des pieces
Cells(i, 5) = Cells(i, 2) & Cells(10, 9) & Cells(i, 3)
Next i

'efface le tableau vert
For i = 2 To 500
For j = 5 To 205
Sheets(arbo).Cells(i, j) = ""
Next j
Next i


'creation arbo machine
For i = 2 To Sheets(nomf2).Range("A65536").End(xlUp).Row
Sheets(arbo).Cells(i, 1) = Sheets(nomf1).Cells(i, 2)
Sheets(arbo).Cells(i, 2) = Sheets(nomf1).Cells(i, 3)
Next i

'creation nom liste ref machine
Application.DisplayAlerts = False
  Sheets(nomf1).Select
  Columns("B:C").Select
  Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:= _
      False
        



'creation arbo piece
For i = 2 To Sheets(nomf2).Range("A65536").End(xlUp).Row ' nbre de pieces
nommachine = Sheets(nomf2).Cells(i, 4) ' mets dans nommachine la ref machine de la cellule i
For j = 2 To Sheets(arbo).Range("A65536").End(xlUp).Row 'nombre de ligne machine arbo
If nommachine = Sheets("Arborescense machine").Cells(j, 2) Then
cle = j + 3 'cle est la colonne de la machine corresp a la piece selectionnée
cleligne = Sheets(arbo).Cells(3000, cle).End(xlUp).Row + 1
cachearbo = Sheets(nomf2).Cells(i, 5)
Sheets(arbo).Cells(cleligne, cle) = cachearbo
End If
Next j
Next i

'mise a jour des nom de (piece) selection pour les menu deroulants en cascade
Sheets(arbo).Select
  Columns("E:dt").Select
  Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:= _
      False
Application.DisplayAlerts = True
Else
    Exit Sub
End If
End Sub

merci
 
- 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

Discussions similaires

Réponses
5
Affichages
612
Réponses
8
Affichages
614
Réponses
4
Affichages
470
Réponses
8
Affichages
244
Réponses
10
Affichages
457
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
889
Réponses
5
Affichages
279
Retour