Macro ou tableau croisé ou autres

Bonjour à toutes et à tous avec mes meilleurs voeux

Un petit (ou grand problème) sur excel et voila la situation:

J'ai 3 colonnes :

A = date (exemple 30/12/2009)

B = Heures, minutes, seconde ( exemple 01:00:00)

C = Donnée observée sur un appareil (exemple 300)

Mon problème c'est que lors d'un reparamétrage de l'appareil, celle-ci me donne pour chaque jour 60 valeurs pour chaque heures (une valeur par minute), or je n'ai besoin que d'une valeur par heure (valeur qui correspond à la première minute de chaque heure)...je me retrouve donc avec un nombre important de lignes pour chaque jours (60*24 = 1440 au lieu de 24 lignes).

Y'a t'il un moyen de supprimer automatiquement les différents lignes qui se situent entre 01:00:00 du jour X au 01:23:59 du même jour...et ainsi de suite...c'est des tableaux de plusieurs mois et sur plusieurs années...le faire manuellement c'est (quelqu'un peut me mettre sur un exemple de macro sachant que ce n'est pas ma tasse de thé ou par un tableau croisée dynamique...et là aussi je bloque !!!

Merci

Bonjour et bienvenue sur le forum NIZAREDDALI,

Est-il possible que tu joignes un bout de ton fichier avec assez de données pour qu'on puisse travailler dessus?

Merci pour la réponse...voici un exemple de fichier que j'ai appelé tableau croisé macro filtre. J'ai mis en gras les 3 premières valeurs des trois premières heures que je souhaite gardé (en exemple). Il faut que le filtre correspond à chaque 1ère minute de chaque heure...Merci

-- 30 Déc 2009, 12:39 --

Re

Petite rectification dans mon premier message j'ai noté "Y'a t'il un moyen de supprimer automatiquement les différents lignes qui se situent entre 01:00:00 du jour X au 01:23:59 du même jour...et ainsi de suite..." en fait c'est entre 01:00:00 et 01:59:00 ... tête en l'air parfois

NIZAREDDALI a écrit :

or je n'ai besoin que d'une valeur par heure (valeur qui correspond à la première minute de chaque heure)

est différent de :

NIZAREDDALI a écrit :

en fait c'est entre 01:00:00 et 01:59:00

Si tu veux garder la valeur qui correspond à la première minute de chaque heure, il faut supprimer les valeurs entre 01:01:00 et 02:01:00, les bornes étant exclues.

Est-ce que tu confirmes?

OUI exactement... l'essentiel pour moi est de récupérer la valeur de la première minute de chaque heure ..merci

Re,

Nan en fait tu avais raison!

Voici une macro de Boisgontier ( http://boisgontierjacques.free.fr/ ) modifiée à exécuter :

Sub supprime()
    Application.ScreenUpdating = False
    Columns("c:c").Insert Shift:=xlToRight
    [C:C].Style = "Comma"
    [C2].FormulaR1C1 = "=IF(MINUTE(RC[-1])=0,0,1)"
    [C2].AutoFill Destination:=Range("C2:C" & [A65536].End(xlUp).Row)
    [C:C].Style = "Comma"
    [C:C].Value = [C:C].Value
    [A2].CurrentRegion.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess
    [C:C].Replace What:="1", Replacement:="", LookAt:=xlPart
    Range("C2:C65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Columns("C:C").Delete Shift:=xlToLeft
End Sub

Bonjour

Merci vba_new ...c'est magnifique ...mes meilleurs voeux

-- 30 Déc 2009, 14:40 --

et évidemment merci à Boisgontier

Salutations

2btsag.xlsx (54.75 Ko)

Re,

N'oublie pas de mettre le post en résolu!

Dans le post, il y a un petit bouton avec un "V" vert à l'intérieur, suffit de cliquer dessus

Bonjour à tous,

j'arrive à la bourre !

autre façon, filtre sur autre feuille

Sub filtre()
''Macros par Claude Dubois pour "NIZAREDDALI" Excel-Pratique le 30/12/09
Dim Lg&, Sh$
Sh = ActiveSheet.Name
    If Sheets(1).Name = "dudu" Then Exit Sub
    Application.ScreenUpdating = False
    Application.CutCopyMode = False

    Sheets.Add.Name = "dudu"
    With Sheets(Sh)
        .Rows(1).EntireRow.Insert
        .Cells(1, 1) = "jour"
        .Cells(1, 2) = "heure"
        .Cells(1, 3) = "code"
        Lg = .Range("A65536").End(xlUp).Row
        .Range("j2").Formula = "=minute($b2)=1"
        .Range("a1:c1").Copy Destination:=Range("dudu!a1")
        .Range("a1:c" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        .Range("j1:j2"), CopyToRange:=Range("dudu!a1:c1"), Unique:=False
        .Range("j2").Clear
        .Rows(1).Delete
    End With
End Sub

Bonne journée

Claude.

Rechercher des sujets similaires à "macro tableau croise"