• Initiateur de la discussion Initiateur de la discussion gerardd3617
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gerardd3617

Guest
bonsoir
j'ai recuperé 2 macros mais je trouve que la recherche est long "45 secondes "pour 250 lignes
pouvez vous regarder
cordialement
 
Dernière modification par un modérateur:
Re : macro qui est lente

Bonsoir,

Cette macro :
Code:
Sub CopiLign()
var1 = Time
Application.ScreenUpdating = False
   With Sheets("source")
       For Each cel In .Range("A5:A" & .Range("A65000").End(xlUp).Row)
           If cel.Offset(0, 1) > 0 Then
           cel.Resize(1, 3).Copy Sheets("recap").Range("A65000").End(xlUp).Offset(1, 0)
           End If
       Next
   End With
Application.ScreenUpdating = True
MsgBox Format(Time - var1, "hh:mm:ss")
End Sub

met 20 secondes sans le Application.ScreenUpdating = False
et met 3 à 4 secondes avec le Application.ScreenUpdating = False

pour 1157 lignes dans Source

Dans l'autre Macro, il y a un Select, je n'ai pas testé ...
 
Dernière édition:
Re : macro qui est lente

Re,

Dans la macro où il y a les Select, à mon avis c'est normal que ça soit long.
Le Select perd du temps.
As tu tester la macro que j'ai posté ?
Chez moi, c'est 4 secondes pour 1100 lignes.
Si chez toi c'est plus long, c'est peut etre aussi lié à ta config matériel ...
 
Re : macro qui est lente

Bonjour gerardd3617
Bonjour Catrice

Ci dessous la macro de légèrement Catrice modifiée
Code:
Sub CopiLign2()
var1 = Time
Dim lig As Long
With Sheets("recap")
lig = .Range("A65000").End(xlUp).Row + 1
Application.ScreenUpdating = False
       For Each cel In Sheets("source").Range("A6:A" & Sheets("source").Range("A65000").End(xlUp).Row)
           If cel.Offset(0, 1) > 0 Then
           cel.Resize(1, 20).Copy .Range("A" & lig)
           lig = lig + 1
           End If
       Next
   End With
Application.ScreenUpdating = True
MsgBox Format(Time - var1, "hh:mm:ss")
End Sub
5 secondes pour 4000 lignes
A tester
 
Re : macro qui est lente

bonjour gerardd3617

Salut Catrice
Salut Mj13
Salut jp14

En profitant du fait qu'en colonne AK tu as l'indication de ligne vide

Code:
Sub copie()
With Sheets("source")
  Application.ScreenUpdating = False
        For n = 6 To .Range("A65536").End(xlUp).Row
            If .Range("AK" & n) <> 0 Then
            .Range(.Cells(n, 1), .Cells(n, 36)).Copy Destination:=Sheets("recap").Range("A65000").End(xlUp).Offset(1, 0)
            End If
        Next
    End With
 Application.ScreenUpdating = True
End Sub

Environ 50 fois plus rapide que Recheche2 chez moi
 
Re : macro qui est lente

Bonjour gerardd3617, pierrejean, le fil,

Pierre-Jean étant déconnecté,

Il te faut donc déprotéger ta feuille avec en début de macro, juste après le With Sheets("source") :

ActiveSheet.Unprotect ("ton mot de passe s'il y en a un")

et avant le End Sub :

ActiveSheet.Protect ("ton mot de passe s'il y en a un")

Bon après-midi.

Jean-Pierre
 
Dernière édition:
Re : macro qui est lente

j'ai testé toute vos macros sur un fichier teste avec plus de 200 lignes.
resultat quelques secondes pour toutes les macros que vous m'avez envoyer.
mais sur mon programme 28 secondes pour tous
gégé
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
869
Réponses
7
Affichages
369
Retour