Fonction "tri" automatisée qui fonctionne dans un classeur mais pas dans l'autre

Bonjour,

Ci-joint 2 classeurs avec une fonction « tri » automatisée qui fonctionne dans un classeur mais pas dans l’autre.
Je n’arrive pas à comprendre ce qui cloche, j’ai simplement recopié la macro et la feuille d’un classeur (créé avec Excel 2021) à l’autre (créé avec Excel 2019).
Est-ce parce que le classeur dans lequel j’ai fait la copie a été créé dans une version plus ancienne d’excel ? Et dans ce cas que puis-je faire pour « réparer » le problème ?

Merci de prendre le temps de jeter un œil et de m’expliquer si possible ce qui cloche.

20230611 - Test2 - Extraction.xlsm (184,8 Ko)
20211011 - Test1 - Extraction.xlsm (146,4 Ko)

Bonjour,
Soit vous utiliser la fonction Filtre() (de la version recente)
Soit vous utiliser la fonctionnalité Filtre Avancé mais il faut bien respecter l’entête.
Exemple ici : Année et Années ou Nom et Personnel
Cordialement

Bonjour Jacquinot_WILL-FREAD,

Merci pour ta réponse.
j’ai modifié mes entêtes de colonnes pour les harmoniser, mais je me retrouve encore avec une « erreur 1004 »


et je ne vois pas quel champ peut être erroné ou manquant.
De plus je ne comprend toujours pas pourquoi ça fonctionne dans un classeur et pas dans l’autre (dans test1 les entêtes des colonnes sont différentes mais ça fonctionne malgré tout).
Et est-ce que utiliser la fonction « Filtre » serait plus simple ?
= juste remplacer « AdvancedFilter » par « Filter » ??
Désolé pour la question « basique », mais à force de chercher j’ai trouvé tellement de façons différentes de coder que je m’y perd.
Ci-joint le fichier après modification des entêtes.
Cordialement,
20230611 - Test2 - Extraction.xlsm (180,6 Ko)

Je vais essayer a ma façon.
En voici :

Sub UtilisationFiltreAvanceCopierAilleurs()
Sheets("Entrées").Select
Range(Range("B3"), Range("B3").End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Name = "Tbl_a_filtrer"
Sheets("Extraction").Select
Range("A1").CurrentRegion.Select
Selection.Name = "entete"
Range("J1").CurrentRegion.Name = "Critère"

Range("Tbl_a_filtrer").AdvancedFilter xlFilterCopy, Range("Critère"), Range("Entete")

End Sub

Bonjour Bonjour Jacquinot_WILL-FREAD

Merci.
J’ai remplacé le code du module « modfiltreavance » par le tien mais je n’ai rien changé dans Feuil3(extraction).
Ta solution fonctionne, mais elle génère un message (ci-dessous)


qu’il n’y avait pas auparavant.
Et aussi dans la zone de critère il y a 4 lignes possibles, mais la mise à jour du filtre ne se fait pas de façon systématique lorsque je rentre un critère sur les lignes 2, 3 ou 4, mais seulement lorsque je remodifie un critère sur la ligne 1. Est-ce normal ?

20230611 - Test2(2) - Extraction.xlsm (186,1 Ko)

J’ai rajouté deux ligne,
Pour ignorer l’message :

Application.DisplayAlerts = False

et pointer sur la cellule A1

range("A1").select

J’ai aussi rajouter des valeurs dans la colonne I pour l’événement que vous avez mis dans la feuille3
20230611 - Test2(2) - Extraction.xlsm (189,8 Ko)

Cordialement

Le message a bien disparu :+1:, mais maintenant quel que soit le critère sélectionné, on retrouve l’ensemble du tableau à filtrer dans le résultat. Il n’y a plus de tri !

Concernant l’évènement dans Feuil3, il s’agit bien de la macro qui déclenche automatiquement le Filtre Avancé lorsqu’on sélectionne un critère ?
Pourquoi doit-on rajouter des valeurs en colonne I ? quel en est le sens ?

Re,
Voici une petite mise a jour,
J’ai modifier votre évènement et j’ai enlevé des valeurs 1 :
20230611 - Test2(2) - Extraction.xlsm (179,1 Ko)

Cordialement

Re,
Le fichier Test2(2) fonctionne parfaitement !

Mais lorsque je recopie les deux macros dans Feuil3 et dans le module « modFiltreAvance » du classeur de destination (l’original) alors je me retrouve à nouveau avec le message de départ « erreur 1004 ».
sur l’instruction « Range(« Tbl_a_filtrer »).AdvancedFilter xlFilterCopy, Range(« Critère »), Range(« Entete ») »

Le classeur « Test2 » est pourtant le même classeur simplement expurgé des données personnelles et un tableau à filtrer un peu allégé.
J’ai bien vérifié que j’avais modifié les entêtes des colonnes correctement (Personnel - Années) afin que cela sois identique à ce qui a été corrigé dans « Test2 »

Qu’est-ce qui dans votre code avait contourné ce problème au départ et qui ne fonctionne pas dans le classeur final ?

Bonjour,
J’ai fais des modifications sur l’évènement que vous avez dans la feuil3 :

Private Sub Worksheet_Change(ByVal Target As Range)

    'On teste qu'il y ai au moins 1 critère
    If Target.Cells.Count > 1 Then Exit Sub
    'On teste si pas de critères saisis (donc une seule ligne en-tête)
    If Feuil3.Range("J1").CurrentRegion.Count > 3 Then
        Call EffacePlage
        Call UtilisationFiltreAvanceCopierAilleurs
        Else
       Call EffacePlage
    End If
End Sub

Cordialement

Re,

Je viens juste de tester dans le classeur original, j’ai toujours le même message :

image

sur la commande

Range(« Tbl_a_filtrer »).AdvancedFilter xlFilterCopy, Range(« Critère »), Range(« entete »)

Cordialement,

Tu pourrais pas faire une capture du fichier original ?
Essayer de voir si vous avez un espace de plus sur vos entêtes.

Voila les captures dans le fichier original des différentes entêtes utilisées

Et pour les noms des feuilles?,
Essayer de voir si les noms des feuilles ont des espaces.

20230611 - Test2(2) - Extraction.xlsm (195,4 Ko)

RE : Cow18
20230811 - V - F - RF - test1.xlsm (229,5 Ko)
Ficher original du boulot expurgé (identités) sans autre modification, avec votre proposition => il ne se passe plus rien du tout !?? Alors que le fichier test fonctionne très bien !

RE : Jacquinot WILL-FREAD
Vous pouvez vérifier dans le fichier ci-dessus, il n’y a pas d’espace.

Dans tous les cas, ces fichiers sont des copies faites au fur et à mesure il ne devrait donc pas y avoir de différence, ce qui rend le problème encore plus difficile à comprendre, pour moi en tous cas.

Cordialement

il y a un « password » sur ce fichier

Oups "désolé … le fichier sans mot de passe
20230811 - V - F - RF - test1.xlsm (216,8 Ko)

Bonjour @JoBar ,

J’ai utilisé les mêmes codes que l’test.
Il y avait eu 2 fautes,
1-Dans la feuille Entrée Votre tableau commence par A2 et dans le test A3
2-Sur l’entête de critère vous avez Nom à la place de Personnel

Voici la correction par rapport à ce que vous avez. (l’évènement est comme celui du test)
20230811 - V - F - RF - test1.xlsm (216,2 Ko)
Cordialement,

presque la même chose que Jacquinot …
20230811 - V - F - RF - test1 (2).xlsm (239,1 Ko)

1 « J'aime »