Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2064 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Optimisation de code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Optimisation de code

n°2155968
bat001
Posté le 07-09-2012 à 15:53:38  profilanswer
 

Bonjour,
Je suis novice en VBA, mais j'ai des bases en programmation.
Pour la mise en contexte, je souhaite prendre des données d'un onglet, et les transférer dans un autre onglet tout en les réorganisant.
J'ai créé une macro qui scan dans une plage voulu les données à copier, puis qui copie les cellules sélectionnées dans l'autre onglet.
De plus, lorsque je réexécute le code, les données ayant été déplacé lors de la première exécution sont toujours présentent, et celle de l'exécution actuelle s'y rajoute... je dois donc supprimer les données une par une avant chaque exécution.
 
Le problème que j'ai est que lorsque j'exécute le code, le temps d'exécution est d'au moins 30secondes...
Est ce que il y aurait moyen d'optimiser mon code pour gagner en temps d'exécution ???
 
Je ne sais pas si j'ai été bien claire, mais si quelqu'un arrive à me répondre merci d'avance !!!
 

Code :
  1. Public Sub FindManagementPFS()
  2. Dim Trouve As Range
  3. Dim Adresse1 As String
  4. Dim domaine As String
  5. Dim ColonneCopie As Range
  6. Dim MaLigne As Variant
  7. Dim MaPlage As Range
  8. Dim LaPlage As Range
  9.     'On sélectionne la colonne domaine de la phase ciblée
  10.     Set MaPlage = Range("PlageDomainePFS" )
  11.     'On sélectionne le domaine recherché
  12.     domaine = "Management"
  13.     'On associe le fait de trouver le domaine recherché à une variable
  14.     Set Trouve = MaPlage.Find(domaine)
  15.     'On initialise le compteur qui nous permettra d'insérer les lignes au bon endroit
  16.     ComptMan = 0
  17.    
  18.     If Not Trouve Is Nothing Then
  19.         Adresse1 = Trouve.Address
  20.         Do
  21.             'On sélectionne l'onglet source
  22.             With Sheets("DS PFS" )
  23.                 'On sélecionne les 3 cellules que l'on veut copier
  24.                 Set LaPlage = Application.Union(Cells(Trouve.Row, 3), Cells(Trouve.Row, 4), Cells(Trouve.Row, 6), Cells(Trouve.Row, 7))
  25.                 Range(LaPlage.Address).Copy
  26.             End With
  27.             'On sélectionne l'onglet de destination
  28.            
  29.             With Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Range("PlageManMulti" )
  30.             'Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Select
  31.                 MaLigne = .Address
  32.                 MaLigne = Range(MaLigne).Row
  33.                 'On décale la sélection
  34.             End With
  35.            
  36.             Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Select
  37.             Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Range("PlageManMulti" ).Offset(ComptMan).Select 'offset à incrémenter selon le nombre de passage ds la boucle
  38.      
  39.            
  40.             ActiveSheet.Paste
  41.             'On coche la phase où se déroule la tâche
  42.             Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Cells(MaLigne + ComptMan, 7).Value = "x"
  43.                
  44.             'On boucle pour supprimer les doublons lorsque l'on réexécute le programme
  45.             While Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Cells(MaLigne + ComptMan + 1, 3).Value <> "arc"
  46.                 Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Rows(MaLigne + ComptMan + 1).Delete
  47.             Wend
  48.            
  49.             'On ajoute une ligne où sera copier la tâche suivante
  50.             Sheets("DS PFS-FS-DEF-C0-C1-C2-D" ).Cells(MaLigne + ComptMan + 1, 3).EntireRow.Insert Shift:=xlUp
  51.             ComptMan = ComptMan + 1
  52.             Set Trouve = MaPlage.FindNext(Trouve)
  53.         Loop While StrComp(Adresse1, Trouve.Address) <> 0
  54.     End If
  55.    
  56. End Sub


Message édité par bat001 le 07-09-2012 à 15:56:16
mood
Publicité
Posté le 07-09-2012 à 15:53:38  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Optimisation de code

 

Sujets relatifs
Une ligne VBA que je ne comprends pas[VBA]Calcul du nombre de lignes avec 3 conditions non numériques
Générateur de code ou ORM[VBA] Macro pour manipuler des valeurs entre 3 feuilles d'un classeur
outil UML <---> code c++ pour eclipse-cdt?VBA et XML : mystere de la méthode text
VBA et XML, set AttributeOptimisation d'un code VBA pour excel
[vba]Optimisation du code pour la rapidité (résolu) 
Plus de sujets relatifs à : [VBA] Optimisation de code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR