Filtre avancé

Bonjour,

J'ai réalisé une commande VBA qui est listée ci-dessous. Je fais référence à un champ nom "Criteres_Clients" bien précis et cette commande fonctionne bien.

Toutefois à l'exécution de cette commande, le programme me créé automatiquement un champ nom "Criteres". Comme j'exécute cette commande dans trois autres feuilles avec dautres champs je me retrouve avec un champ nom "Criteres" en trois exemplaires.

Bien évidemment ce phénomène à l'exécution du programme m'affiche un message d'erreur en image ci-joint.

Auriez-vous une réponse pour éviter cette création automatique. Y-a-t-il une syntaxe particulière a utiliser.

Sub Filtrer()

'Procédure permettant de filtrer les données à partir de la zone de critère

Feuil51.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _

Feuil51.Range("Criteres_Clients"), CopyToRange:=Feuil51.Range("W1:AN1"), Unique:=False

End Sub

message alerte xls 2019 02 20 macro

Merci par avance

Bonjour,

Il n'y a pas de doublons, le champ créé a une étendue limitée à sa feuille.

Regarde dans formules > gestionnaire de noms colonne "fait référence à".

Je ne comprends pas l'erreur du coup car je ne l'ai pas quand je fais la même chose !

Voici un exemple

Le filtre est activé par le changement de la feuille

Private Sub Worksheet_Activate()
    Filtrer
End Sub
capture d ecran 463

J'ai compris ... tu ne peux pas en effet avoir plusieurs filtres différents sur la même feuille.

Soit tu fais une seule zone de critères et tu changes les valeurs (quitte à mettre des blancs sur certaines valeurs), soit tu sépares dans des feuilles différentes le résultat comme l'exemple ci-dessus.

Dans ce que je présente, il n' y a qu'un seul filtre par feuille, même si les critères dans le code VBA sont ceux que j'ai nommés, il n'empèche que ça revient systématiquement. De manière manuelle, il est impossible d'avoir deux noms de champ identique dans le gestionnaire. Les critères de sélection s'alimente à partir d'un formulaire.

S'auriez vous me dire ce qui provoque la création du nom. J'ai essayé à partir d'un classeur vierge avec une seule feuille de données, le champ nom "Criteres" s'est également créé. Donc si vous générez un filtre avancé sur plusieurs feuilles avec les critères spécifiques à chacune des feuilles, vous avez autant de nom que de filtres avancés.

L'autre solution transitoire serait de supprimer par code VBA les noms de champ après traitement. Je n'ai pas réussi à trouver la syntaxe pour cette opération, du moins celle que j'ai essayé de mettre en oeuvre n'a pas fonctionné.

Je n'ai pas pu ouvrir ou lire tes éléments joints

Cordialement

Je joins un classeur avec un exemple simple.

Supprimer le nom "Criteres"

Lancer le filtre avancé

Vérifier le dossier de gestion des noms et vous verrez apparaitre le nom "criteres"

Créer une deuxième feuille de données, appliquer un autre filtre vous verrez apparaitre dans la gestion des noms un autre nom "Critère".

Ces deux mêmes noms dans le gestionnaire me posent donc problème.

16filtre.xlsm (10.70 Ko)

Il n'y a aucune macro dans ton fichier.

Quel est le problème ?

Voir ton fichier ci-dessous.

Ces deux mêmes noms dans le gestionnaire me posent donc problème.

Ces noms sont affectés à des feuilles différentes ("fait référence à")

capture d ecran 464
6filtre.xlsm (20.47 Ko)

J'ai modifié le classeur pour qu'il soit représentatif de mon souci actuel.

copie filtre1 copie filtre2 copie filtre3

En résumé, je dois trouver une solution pour que les noms "Criteres" et "Extraire" générés automatiquement par excel soient supprimés du gestionnaire des noms à la fermeture du classeur.

Tu remarqueras que dans la macro, j'ai mis un champ nommé pour le critère. Il n'empèche qu'excel crée quand même par défaut un nom Critères et Extraire.

Soit il existe une solution pour que ces noms par défaut ne puisse se créer, soit les supprimer comme énoncé plus haut.

La suppression manuelle des noms "Criteres" et "Extraire", ne modifie en rien le fonctionnement de la macro.

Pour précision c'est mon outil de cryptage et de protection de mon fichier qui n'accepte pas d'avoir deux noms identiques dans le gestionnaire de noms.

J'espère avoir été plus précis ou plus claire

Merci par avance

Cordialement

Désolé j'ai perdu le fichier excel modifié

Pour précision c'est mon outil de cryptage et de protection de mon fichier qui n'accepte pas d'avoir deux noms identiques dans le gestionnaire de noms.

C'est donc l'information, qui manquait pour comprendre ton soucis.

Excel générera toujours ces noms.

2 solutions alors :

  • soit tu fais une macro plus complexe qui n'utilise pas le filtre avancé
  • soit tu supprimes en fin de macro les noms générés, ce qui est beaucoup plus simple
    Sheets("Feuil1").Range("A1:J30").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("C1:L1"), Unique:=False
    ActiveSheet.Names("Criteria").Delete
    ActiveSheet.Names("Extract").Delete

Bien préciser ActiveSheet et non ActiveWorkbook !! dans ce cas ci.

12filtre.xlsm (21.08 Ko)

Bonjour,

Merci mon souci est résolu, par sécurité j'ai fait un test à la sortie du classeur.

Bonne journée cette réponse me retire une bonne épine du pied.

Rechercher des sujets similaires à "filtre avance"