Macro, Copier Table dans une Feuille puis filtrer et trier

Bonjour,

Lorsque j'appuie sur le Bp "HYG L1/L2" se trouvant dans l'onglet "SCHEDULE", j'aimerais copier la table qui se trouve dans la Feuille "SCHEDULE" et la coller dans "HYGL1".

Ensuite j'aimerais filtrer sur la colonne "révision" suivant la valeur "HYG L1" et puis trier de A à Z sur la colonne "Jour".

Avec l'enregistreur de macro j'ai réussit à copier mais ça bloque lorsque l'on lance le filtre car le nom de table se trouvant dans la feuille est différente de la macro.

Comment puis je faire un trie et un filtre si le nom de la table est changeant?

Merci

Bonjour,

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour,

Effectivement j'avais oublié le fichier

Re,

Une proposition à étudier.

Cdlt.

Option Explicit

Sub CopyToHygL1()
Dim wsData As Worksheet, wsDestination As Worksheet
Dim rng As Range, rCell As Range
    Set wsData = Worksheets("SCHEDULE")
    Set wsDestination = Worksheets("HYG L1")
    With wsData.ListObjects(1)
        If .ShowAutoFilter Then .AutoFilter.ShowAllData
        .Range.AutoFilter field:=10, Criteria1:="HYG L1"
        With .AutoFilter.Range
            On Error Resume Next
            Set rng = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
                      .SpecialCells(xlCellTypeVisible)
            On Error GoTo 0
        End With
    End With
    If rng Is Nothing Then
        MsgBox "Il n'y a pas de données correspondantes au critère " & "HYG L1" & "."
        Exit Sub
    Else
        With wsDestination.ListObjects(1)
            If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
            Set rCell = .InsertRowRange.Cells(1)
        End With
        Set rng = wsData.ListObjects(1).AutoFilter.Range
        rng.Offset(1, 0).Resize(rng.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
        With rCell
            .PasteSpecial xlPasteValues
            .PasteSpecial xlPasteColumnWidths
        End With
        With wsDestination.ListObjects(1)
            .Sort.SortFields.Add .ListColumns(8).DataBodyRange, xlSortOnValues, xlAscending
            .Sort.Apply
            .Sort.SortFields.Clear
        End With
        wsData.ListObjects(1).Range.AutoFilter field:=10
    End If
End Sub

Bonjour,

Merci de ton aide j'ai essayé, mais cela ne fonctionne pas.

Re,

Pour quelle raison as-tu supprimé le tableau (vierge) de la feuille HYG L1 ?

Il faut le conserver. Il est réinitialisé chaque fois que tu lances la procédure.

Cdlt.

Je n'ai pas accés au fichier avec macro sur mon laptop du boulot car ils sont bloqué par ma boîte, jai juste pu copier la macro et je n'ai pas pu voir le tableau vierge.

Je vais l'ouvrir sur un autre poste afin d'avoir accés au fichier complet.

merci

Re,

Okay.

Je suppose que tu voudras la même chose pour HYG L2.

Dans l'affirmative, tu rediras.

Cdlt.

Merci Jean-Eric,

ca fonctionne mieux avec le fichier complet.

Effectivement je vais avoir besoin de copier dans la feuille "HYG L2"

Je pensais doubler le code en changeant les variables mais c'est surement plus complexe que cela!

Bonjour Jean Eric,

Aprés différents essais infructueux hier soir et ce matin, peux tu m'aider à ce que la même chose se produise aumême momment sur la feuille"HYG L2", lors de l'appuie sur le Bp "Hyg L1/ L2".

Merci

Bonjour,

Une nouvelle proposition à étudier.

A te relire.

Cdlt.

Bonjour Jean Eric,

Cela fais une 15 aine de jour que je fais tourner le fichier, il fonctionne impeccable.

merci de ton aide.

Cependant j'ai encore une question, si l'une des valeures sur laquelle s'applique le filtre est absente la macro se met en erreur.

Comment puis je contourner ce probléme?

Bonjour,

Ton fichier en retour de ce j'ai compris.

Cdlt.

Rechercher des sujets similaires à "macro copier table feuille puis filtrer trier"