simplifaction de code

simplifaction de code - VB/VBA/VBS - Programmation

Marsh Posté le 26-10-2007 à 17:42:45    

Bonjour à tous,
je suis novice dans la matière.
J'ai écris réalisé un code pour une manipulation, maintenant je voulais savoir s'il y avais une possibilité de simplifier mon code pour que mon fichier soit moins lourd.

Code :
  1. Sub juin()
  2.     [D16].Select
  3.     ActiveSheet.PivotTables("Tableau croisé dynamique2" ).PivotCache.Refresh
  4.     ActiveSheet.PivotTables("Tableau croisé dynamique2" ).PivotFields("mois" ). _
  5.         CurrentPage = "6"
  6.     [p3].Copy
  7.     Sheets("Invreliability 01" ).Select
  8.     [B34].Select
  9.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  10.         :=False, Transpose:=False
  11.     Sheets("TCD" ).Select
  12.     [p4].Select
  13.     Application.CutCopyMode = False
  14.     Selection.Copy
  15.     Sheets("Invreliability 01" ).Select
  16.     [B43].Select
  17.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  18.         :=False, Transpose:=False
  19.     Sheets("TCD" ).Select
  20.     [p5].Select
  21.     Application.CutCopyMode = False
  22.     Selection.Copy
  23.     Sheets("Invreliability 01" ).Select
  24.     [F34].Select
  25.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  26.         :=False, Transpose:=False
  27.     Sheets("TCD" ).Select
  28.     [p6].Select
  29.     Application.CutCopyMode = False
  30.     Selection.Copy
  31.     Sheets("Invreliability 01" ).Select
  32.     [F39].Select
  33.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  34.         :=False, Transpose:=False
  35.     Sheets("TCD" ).Select
  36.     [p7].Select
  37.     Application.CutCopyMode = False
  38.     Selection.Copy
  39.     Sheets("Invreliability 01" ).Select
  40.     [F43].Select
  41.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  42.         :=False, Transpose:=False
  43. End Sub


 
Merci .bon WD

Reply

Marsh Posté le 26-10-2007 à 17:42:45   

Reply

Marsh Posté le 26-10-2007 à 19:12:39    

A mon avis, vu la faible longueur de ton code, tu ne vas rien gagner en taille de fichier...
 
maintenant, tu peux enlever tous tes "Application.CutCopyMode = False" et tes ".select" après tes plages :
 
[p7].Copy  
 
au lieu de :
 
[p7].Select
Application.CutCopyMode = False
Selection.Copy
 
Tu peux aussi enlever tous les arguments pas défaut de tes paste :
 
Selection.PasteSpecial Paste:=xlPasteValues
 
Par ailleurs, je ne comprends pas, c'est quoi tes "[F43]" ?

Reply

Marsh Posté le 26-10-2007 à 19:20:53    

Voici une petite optimisation faite à la volée, non testée, mais qui devrait tourner sans souci

Code :
  1. Sub juin()
  2.     [D16].Select
  3.     With ActiveSheet.PivotTables("Tableau croisé dynamique2" )
  4.         .PivotCache.Refresh
  5.         .PivotFields("mois" ).CurrentPage = "6"
  6.     End With
  7.     [p3].Copy
  8.     Sheets("Invreliability 01" ).[B34].PasteSpecial xlValues
  9.     Application.CutCopyMode = False
  10.     Sheets("TCD" ).[p4].Copy
  11.     Sheets("Invreliability 01" ).[B43].PasteSpecial xlValues
  12.     Application.CutCopyMode = False
  13.     Sheets("TCD" ).[p5].Copy
  14.     Sheets("Invreliability 01" ).[F34].PasteSpecial xlValues
  15.     Application.CutCopyMode = False
  16.     Sheets("TCD" ).[p6].Copy
  17.     Sheets("Invreliability 01" ).[F39].PasteSpecial xlValues
  18.     Application.CutCopyMode = False
  19.     Sheets("TCD" ).[p7].Copy
  20.     Sheets("Invreliability 01" ).[F43].PasteSpecial xlValues
  21. End Sub


Si tu veux réduire la taille du fichier en poids, les documents Office gardent une trace des anciennes modifs, du coup, l'idéal c'est de faire un copier coller des cellules de chaque feuille dans un nouveau classeur, de renommer les feuilles pareil, et de copier/coller également le contenu de tes modules

 

edit : [F43] correspond à range("F43" )
Les application.cutCopyMode sont rarement indispensable en effet ^^


Message édité par devil_k le 26-10-2007 à 19:22:20
Reply

Marsh Posté le 26-10-2007 à 19:39:51    

Du coup, si les [F43] sont des ranges, pourquoi pas directement [F43]=[p7] ?

Reply

Marsh Posté le 27-10-2007 à 12:15:43    

C'est pas faux ^^

Reply

Marsh Posté le 30-10-2007 à 15:13:53    

Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed