Microsoft 365 La même mais en plus rapide

jean123

XLDnaute Occasionnel
Bonjour,
J'ai fait une petite macro simple mais pas efficace en terme de temps de traitement. Si quelqu'un peut améliorer la macro car sur une feuille contenant peu de donnes ça va, mais j'ai un onglet de 90 colonne et 150 000 lignes. Et la, ça coince.
Voici la macro
VB:
Sub test ()
For i = 2000 To 1 Step -1
For j = 90 To 1 Step -1
If Not Cells(i, j).Value Like "*jean*" Then Cells(i, j).Delete Shift:=xlToLeft
Next j
Next i
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Moi je l'écrirais comme ça :
VB:
Sub test()
   Dim T(), L&, C1&, C2&
   T = Cells(1, 1).Resize(2000, 90).Value
   For L = 1 To 2000
      C2 = 0
      For C1 = 1 To 90
         If T(L, C1) Like "*jean*" Then C2 = C2 + 1: T(L, C2) = T(L, C1)
         Next C1
      While C2 < 90: C2 = C2 + 1: T(L, C2) = Empty: Wend
      Next L
   Cells(1, 1).Resize(2000, 90).Value = T
   End Sub
 

Discussions similaires

Réponses
2
Affichages
77

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67