Simplifier macro pour gain de temps

tben08

XLDnaute Occasionnel
Bonjour,

Voici ma macro que j’exécute sur un fichier de plus de 200 000 lignes :

Code:
 Sub suppression_doublons()
        vchrono = Now()
        Dim B As String
        B = InputBox("Quelle est la colonne pour supprimer les 3?")
        If B = "" Then
            'MsgBox "annulé"
       Exit Sub
        Else
        End If
             Dim C As String
        C = InputBox("Quelle est la colonne pour supprimer les doublons?")
     
     
        If C = "" Then
            MsgBox "annulé"
        Exit Sub
        Else
        End If
     
        Dim z As Long
        Partir du bas du tableau
        For z = Range(B & Rows.Count).End(xlUp).Row To 2 Step -1
        If Range(B & z) = "3" Then Range(B & z).EntireRow.Delete xlShiftUp
        Next z
     
     
    Dim i&, l&, t()
         With Feuil1.Columns(C & ":" & C)
        l = .Cells(.Rows.Count).End(xlUp).Row
        t = Range(.Cells(1), .Cells(l)).Value
        With Application: .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = -4135: End With
        For i = l To 3 Step -1
          If Not IsEmpty(t(i, 1)) Then If AscW(t(i, 1)) <> 9658 And IsEmpty(t(i - 1, 1)) Then .Cells(i).Value = Chr(33) & .Cells(i).Value: i = i - 1: .Parent.Rows(i).Delete
        Next
        With Application: .Calculation = -4105: .EnableEvents = 1: .ScreenUpdating = 1: End With
      End With
          Cells.Replace What:="!", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
      vchrono = Now() - vchrono
    MsgBox Format(vchrono, "h:mm:ss")
      MsgBox ("traitement terminé")
    End Sub

Elle dure 20 minutes ce qui est quand même long. Je voulais donc savoir si il y avait des choses à enlever pour gagner du temps.

Merci pour votre aide
 

pierrejean

XLDnaute Barbatruc
Re : Simplifier macro pour gain de temps

Re

Le nombre de colonnes est_il constant ?
S'agissant des doublons , peux-tu préciser ? : Le code fait mention de points d'interrogation ,de points d'exclamation , d'espace a ajouter
NB: Cette partie du code me fait d'ailleurs penser a l'un de nos amis qui n'a pas coutume de créer des macros trop lentes
 

tben08

XLDnaute Occasionnel
Re : Simplifier macro pour gain de temps

Non le nombre de colonne peut varier c'est pour ça que j'y ai mis des inputbox. La suppression des 3 je vais l'enlever ça va olus vite de le faire manuellement. Pour l'autre en fait c'est des qu'il y a un code analytique il faut supprimer la ligne du dessus qui est le doublon mais qui n'a pas le code analytique.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400