Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Suppression de données en fonction de deux critères

Yuee

XLDnaute Nouveau
Bonjour à tous ,

Je débute avec VBA , et je voulais savoir s'il était possible de créer une macro qui a pour but de supprimer des données entre deux dates (composé de jour/mois/année heure )en colonne A et d'un tag présent en ligne 4.

Merci d'avance

Bonne journée à tous

Yuee
 

Pièces jointes

  • Test.xlsx
    60.3 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Yuee, et bienvenu sur XLD,
En ligne 4 vous avez les intitulés de colonne. De quel tag parlez vous ? ( #Horodate ? )
Sur quels critères doit on supprimer les données ? Entre quelle date et quelle date ?
Doit on effacer les données, ou supprimer les lignes ?
 

Yuee

XLDnaute Nouveau
Bonjour Sylvanu,

Merci beaucoup

Oui il faut supprimer les données en fonction de l'horodatage présent en colonne A et des tags présents en ligne 4 , mais les tags et heures peuvent changer ce ne sont pas des données fixe.
Pensez vous que c'est possible de créer une macro qui retire les données en fonction d'une plage horaire définie que je définie par la colonne A et d'un ou plusieurs tag présent en ligne 4 que je définie également? Il faut effacer les données et pas supprimer la ligne.
 

Yuee

XLDnaute Nouveau
on doit les supprimer en fonction de l'heure et du tag , Par exemple , des tests on eté effectuer entre 8h et 12h le 25/08 sur le CAA.32.S0.GAZ_1.CH4.MES_VAL_TM:Valeur il faut supprimer les valeurs.

J'ai trouvé ce bout de code , et l'idée c'est de pouvoir sélectionner une date de début et de fin ainsi qu'un tag et de pouvoir supprimer les données durant cette période.

Voilà le bout de code que j'ai trouvé, ça peut servir de départ.

Sub test()
Debut = InputBox("Quelle est la date de début d'analyse ? (jj/mm/aa)", "Date début")
Fin = InputBox("Quelle est la date de fin d'analyse ? (jj/mm/aa)", "Date fin")
For Each X In Range("A1:" & Range("A65536").End(xlUp).Address)
If X >= CDate(Debut) And X <= CDate(Fin) Then X.Clear
Next
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ en gardant la même structure que votre macro, avec :
Code:
Sub test()
    Debut = InputBox("Quelle est la date de début d'analyse ? (jj/mm/aa)", "Date début")
    If Not IsDate(Debut) Then
        MsgBox "La date de début n'est pas une date": Exit Sub
    End If
    Fin = InputBox("Quelle est la date de fin d'analyse ? (jj/mm/aa)", "Date fin")
    If Not IsDate(Fin) Then
        MsgBox "La date de fin n'est pas une date": Exit Sub
    End If
    Tag = InputBox("Quelle est le TAG concerné ? ", "TAG")
    If Application.CountIf([4:4], Tag) = 0 Then
        MsgBox "Ce tag n'existe pas": Exit Sub
    End If
    C = Application.Match(Tag, [4:4], 0)
    For L = 5 To Range("A65500").End(xlUp).Row
        If Cells(L, "A") >= CDate(Debut) And Cells(L, "A") <= CDate(Fin) And Cells(4, C) = Tag Then
            Cells(L, C) = ""
        End If
    Next L
End Sub
 

Pièces jointes

  • Test (32).xlsm
    65.8 KB · Affichages: 1

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…