A voir également:
- VBA - gestion de beaucoup de données
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
4 réponses
Bonjour,
Tu peux essayer avant ta boucle :
Et ensuite tu remets
Ca pourrait améliorer la vitesse.
Pour ne pas avoir cette sensation de plantage, juste avant ton Next i tu mets :
Tu peux essayer avant ta boucle :
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Et ensuite tu remets
Application.Calculation = varCalcMode
Application.ScreenUpdating = True
Ca pourrait améliorer la vitesse.
Pour ne pas avoir cette sensation de plantage, juste avant ton Next i tu mets :
DoEvents
Merci pour ta réponse ! Je viens d'essayer et il me met variable non définie pour " varCalcMode"... Je suis débutant et ne comprends pas trop pourquoi il me dit ça, ce n'est pas une variable...
Sub suppression_points_sol()
Dim i As Double
With ThisWorkbook.Sheets("Feuil1")
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = .Range("D" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("D" & i).Value = "2" Then
.Rows(i).Delete
End If
DoEvents
Next i
Application.Calculation = varCalcMode
Application.ScreenUpdating = True
End With
End Sub
Bonjour,
Le plus rapide sur excel c'est de filtrer ta colonne et de supprimer les lignes (manuellement ou par macro)
eric
Le plus rapide sur excel c'est de filtrer ta colonne et de supprimer les lignes (manuellement ou par macro)
eric
Bonjour
essai sur 1048576 lignes (toute la colonne)
suppression des lignes avec 2 et non "2" en environ 11 à 12 sec avec un tableau de 8 colonnes commencant colonne A
https://www.cjoint.com/?3EplI7XhmKt
mais on peut peut-^tre aller plus vite en utilisant la technologie ADO pour cela il faudrait mettre en pièce jointe la feuille avec 200 ou 300 lignes et préciser la version Excel...
en attendant,ci dessous le code actuel
Michel
essai sur 1048576 lignes (toute la colonne)
suppression des lignes avec 2 et non "2" en environ 11 à 12 sec avec un tableau de 8 colonnes commencant colonne A
https://www.cjoint.com/?3EplI7XhmKt
mais on peut peut-^tre aller plus vite en utilisant la technologie ADO pour cela il faudrait mettre en pièce jointe la feuille avec 200 ou 300 lignes et préciser la version Excel...
en attendant,ci dessous le code actuel
Option Explicit
Option Base 1
'-------------------------------------------------------------------------
Sub supprimer()
Dim Nbre As Long, Derlig As Long, Dercol As Integer, T_in, T_out
Dim Cptr As Long, idx As Long, Col As Integer
Dim Start As Single
'--- initialisations
Application.ScreenUpdating = False
Start = Timer
'Nbre = Application.CountIf(Columns("D"), 2
With Sheets(1)
Dercol = .Rows(1).Find(what:="*", searchdirection:=xlPrevious).Column
Derlig = .Columns("D").Find(what:="*", searchdirection:=xlPrevious).Row
'mémorisation feuille Excel en RAM
T_in = .Range(.Cells(1, "A"), .Cells(Derlig, Dercol))
ReDim T_out(1 To Derlig, 1 To Dercol)
End With
'--- construction du tableau de sortie si colonne D =2
For Cptr = 1 To UBound(T_in)
If T_in(Cptr, 4) <> 2 Then
idx = idx + 1
For Col = 1 To Dercol
T_out(idx, Col) = T_in(Cptr, Col)
Next
End If
Next
'restitution en feuille2 pour essai
With Sheets(2)
.Range("A1").Resize(UBound(T_out), Dercol) = T_out
.Activate
End With
Application.ScreenUpdating = True
MsgBox "durée: " & Timer - Start & " sec."
End Sub
Michel