J'ai le code suivant qui crée des liens vers une feuille récapitulative sur plusieurs feuilles CS. Le nombre de feuilles CS est généré à partir d'une feuille maître CS en utilisant un autre module de code. Le code fonctionne mais est très lent lors de la création de plusieurs feuilles CS. Comment pourrais-je le rendre plus efficace?Sous-routine plus efficace
Sub CSrefs()
'
' Adds links from Summary Sheet to CS Sheets:
Dim i As Integer
Dim iOffset As Integer
intCount = ActiveWorkbook.Sheets.Count 'Find total number of workbook sheets
intCS1_Index = Sheets("CS1").Index 'CS1 Sheet index
intCSCount = intCount - (intCS1_Index - 1) 'Find total number of CS sheets
NonCSSheets = intCount - intCSCount 'Find total number of Non-CS sheets
For i = 1 To intCSCount 'number of sheets
iOffset = i + NonCSSheets
Sheets("CS" & i).Select
Range("B3").Select
ActiveCell.Formula = "=SUMMARY!E" & iOffset
Range("A6").Select 'Adds hyperlink to Summery Sheet
ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="Summary!A" & iOffset, TextToDisplay:="Go to Summary Sheet"
Range("F8").Select
ActiveCell.Formula = "=SUMMARY!F" & iOffset
Range("D8").Select
ActiveCell.Formula = "=SUMMARY!G" & iOffset
Range("B12").Select
ActiveCell.Formula = "=SUMMARY!H" & iOffset
Range("K19").Select
ActiveCell.Formula = "=SUMMARY!S" & iOffset
Range("K49").Select
ActiveCell.Formula = "=SUMMARY!T" & iOffset
Range("K79").Select
ActiveCell.Formula = "=SUMMARY!U" & iOffset
Range("K109").Select
ActiveCell.Formula = "=SUMMARY!V" & iOffset
Range("K139").Select
ActiveCell.Formula = "=SUMMARY!W" & iOffset
Range("K169").Select
ActiveCell.Formula = "=SUMMARY!X" & iOffset
Range("B8").Select
Next i
Sheets("Summary").Select
End Sub
Créer des feuilles est un processus lent, mais vous n'avez pas besoin de toutes les sélections, ce qui vous aidera. Vous devriez simplement pouvoir utiliser Range ("X #"). Formula = "SUMMARY! X" & iOffset. Cela pourrait réduire légèrement le traitement. De plus, si vous n'activez pas la mise à jour de l'écran, cela ralentira considérablement les choses. Envisagez de mettre fin au livre avec 'Application.ScreenUpdating = false ... Application.ScreenUpdating = true' pour réduire le taux de rafraîchissement, ce qui pourrait aider un peu. – tmoore82
Étant donné que les feuilles de calcul Excel 2007 ont une capacité de 1 048 576 lignes, j'ajouterais que c'est une bonne habitude de déclarer vos variables numériques comme 'Long' et non' Integer'. Un entier assigné à 'Rows.Count' va générer un débordement. – Jeeped