Microsoft 365 Code pour purger

Marvin57

XLDnaute Occasionnel
Bonjour tout le monde,

dans le fichier ci-joint, je souhaiterai pouvoir en cliquant sur le bouton PURGER de l'onglet "TAB", qu'il me supprime toutes les dates en colonnes "G" qui sont inférieures à la date du jour de la cellule "L1" - 30 jours.

J'ai placé une macro pour cela dans un module mais elle ne fonctionne pas comme je le souhaiterai.

Pourriez-vous S'il vous plaît y jeter un oeil et me dire comment modifier ce code afin qu'il prenne ma demande en compte.

Merci à vous et a +.

Marvin57
 

Pièces jointes

  • Classeur1.xlsm
    16.5 KB · Affichages: 6
Solution
Bonjour.
Comme ça ce serait mieux ? :
VB:
Sub Purger()
   Dim LOt As ListObject, L As Long, CDt As Integer
   Set LOt = Feuil1.ListObjects(1)
   CDt = LOt.ListColumns("DATE").Index
   L = 1
   Do While L <= LOt.ListRows.Count
      With LOt.ListRows(L)
         If .Range(1, CDt).Value <= Date - 31 Then .Delete Else L = L + 1
         End With: Loop
   End Sub

Dranreb

XLDnaute Barbatruc
Bonjour.
Comme ça ce serait mieux ? :
VB:
Sub Purger()
   Dim LOt As ListObject, L As Long, CDt As Integer
   Set LOt = Feuil1.ListObjects(1)
   CDt = LOt.ListColumns("DATE").Index
   L = 1
   Do While L <= LOt.ListRows.Count
      With LOt.ListRows(L)
         If .Range(1, CDt).Value <= Date - 31 Then .Delete Else L = L + 1
         End With: Loop
   End Sub
 

Marvin57

XLDnaute Occasionnel
Bonjour.
Comme ça ce serait mieux ? :
VB:
Sub Purger()
   Dim LOt As ListObject, L As Long, CDt As Integer
   Set LOt = Feuil1.ListObjects(1)
   CDt = LOt.ListColumns("DATE").Index
   L = 1
   Do While L <= LOt.ListRows.Count
      With LOt.ListRows(L)
         If .Range(1, CDt).Value <= Date - 31 Then .Delete Else L = L + 1
         End With: Loop
   End Sub
Bonjour Dranreb, Bonjour @Phil69970


@Dranreb , j'ai mis en place ton code dans mon fichier réel et cela fonctionne pour tous les tableaux.

Merci beaucoup pour ton aide.👍

@Phil69970, Merci également à toi pour ton code, je le garderai sous le coude. Sait-on jamais ;)


Je vous souhaite un bon Week-end à tous les deux, ainsi qu'au forum et à bientôt.

Marvin57
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Marvin57, @Dranreb,@Phil69970, :).

@Dranreb 😜,

J'ai déjà remarqué que certaines opérations sur des tableaux structurés sont longues, voire très longues.

Une simple copie d'une longue colonne sur une colonne d'un TS prend un temps certain.
Pour la demande de ce message, j'ai voulu voir ce que ça donnait pour un TS de 5 000 lignes (ce qui en soit n'est pas énorme).

J'avais fait une procédure analogue à la tienne et ça ramait. J'ai donc pondu une procédure comme au bon vieux temps (colonne supplémentaire pour revenir à l'ordre initial, tri sur la colonne Date et suppression en un seul bloc, retour à l'ordre initial lignes restantes, suppression de la colonne auxiliaire).

La différence entre ta procédure (du moins le principe) est énorme. Je suis presque certain (pas essayé) qu'avec ta "boite à outil" tu irais plus vite. J'ai toujours eu un doute sur l'implantation optimisée des TS.

Dans le fichier joint, la procédure basée sur le principe de la tienne (et aussi le principe de ma première procédure) s'appelle "Purger". La procédure basée sur l'ancienne méthode s'appelle " Hop ".

As-tu aussi une telle différence d'exécution ?
 

Pièces jointes

  • Marvin57- Purger un TS- v1.xlsm
    92.3 KB · Affichages: 3

Marvin57

XLDnaute Occasionnel
Bonjour @Marvin57, @Dranreb,@Phil69970, :).

@Dranreb 😜,

J'ai déjà remarqué que certaines opérations sur des tableaux structurés sont longues, voire très longues.

Une simple copie d'une longue colonne sur une colonne d'un TS prend un temps certain.
Pour la demande de ce message, j'ai voulu voir ce que ça donnait pour un TS de 5 000 lignes (ce qui en soit n'est pas énorme).

J'avais fait une procédure analogue à la tienne et ça ramait. J'ai donc pondu une procédure comme au bon vieux temps (colonne supplémentaire pour revenir à l'ordre initial, tri sur la colonne Date et suppression en un seul bloc, retour à l'ordre initial lignes restantes, suppression de la colonne auxiliaire).

La différence entre ta procédure (du moins le principe) est énorme. Je suis presque certain (pas essayé) qu'avec ta "boite à outil" tu irais plus vite. J'ai toujours eu un doute sur l'implantation optimisée des TS.

Dans le fichier joint, la procédure basée sur le principe de la tienne (et aussi le principe de ma première procédure) s'appelle "Purger". La procédure basée sur l'ancienne méthode s'appelle " Hop ".

As-tu aussi une telle différence d'exécution ?
Bonjour mapomme,

Merci à vous aussi pour votre temps et aide passé sur ma demande. Je vais vraiment étudier et tester cela dans la semaine afin de mieux comprendre vos codes.
En tout cas Un GRAND MERCI à vous tous, c'est sympa de votre part.

Marvin57
 

Discussions similaires

Réponses
8
Affichages
297
Réponses
2
Affichages
206
Réponses
11
Affichages
188
Réponses
2
Affichages
126
Réponses
15
Affichages
362
Réponses
13
Affichages
145
Réponses
19
Affichages
628
Réponses
9
Affichages
137
Réponses
2
Affichages
179
  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
304

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50