IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer les lignes en fonction de la date d'aujourd'hui


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2023
    Messages : 9
    Par défaut Supprimer les lignes en fonction de la date d'aujourd'hui
    Bonjour,

    J'ai créé un fichier "registre visiteur" avec plusieurs feuilles de Janvier à Décembre. Dans chaque feuille j'ai un tableau avec des dates. Je voudrais que les lignes qui contiennent les dates ce supprimes tous les 30 jours.
    J'ai trouvé sur un autre poste https://www.developpez.net/forums/d1.../#post11980707 un script VBA de PatrickToulon qui fonctionne mais par contre je perds toutes les dates pas seulement celle qui expires à 30j. Le filtre fonctionne bien car dans le tableau il sélectionne bien les dates à 30j passés. Ci-dessous ce que j'ai mis:

    Pour info ma colonne E contient les dates

    Sub test()
    limit_date = DateSerial(Year(Date), Month(Date), Day(Date) - 30)
    With ActiveSheet.Range("E5:E100")
    .AutoFilter Field:=1, Criteria1:="<" & CLng(limit_date)
    MsgBox "Supprimer les dates < 30 jours"
    .AutoFilter ' on enleve le filtre
    .SpecialCells(xlVisible).EntireRow.Delete
    End With
    End Sub

    Si vous avez une solution je vous remercie infiniment.

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2023
    Messages : 9
    Par défaut
    J'ai trouvé j'ai supprimé la ligne .AutoFilter ' on enleve le filtre.

    Par contre j'aimerais automatiser ça au lancement du fichier. Si possible également l'avoir sur toutes les feuilles.

    Merci

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, voici la macro pour traiter toutes les feuilles du classeur. Tu peux l'appeler dans l'évènement Workbook_Open pour l'exécuter à l'ouverture du classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub TraitementFeuilles()
     
        Dim ws As Worksheet
        Dim limit_date As Date
     
        ' Définir la date limite à 30 jours avant la date actuelle
        limit_date = DateSerial(Year(Date), Month(Date), Day(Date) - 30)
     
        ' Désactiver les filtres sur toutes les feuilles
        For Each ws In ThisWorkbook.Sheets
            ws.AutoFilterMode = False
        Next ws
     
        ' Parcourir chaque feuille du classeur
        For Each ws In ThisWorkbook.Sheets
            On Error Resume Next ' Ignorer les éventuelles erreurs sur la feuille actuelle
     
            ' Filtrer et supprimer les lignes
            With ws.Range("E5:E100")
                .AutoFilter Field:=1, Criteria1:="<" & CLng(limit_date)
                If .AutoFilterMode Then
                    MsgBox "Supprimer les dates < 30 jours"
                    .SpecialCells(xlVisible).EntireRow.Delete
                    .AutoFilterMode = False ' Désactiver le filtre après la suppression
                End If
            End With
     
            On Error GoTo 0 ' Réactiver la gestion des erreurs par défaut
        Next ws
     
        MsgBox "Traitement terminé sur toutes les feuilles du classeur."
     
    End Sub

  4. #4
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2023
    Messages : 9
    Par défaut
    Un grand merci Franc ça fonctionne parfaitement par contre j'ai 12 fenêtre qui s'ouvre (normal car 12 mois (12 feuilles)). Est il possible d'avoir qu'une seule fenêtre au lieu d'en avoir 12 à valider?

    Ah et je constate qu'a chaque fois que j'ouvre le fichier il me supprime une ligne à chaque fois sur toutes mes feuilles même sans dates d'indiqués.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Si tu parles du msgbox de confirmation, il suffit de le sortir de la boucle et le placer avant par exemple.
    Pour la ligne supprimée je ne vois rien dans le code qui provoque ce comportement. Eventuellement, envoie un fichier pour tester.

  6. #6
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2023
    Messages : 9
    Par défaut
    merci Franc je partage le fichier pour que vous puissiez regarderRegistre-visiteur .xlsm

    Je précise que la ligne 6 ce supprime à chaque ouverture du fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer les lignes en fonction de la date d'aujourd'hui
    Par ghitarais dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/10/2023, 10h13
  2. Supprimer affichage ligne d'un formulaire si date supérieure à aujourd'hui
    Par Marcopololo dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 10/03/2020, 16h08
  3. Somme en fonction de la date d'aujourd'hui
    Par Dev 37C dans le forum Excel
    Réponses: 2
    Dernier message: 03/01/2014, 12h23
  4. [XL-2003] Supprimer les lignes en fonction d'un critère
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2010, 23h30
  5. [XL-2003] supprimer une ligne en fonction d'une date
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/05/2010, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo