Microsoft 365 Code pour purger

  • Initiateur de la discussion Initiateur de la discussion Marvin57
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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.
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
402
Réponses
15
Affichages
748
Réponses
2
Affichages
435
Réponses
13
Affichages
436
Réponses
23
Affichages
889
Réponses
22
Affichages
935
Réponses
8
Affichages
443
Réponses
93
Affichages
4 K
Réponses
9
Affichages
379
Réponses
32
Affichages
1 K
Réponses
8
Affichages
666
Réponses
11
Affichages
499
Retour