[déplacé VB6 -> VBA] Alléger une macro [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
22 février 2010
-
Messages postés
3
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
22 février 2010
-
Bonjour à tous, j' créé une macro qui me permet de trier et de classer des données dans une feuille Excel, cela fonction mais j'aimerai avoir quelque conseil pour alléger celci.


Sub TriAA()
'
' TriA Macro
' Macro enregistrée le 10/02/2010


' Copie du contenu dans un nouveau fichier

Cells.Copy
Workbooks.Add
ActiveSheet.Paste

' Supression des colones A et B et des lignes qui ne sont pas de PA

Columns("A:B").Delete Shift:=xlToLeft
Range("A2:G2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.ScrollRow = 1
Range("A1").AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<>PA"
Selection.EntireRow.Delete
Selection.AutoFilter Field:=1

' Création d'une copie de l'extraction brute

Range("A:D,F:G").Select
Selection.Columns.AutoFit
Cells.Copy
Sheets.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("Feuil2").Name = "Extraction Brute"
Sheets("Feuil1").Select

' Tri

Selection.AutoFilter Field:=7, Criteria1:="=*Date J0*", Operator:=xlAnd, _
Criteria2:="=*PSRC*"
Columns("A:G").Copy
Sheets.Add
Range("A1").Activate
ActiveSheet.Paste
Selection.AutoFilter
Range("A:D,F:G").Select
Selection.Columns.AutoFit
Range("A1").Select
Sheets("Feuil3").Name = "Date J0 incorrecte"
Sheets("Feuil1").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=7

Selection.AutoFilter Field:=7, Criteria1:="=*Date J1*", Operator:=xlAnd, _
Criteria2:="=*PSRC*"
Columns("A:G").Copy
Sheets.Add
Range("A1").Activate
ActiveSheet.Paste
Selection.AutoFilter
Range("A:D,F:G").Select
Selection.Columns.AutoFit
Range("A1").Select
Sheets("Feuil4").Name = "Date J-1 incorrecte"
Sheets("Feuil1").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=7

Selection.AutoFilter Field:=7, Criteria1:="=*Trame*", Operator:=xlAnd, _
Criteria2:="=*AP*"
Columns("A:G").Copy
Sheets.Add
Range("A1").Activate
ActiveSheet.Paste
Selection.AutoFilter
Range("A:D,F:G").Select
Selection.Columns.AutoFit
Range("A1").Select
Sheets("Feuil5").Name = "Trame d'erreur"
Sheets("Feuil1").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=7

End Sub

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,

Commence par te débarrasser de ces méthodes de sélection, paste, etc...
Pointe directement sur tes feuilles, plages et cellules pour y agir !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Là, tu vois, (exemple) je pointe directement sur la cellule A1 de la feuille Feuil2 :
toto = Sheets("Feuil2").Range("A1").value
Dur ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour

Va voir ce site

http://www.mvps.org/dmcritchie/excel/slowresp.htm

Bonne journée
Messages postés
3
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
22 février 2010

Ok, aurai tu un exemple de commande pour pointer directement une feuille, plage et cellule.
Je suis vraiment débutant, j'ai decouvert VBA il ya 1 semaine.
Messages postés
3
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
22 février 2010

Merci pour vos réponses.