Lenteur de suppression
Résolu/Fermé
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
-
20 juil. 2016 à 11:14
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 - 21 juil. 2016 à 15:27
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 - 21 juil. 2016 à 15:27
A voir également:
- Lenteur de suppression
- Lenteur pc - Guide
- Forcer suppression fichier - Guide
- Suppression page word - Guide
- Suppression compte instagram - Guide
- Suppression compte facebook - Guide
5 réponses
Utilisateur anonyme
20 juil. 2016 à 11:23
20 juil. 2016 à 11:23
Personnellement j'ai testé ton code et il n'y a aucune lenteur...
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
Modifié par f894009 le 20/07/2016 à 11:50
Modifié par f894009 le 20/07/2016 à 11:50
Bonjour a vous deux,
pour eviter l'interruption par les evenements Excel
et
figeage/defigeage ecran pour gain de temps
pour eviter l'interruption par les evenements Excel
Application.EnableEvents = False 'stop Application.EnableEvents = True 'start
et
figeage/defigeage ecran pour gain de temps
Application.ScreenUpdating = False Application.ScreenUpdating = True
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
Modifié par Fahora le 20/07/2016 à 11:58
Modifié par Fahora le 20/07/2016 à 11:58
Bonjour F894009,
Malheureusement, après essai. Ca n'augmente pas la vitesse de mon programme :(
Ca reste à une suppression toutes les demi secondes a peut près ...
On est bien d'accord que dans mon cas :
Vient en premier dans mon code ?
Malheureusement, après essai. Ca n'augmente pas la vitesse de mon programme :(
Ca reste à une suppression toutes les demi secondes a peut près ...
On est bien d'accord que dans mon cas :
Application.EnableEvents = False
Vient en premier dans mon code ?
Utilisateur anonyme
>
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
20 juil. 2016 à 13:08
20 juil. 2016 à 13:08
Oui ça vient en premier car il faut stopper avant de démarrer
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
20 juil. 2016 à 17:22
20 juil. 2016 à 17:22
Bonjour,
une méthode beaucoup plus rapide : filtrer, supprimer les lignes filtrées.
Récupère le plus gros à l'enregistreur de macro et fait les finitions à la main de façon que ça englobe la taille maxi de ta base.
Si pb tu dis...
Sinon dans une boucle de suppression il faut absolument faire de bas en haut. Non pas pour le temps mais pour que ce soit correct tout simplement.
eric
une méthode beaucoup plus rapide : filtrer, supprimer les lignes filtrées.
Récupère le plus gros à l'enregistreur de macro et fait les finitions à la main de façon que ça englobe la taille maxi de ta base.
Si pb tu dis...
Sinon dans une boucle de suppression il faut absolument faire de bas en haut. Non pas pour le temps mais pour que ce soit correct tout simplement.
eric
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
21 juil. 2016 à 08:41
21 juil. 2016 à 08:41
Bonjour Eric et merci de ton intervention.
Je vais essayer l'histoire du filtre.
Je ne comprends pas trop en quoi le "correct" de bas en haut mais bon.
Je vais essayer l'histoire du filtre.
Je ne comprends pas trop en quoi le "correct" de bas en haut mais bon.
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
21 juil. 2016 à 09:44
21 juil. 2016 à 09:44
Bonjour,
Je ne comprends pas trop en quoi le "correct" de bas en haut mais bon.
Tu contrôles et supprimes la ligne 5, toutes remontent et la 6 devient la 5.
Tu fais Next ligne, tu passes donc au contrôle de la 6.
Seulement la 6 est l'ex 7 et tu n'as pas testé l'ex 6 devenue 5.
Compris ou pas très clair ?
eric
Je ne comprends pas trop en quoi le "correct" de bas en haut mais bon.
Tu contrôles et supprimes la ligne 5, toutes remontent et la 6 devient la 5.
Tu fais Next ligne, tu passes donc au contrôle de la 6.
Seulement la 6 est l'ex 7 et tu n'as pas testé l'ex 6 devenue 5.
Compris ou pas très clair ?
eric
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
21 juil. 2016 à 10:10
21 juil. 2016 à 10:10
Oui oui , d'où l'interet de quand je supprime une ligne , j'enleve 1 à mon incrémentation
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
21 juil. 2016 à 10:34
21 juil. 2016 à 10:34
On peut aussi faire comme ça oui.
Je n'avais pas regardé en détail vu que le topic était déjà bien avancé et que je proposais juste une autre méthode.
Je n'avais pas regardé en détail vu que le topic était déjà bien avancé et que je proposais juste une autre méthode.
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
>
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
21 juil. 2016 à 10:40
21 juil. 2016 à 10:40
Bonjour eriiic,
Son probleme est plutot lie aux evenements feuille car il y a du code dans le VBA de la feuille de suppression (voir Fahora - 20 juil. 2016 à 11:41 ). Je lui ai mis les instructions pour, mais sans son fichier, pas vraiment possible de comprendre
Son probleme est plutot lie aux evenements feuille car il y a du code dans le VBA de la feuille de suppression (voir Fahora - 20 juil. 2016 à 11:41 ). Je lui ai mis les instructions pour, mais sans son fichier, pas vraiment possible de comprendre
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
Modifié par eriiic le 21/07/2016 à 11:58
Modifié par eriiic le 21/07/2016 à 11:58
exemple suppression par filtre : https://www.cjoint.com/c/FGvjYxtZ14Q
PS: après avoir jeté un oeil à ton fichier si c'est toujours lent tu pourrais ajouter au début en plus de la désactivation des événements :
et restaurer après
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
PS: après avoir jeté un oeil à ton fichier si c'est toujours lent tu pourrais ajouter au début en plus de la désactivation des événements :
With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With With Sheets("Feuil1") ' pour chaque feuille ' >=2007: calcul formats conditionnels .EnableFormatConditionsCalculation = False End With
et restaurer après
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
Modifié par Fahora le 21/07/2016 à 13:52
Modifié par Fahora le 21/07/2016 à 13:52
Merci Eric , Je teste ça.
Comment faire pour faire un filtre sur tous ce qui n'est pas vide ?
Comment faire pour faire un filtre sur tous ce qui n'est pas vide ?
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
>
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
21 juil. 2016 à 14:24
21 juil. 2016 à 14:24
Re,
code eriiic modifie pour cellules non vide
code eriiic modifie pour cellules non vide
Sub supp() 'Range("$A$1").AutoFilter Field:=1, Criteria1:="=" 'cellules vide Range("$A$1").AutoFilter Field:=1, Criteria1:="<>" 'cellules non vide On Error Resume Next Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase").Rows.Count - 1) _ .SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp On Error GoTo 0 Range("$A$1").AutoFilter Field:=1 End Sub
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
21 juil. 2016 à 14:35
21 juil. 2016 à 14:35
Malheureusement , j'avais déjà essayé avec " <> " et ça me supprime tout...
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
21 juil. 2016 à 14:37
21 juil. 2016 à 14:37
Mon filtre est sur la colonne V, j'ai donc changé Range($A$1) par Range($V$1), on est bien d'accord ?
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
Modifié par eriiic le 21/07/2016 à 15:19
Modifié par eriiic le 21/07/2016 à 15:19
C'est le Field qui indique la colonne.
La cellule importe peu, jamais compris à quoi elle servait.
La cellule importe peu, jamais compris à quoi elle servait.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
tu compte déjà 3000 ligne et moi 869 dur
voila un model
A+
Maurice
tu compte déjà 3000 ligne et moi 869 dur
voila un model
Sub Test() NbLig = Range("A" & Rows.Count).End(xlUp).Row For I = NbLig To 2 Step -1 If Not (IsEmpty(Cells(I, 18))) Then Rows(I).Delete End If Next I End Sub
A+
Maurice
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
Modifié par f894009 le 21/07/2016 à 12:15
Modifié par f894009 le 21/07/2016 à 12:15
Bonjour,
Normal avec sa ligne de code:
Il faut "simplement" ne pas oublier d'enregistrer a chaque modif de la feuille en cause et meme avec ca c'est pas le top
La methode filtre de eriiic, elle est top, pas besion de comptage
Normal avec sa ligne de code:
NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
Il faut "simplement" ne pas oublier d'enregistrer a chaque modif de la feuille en cause et meme avec ca c'est pas le top
La methode filtre de eriiic, elle est top, pas besion de comptage
20 juil. 2016 à 11:26
Je n'ai pas beaucoup de lignes , mais j'ai quelques onglets pour lequel cette maccro est utilisée. En tout et pour tout , j'ai environ 900 lignes et la maccro met 30 minutes...
Combien de temps prend t'elle pour toi , dans un tel échantillon ?
Modifié par keke38000 le 20/07/2016 à 11:29
20 juil. 2016 à 11:38
Dans ma colonne (22), je n'ai pas de formule ou quoi ce soit... Juste une chaine de caractère...
Dans le doute , est ce que le fait qu'il y ait une formule pourrait ralentir le process ?
Modifié par Fahora le 20/07/2016 à 11:41
Je pense avoir compris ...
J'ai une fonction qui vérifie à chaque changement du classeur ...
As tu une idée pour suspendre cette routine pendant la suppression des lignes ?
Modifié par keke38000 le 20/07/2016 à 11:49
C'est ce que j'utilise moi quand je suis dans ton cas