Signaler

Comment optimiser mon code,

Posez votre question muiigisha 45Messages postés lundi 25 septembre 2017Date d'inscription 13 novembre 2017 Dernière intervention - Dernière réponse le 13 nov. 2017 à 11:35 par f894009
Bonjour,

j'ai écrit quelques lignes de code et lors de la compilation j'en ai au moins pour 5 minutes, je trouve ça bizarre parce que si je compile pas à pas ç'est plutôt rapide et k'ai qu'une seule boucle for. J 'ai mis des" application.screeupdating=false" à n'en plus finir mais toujours rien.

Voici mon code, pouvez m'aider à l'optimiser et me donner des conseils pour la prochaine fois?


Dim Wbk As Workbook, iprF As Workbook, iprCC As Workbook
Dim file, Quelfichier As Variant
Dim ctr As Long
Quelfichier = Application.GetOpenFilename _
(Title:="Please Select an input excel file", _
FileFilter:="Excel Files *.csv (*.csv),")
Application.ScreenUpdating = False
Set iprCC = Workbooks.Open(Quelfichier)

Application.ScreenUpdating = False

iprCC.Activate
Range("B1:B80227,E1:E80227,G1:G80227,L1:L80227,N1:N80227,P1:P80227,Q1:Q80227,R1:R80227,S1:S80227,V1:V80227,W1:W80227,Y1:Y80227,Z1:Z80227").Select
Selection.EntireColumn.Delete
Range("N1:N80227,Q1:Q80227,R1:R80227,U1:U80227,X1:X80227,AB1:AB80227,AC1:AC80227,AD1:AD80227,AE1:AE80227,AF1:AF80227,AH1:AH80227,AL1:AL80227,AM1:AM80227,AN1:AN80227,AO1:AO80227,AP1:AP80227,AX1:AX80227,AZ1:AZ80227").Select
Selection.EntireColumn.Delete
Range("AI1:AI80227,AJ1:AJ80227,AK1:AK80227,AN1:AN80227,AO1:AO80227,AP1:AP80227,AR1:AR80227,AS1:AS80227,AT1:AT80227,AU1:AU80227,AW1:AW80227,BD1:BD80227,BF1:BF80227,BG1:BG80227,BH1:BH80227").Select
Selection.EntireColumn.Delete
Range("AU1:AU80227,AV1:AV80227,AW1:AW80227,AX1:AX80227,AY1:AY80227,AZ1:AZ80227,BB1:BB80227,BD1:BD80227,BE1:BE80227,BF1:BF80227,BG1:BG80227,BH1:BH80227,BI1:BI80227,BJ1:BJ80227,BK1:BK80227,BL1:BL80227,BM1:BM80227").Select
Selection.EntireColumn.Delete
Range("AW1:AW80227,AY1:AY80227,AZ1:AZ80227,BA1:BA80227,BB1:BB80227,BC1:BC80227").Select
Selection.EntireColumn.Delete

Call Cleanse_File(iprCC)
iprCC.RefreshAll
iprCC.SaveAs FileFormat:=xlExcel12
iprCC.Close savechanges:=True

MsgBox "File Standardization completed!", vbExclamation, "!! Warning !!"

End Sub

Sub Cleanse_File(Wbk As Workbook)

Dim i As Long
Wbk.Activate

Application.ScreenUpdating = False
With Wbk.Sheets(1)
For i = .Range("H" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("H" & i).value <> "" Then
.Rows(i).Delete
End If
Next i
End With

Application.ScreenUpdating = False

Cells.Replace What:="EST", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Cells.Replace What:="EDT", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Wbk.Save

End Sub


Sachant que normalement à l'ouverture je sélectionne 2 fichiers et que le traitement est appliqué sur ces 2 fichiers

Merci d'avance

Utile
+0
plus moins
Bonjour,

Vous deletez deux fois les memes colonnes
Range("N1:N80227,Q1:Q80227,R1:R80227,


IL serait peut-etre plus judicieux de copier les colonnes dont vous avez besoin dans un autre fichier et faire vos suppressions de ligne et remplacement de texte dans ce fichier

Suppression ligne: si moins de lignes a supprimer qu'a conserver, code a optimiser faut voir
muiigisha 45Messages postés lundi 25 septembre 2017Date d'inscription 13 novembre 2017 Dernière intervention - 10 nov. 2017 à 11:38
Merci pour ton intervention
la suppression en fait n'est pas faite 2 fois parce qu'en supprimant les colonnes se maettent automatiquement en ordre et je ne peux pas supprimer tout d'un coup parce que VBA ne supporte pas et m'affiche une erreur.
La copie n'est pas plus longue que la suppression? parce que même pas à pas c'est quelques tierces plus long que la suppresion.
Il ya plus de ligne à supprimer qu'à conserver
Répondre
muiigisha 45Messages postés lundi 25 septembre 2017Date d'inscription 13 novembre 2017 Dernière intervention - 10 nov. 2017 à 16:17
Sachant que sur 81 colonnes je dois en garder 54
Répondre
f894009 12398Messages postés dimanche 25 novembre 2007Date d'inscription 13 novembre 2017 Dernière intervention - 10 nov. 2017 à 17:12
Re,

Si vos fichiers csv ne sont pas confidentiels, pouvez-vous en mettre un a dispo et definir en detail ce que vous voulez en fin de traitement???
Pour le fichier a la limite, passez par la messagerie privee
Répondre
muiigisha 45Messages postés lundi 25 septembre 2017Date d'inscription 13 novembre 2017 Dernière intervention - 13 nov. 2017 à 11:30
Bonjour f894009,
malheureusement mes fichiers sont confidentiels, même ceux en csv :(
c'est quoi la messagerie privée?
Répondre
f894009 12398Messages postés dimanche 25 novembre 2007Date d'inscription 13 novembre 2017 Dernière intervention - 13 nov. 2017 à 11:35
Bonjour,
http://www.commentcamarche.net/faq/8707-messagerie-privee-mp
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !