Programme vba plante apres quelques executions

Signaler
Messages postés
2
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
14 mai 2012
-
Messages postés
2
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
14 mai 2012
-
bonjour chers spécialistes ,

je m'adresse a vous aujourd'ui car dans le cadre de mon stage j'ai concu un petit programme vba pour excel.
Ce programme fonctionne tres normalement aux deux premieres executions, cependant apres il est pris de lenteur caractérisée et illimité. autant dire qu'il faut arreter la tache excel et visual basic.

Le problemeest que ce programme doit fonctionner à plusieurs reprises successives.

j'esperes que vous pourrez m'aider :s je vous le copie en dessous .
merci d'avances :)


Sub comparer()

Dim i As Integer
Dim ii As Long
Dim MaLigne As Variant
Dim MaCell As Long


Application.ScreenUpdating = False

Sheets("TCD").Activate

MaLigne = Range("A3").End(xlDown).Row
MaCell = Range("A4").End(xlToRight).Column - 2

ii = 1



For i = 1 To MaCell Step 1

Sheets("TCD").Select
Range(Cells(4, i), Cells(13, i + 1)).Select
Selection.Copy
Sheets("Feuil11").Select
Range("B1").Select
ActiveSheet.Paste


If Cells(10, 2) > Cells(10, 3) Then ' on doit rechercher A-B

If Cells(11, 5) = "-1" Then

Range(Cells(1, 2), Cells(10, 3)).Select
Selection.Copy
Cells(15, ii).Select
ActiveSheet.Paste
ii = ii + 2
Else:

Range(Cells(1, 2), Cells(10, 2)).Select
Selection.Copy
Cells(15, ii).Select
ActiveSheet.Paste
ii = ii + 1
End If

ElseIf Cells(10, 2) < Cells(10, 3) Then ' on doit rechercher B-A

If Cells(11, 4) = "-1" Then

Range(Cells(1, 2), Cells(10, 3)).Select
Selection.Copy
Cells(15, ii).Select
ActiveSheet.Paste
ii = ii + 2
Else:

Range(Cells(1, 3), Cells(10, 3)).Select
Selection.Copy
Cells(15, ii).Select
ActiveSheet.Paste
ii = ii + 1

End If



End If



Next

Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub

2 réponses

Messages postés
17
Date d'inscription
dimanche 2 novembre 2003
Statut
Membre
Dernière intervention
19 mai 2012

Les multiples Select, c'est pas bon
Réduit leur présence et ton problème disparaitra ou au moins ton code sera plus clair
Sheets("TCD").Select
Range(Cells(4, i), Cells(13, i + 1)).Select
Selection.Copy
Sheets("Feuil11").Select
Range("B1").Select
ActiveSheet.Paste 


par

Sheets("TCD").Range(Cells(4, i), Cells(13, i + 1)).Copy Sheets("Feuil1").Range("B1")


Le code est plus rapide, avec moins de select.


Bon Courage

El_Titof
Messages postés
2
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
14 mai 2012

Merci bien demain je rechange tout . J ai finalement opter pour une autre méthode car lamiene était archaïque lol. mais ton conseil va me permettre de gagner en lisibilité demain merci