bonjour,
pour gérer les redimensionnement d'un formulaire, j'ai écrit le petit bout de code ci dessous qui :
- insère de nouvelles lignes à un endroit précis
- copie / colle une plage de références, contenant des formules que je souhaite conserver
- remet à zéro les valeurs et validations de la plage copiée, au cas où il y ai des cellules complétées dans la plage de référence.
Le code ci dessous fonctionne... mais est horriblement lent (environ 25secondes sur mon pc pour 50 itérations de la boucle, lorsqu'il faut en faire 2000 je deviens fou).
Auriez vous des idées d'améliorations qui accélérerait le temps d’exécution ?
Mille mercis !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 With ThisWorkbook.Worksheets(nomOnglet) For i = 1 To nbLignes 'insertion puis copie / colle de la plage de référence rangeInsertion = "" & indexColonneDebutFormulaire & marqueurInsertionFormulaire & ":" & indexColonneFinFormulaire & marqueurInsertionFormulaire .Range(rangeInsertion).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Range(plageFormulesReferenceFormulaire).Select Selection.Copy .Range("" & indexColonneDebutFormulaire & marqueurInsertionFormulaire).Select ActiveSheet.Paste 'remise à zero de la ligne .Cells(marqueurInsertionFormulaire, 1).Value = "" .Cells(marqueurInsertionFormulaire, 3).Value = "" .Cells(marqueurInsertionFormulaire, 3).Validation.Delete .Cells(marqueurInsertionFormulaire, 5).Value = "" .Cells(marqueurInsertionFormulaire, 6).Value = "" .Cells(marqueurInsertionFormulaire, 8).Value = "" 'etcetcetc Next i End with
Partager