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