XL 2019 Lenteur macro (nouveau cas)

Cheyenne_2021

XLDnaute Junior
Bonjour,

La macro est longue je dirais presque 30 sec !

Un fichier avec 6 onglets, sur chacun un tableau structuré de 360 lignes.

Lecture 1er onglet, toutes les lignes, si le statut est = SUPP

Alors

Suppression de la ligne

Onglet 2 :Recherche de la ligne concernée avec RechercheV, suppression de la ligne

Onglet 3 :Recherche de la ligne concernée avec RechercheV, suppression de la ligne

Onglet 4 :Recherche de la ligne concernée avec RechercheV, suppression de la ligne

Onglet 5 :Recherche de la ligne concernée avec RechercheV, suppression de la ligne

Onglet 6 :Recherche de la ligne concernée avec RechercheV, suppression de la ligne

fin



Je ne peux pas utiliser l’accélérateur de Recherche V (avec un SI) par car mes n° ne sont pas triés

Je n’ai pas de Macro "évènementielle superfétatoire".

Je ne peux pas vous mettre le fichier car il est trop lourd, je vous recopie la macro. Je ne mets qu’un des call car ils sont tous strictement identiques.



Public Num_S As Integer

Sub Supprimer_ASUPP()


Call Initialisation_Variables_Public



Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False



Application.DisplayAlerts = False

Dim r As Integer ' indice des lignes dans le tableau T_suivi_DI

'Paramètres pour le RechercheV

Dim numero As Variant

Dim Tableau_num As Range

Dim num_col As Single

Dim valeur_proche As Boolean

indice = ""



Call Deverrouiller_feuille(ActiveWorkbook.Worksheets("1- Suivi des DI & avis n+1"))



Di_Ligne = Range("T_suiviDi").Rows.Count


For r = 1 To Di_Ligne

col_statut = Worksheets("1- Suivi des DI & avis n+1").ListObjects("T_SuiviDi").ListColumns("Statut").Index

col_num = Worksheets("1- Suivi des DI & avis n+1").ListObjects("T_SuiviDi").ListColumns("NumL").Index


If [T_SuiviDi[statut]].Rows(r) = "ASUPP" Then

Num_S = [T_SuiviDi[NumL]].Rows(r)

derniere_ligne = [T_SUPP].ListObject.ListRows.Count

[T_SUPP].ListObject.ListRows.Add

[T_SuiviDi].Rows(r).Copy

[T_SUPP].Rows(derniere_ligne).PasteSpecial Paste:=xlPasteValues

[T_SUPP].Rows(derniere_ligne).PasteSpecial Paste:=xlPasteFormats

'suppression de la ligne dans les onglets 2-3-4-5-6

' ---------------------------------------------------

Call supp_2(Num_S)

Call supp_3(Num_S)

Call supp_4(Num_S)

Call supp_5(Num_S)

Call supp_6(Num_S)


End If

Next


Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

Application.DisplayAlerts = True



Call Verouiller_feuille(ActiveWorkbook.Worksheets("1- Suivi des DI & avis n+1"))

End Sub



Sub supp_2(Num_S As Integer)

Call Deverrouiller_feuille(Onglet_TraitDi)


'Parametres pour le RechercheV

Dim numero As Variant

Dim Tableau_num As Range

Dim num_col As Single

Dim valeur_proche As Boolean

indice = ""

numero = Num_S

Set Tableau_num = Worksheets("2- Traitement des DI").Range("T_TraitDi")

valeur_proche = False

indice = ""

num_col = 1 ' n° de la colone ou est numero

DL_2 = [T_TraitDi].ListObject.ListRows.Count

indice = RECHERCHEV(numero, Tableau_num, num_col, valeur_proche)

'RECHERCHEV_F = WorksheetFunction.VLookup(num_rat, Tableau_num, 2, 0)


If indice <> "#N/A" Then 'numero TW trouvé

' n° de ligne du tableau où il a trouvé le n°

numero2 = Application.Match(Num_S, [T_TraitDi[NumL]], 0)

[T_TraitDi].Rows(numero2).Delete

End If

Call Verouiller_feuille(Onglet_TraitDi)

End Sub

Merci,
 

ChTi160

XLDnaute Barbatruc
Bonjour Cheyenne_2021
Bonjour le Fil ,le Forum

Question:
Que veux tu transférer de la feuille "1- Suivi des DI & avis n+1" à la feuille "7-TW supprimés" avant suppression dans les autres feuilles?
les différents tableaux ou il faut supprimer les Lignes ont ils la répartition des Données ?
merci !
Bonne fin de Journée
jean marie
 

Cheyenne_2021

XLDnaute Junior
Non car l'utilisatrice trie la plupart du temps par nom (et par numero) et ensuite quand elle cree une ligne, elle se créé en entete du tableau. Donc je ne peux pas savoir comment sera l'onglet.
Dans mes differents essais, j'avais tenté de trier les 6 onglets avant de commencer la macro pour pouvoir utiliser l'accelerateur de RechercheV mais le tri prenait 30 sec !
 

ChTi160

XLDnaute Barbatruc
Re
Ok
Merci
je regarde pour utiliser la méthode .Find Dans la colonne "Nom" de tes différents Tableaux !
les Numéros que tu enregistres a la suppresion des Lignes dans la feuille "Ongl_Supp" ne représentent plus rien une fois les Lignes Supprimées ????????
on parle bien de la feuille "7-TW supprimés"
jean marie
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir
une vidéo de ce que j'obtiens d'après ce que j'ai compris !
dans mon fichier je ne supprime pas les Ligne je les colore Lol (pour ne pas avoir a reconstruire )
je Click sur un bouton que l'on ne voit pas et le temps d'exécution s'affiche .

Bonne nuit
jean marie
 

Pièces jointes

  • ListRow_2.gif
    ListRow_2.gif
    75.7 KB · Affichages: 31

Cheyenne_2021

XLDnaute Junior

ChTi160,​

Les lignes que je recopie, ce n'est pas le plus important dans la macro, c'est juste une securité, pour garder une trace des lignes supprimées. Le but de la macro est de supprimer les lignes avec le statut ASUPP.
Le temps dans ta video est le temps de recopie des n° à supprimer, ce serait cette partie qui prendrait du temps ?
 

ChTi160

XLDnaute Barbatruc
Bonjour Cheyenne_2021
Bonjour le Fil ,le Forum
je n'ai pas testé en supprimant les Lignes dans les différentes feuilles , mais en colorant la Ligne!
j'ai aussi pas mal allégé les macros !
il faudrait que je teste avec suppression des Lignes pour voir !
Bonne journée
jean marie
 

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76