Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…