FILTRE : extraire automatiquement les lignes selon l’intervalle de matricules.

 

FILTRE  : extraire automatiquement les lignes selon l’intervalle de matricules.


=FILTER(Liste_Paie_Personel;(Liste_Paie_Personel[Matricule] >=B1)*(Liste_Paie_Personel[Matricule] <=C1); "Aucun résultat")

il m'affiche #NOM?

Le message #NOM? signifie que Excel ne reconnaît pas la fonction ou un nom dans votre formule.
Dans votre cas, il y a 3 causes possibles (et comment corriger) :

1) Fonction en français : utilisez FILTRE (pas FILTER)

En Excel français, la fonction s’appelle FILTRE.
Essayez exactement :

=FILTRE(Liste_Paie_Personel ; (Liste_Paie_Personel[Matricule] >= B1) * (Liste_Paie_Personel[Matricule] <= C1) ; "Aucun résultat")

NB : il faut qu'il n'y pas une colonne vide  avant la colonne Matricule vous pouvez la mettre en fin du tableau pas au début

2) Vérifier le nom du tableau et le nom de la colonne

L’erreur apparaît aussi si Excel ne trouve pas le nom Liste_Paie_Personel ou la colonne Matricule.

  • Cliquez dans votre source → onglet Création de tableau → regardez le Nom du tableau (par ex. Tableau1, T_Paie, etc.).
  • Regardez l’orthographe exacte de la colonne (espaces, majuscules, accents).
  • Ajustez la formule en conséquence.

Exemples :

=FILTRE(T_Paie ; (T_Paie[Matricule] >= B1) * (T_Paie[Matricule] <= C1) ; "Aucun résultat")

ou

=FILTRE(Tableau1 ; (Tableau1[Matricule] >= B1) * (Tableau1[Matricule] <= C1) ; "Aucun résultat")

3) Si la colonne Matricule est au format texte

Si vos matricules sont stockés en texte, forcez la comparaison en nombre avec VALEUR() :

=FILTRE(Liste_Paie_Personel ; (VALEUR(Liste_Paie_Personel[Matricule]) >= B1) * (VALEUR(Liste_Paie_Personel[Matricule]) <= C1) ; "Aucun résultat")

Option pratique : un seul champ (si C1 est vide, prendre D1)

Si vous mettez un seul matricule (ex. B1=2, C1 vide), utilisez :

=TRIER(FILTRE(Liste_Paie_Personel[[Nom document]:[Lien]];(Liste_Paie_Personel[Matricule] >=SI(C1=""; D1; C1))*(Liste_Paie_Personel[Matricule] <=SI(D1=""; C1; D1))*(Liste_Paie_Personel[Matricule] <> "");
    "Aucun résultat");
  7;
  VRAI)

  • C1 = 2 et D1 = 20 → 
  •  2 à 20
  • C1 = 2 et D1 vide → uniquement le matricule 2
  • C1 = 2 et D1 = 2 → uniquement le matricule 2


  • Si FILTRE n’existe pas dans votre Excel

    La fonction FILTRE n’est disponible que dans Microsoft 365 / Excel 2021+.
    Si vous avez Excel 2019/2016, vous pouvez :

    • Utiliser Filtre avancé (Données → Trier & Filtrer → Filtrer avancé) avec critères B1–C1
    • Ou passer par Power Query pour un filtrage dynamique
    • Ou (plus technique) une formule matricielle avec INDEX/SI/PETITE.VALEUR (je peux vous la fournir si besoin)

    Vérifications rapides

    1. Remplacez FILTER par FILTRE → la plupart du temps, ça règle #NOM?.
    2. Confirmez le vrai nom du tableau et de la colonne.
    3. Si besoin, entourez la colonne matricule de VALEUR().

    Solution : FILTRE + TRIER

    Voici votre formule améliorée, triée par le matricule en ordre croissant :

    =TRIER(
        FILTRE(Liste_Paie_Personel ; (Liste_Paie_Personel[Matricule] >= B1) * (Liste_Paie_Personel[Matricule] <= C1) ; "Aucun résultat");
        1;
        VRAI

    )

    🔍 Explications

    • TRIER(plage ; colonne ; ordre)
    • 1 → on trie selon la 1ʳᵉ colonne du résultat filtré (qui est votre colonne Matricule)
    • VRAI → tri croissant
    • FAUX → tri décroissant

    🔎 Si votre colonne Matricule n'est pas la première du tableau filtré

    Exemple :

    • Colonne 1 = Nom
    • Colonne 2 = Prénom
    • Colonne 3 = Matricule → alors il faut trier sur 3 :
    =TRIER(
        FILTRE(Liste_Paie_Personel ; (Liste_Paie_Personel[Matricule] >= B1) * (Liste_Paie_Personel[Matricule] <= C1) ; "Aucun résultat");
        3;
        VRAI)
     

    formule, qui gère proprement les cas où C2 et/ou D2 sont vides et où les bornes sont inversées.


    =TRIER(FILTRE(Liste_Paie_Personel[[Nom document]:[Lien]];(Liste_Paie_Personel[Matricule] >=SI(C2="";D2;SI(ET(C2>D2;D2<>"");D2;C2)))*(Liste_Paie_Personel[Matricule] <=SI(D2=""; C2; SI(ET(D2<C2;C2<>"");C2;D2)))*(Liste_Paie_Personel[Matricule] <> ""); "Aucun résultat"); 6; VRAI)

    version plus robuste 

    Raisonnement terminé dans 3 étapes Voici une version plus robuste et plus lisible de cette formule, qui gère proprement les cas où C2 et/ou D2 sont vides et où les bornes sont inversées. Elle conserve la logique : filtrer par Matricule compris entre deux bornes inclusives, puis trier le résultat.

    ✅ Recommandé (sans LET, compatible largement)
    Excel=TRIER(  FILTRE(    Liste_Paie_Personel[[Nom document]:[Lien]];    (Liste_Paie_Personel[Matricule]<>"") *    (Liste_Paie_Personel[Matricule] >= SI(ET(C2="";D2=""); -1E99; SI(C2=""; D2; SI(D2=""; C2; MIN(C2; D2))))) *    (Liste_Paie_Personel[Matricule] <= SI(ET(C2="";D2="");  1E99; SI(C2=""; D2; SI(D2=""; C2; MAX(C2; D2)))))    ;    "Aucun résultat"  );  6; 1)Afficher plus de lignesAjouter à la cellule
    Ce que cette version améliore


    Bornes intelligentes

    Si C2 et D2 sont vides → on prend tout (bornes −1E99 à +1E99).
    Si une seule des deux cellules est renseignée → on utilise cette valeur comme seule borne (l’autre devient −/+∞).
    Si les deux sont renseignées mais inversées → on corrige automatiquement avec MIN/MAX.


    Lisibilité & stabilité

    Condition explicite sur Matricule non vide : (Liste_Paie_Personel[Matricule]<>"").
    Paramètre ordre de TRIER mis à 1 (croissant) plutôt que VRAI (plus clair et conforme à la doc).

    Points à vérifier dans votre fichier


    Indice de tri (6) : TRIER(...; 6; 1) signifie que vous triez selon la 6ᵉ colonne de la plage [[Nom document]:[Lien]].

    Assurez-vous que cette plage contient au moins 6 colonnes et que la 6ᵉ est bien la colonne voulue pour le tri.
    Sinon, ajustez le 6 au bon index relatif (1 = « Nom document », 2 = prochaine colonne, etc.).


    Type de Matricule : la comparaison suppose des valeurs numériques.

    Option si vous disposez de LET (Excel 365 moderne, nom de fonction LET en français)

    Si votre Excel supporte LET, voici une version plus courte et maintenable :

    Excel=LET(  bInf; SI(ET(C2="";D2=""); -1E99; SI(C2=""; D2; SI(D2=""; C2; MIN(C2; D2))));  bSup; SI(ET(C2="";D2="");  1E99; SI(C2=""; D2; SI(D2=""; C2; MAX(C2; D2))));  TRIER(    FILTRE(      Liste_Paie_Personel[[Nom document]:[Lien]];      (Liste_Paie_Personel[Matricule]<>"") *      (Liste_Paie_Personel[Matricule]>=bInf) *      (Liste_Paie_Personel[Matricule]<=bSup);      "Aucun résultat"    );    7; 1  ))Afficher plus de lignesAjouter à la cellule

    Pourquoi votre formule actuelle peut poser souci

    La logique de gestion des bornes via SI(ET(C2>D2;D2<>"");D2;C2) est difficile à lire et peut produire des bornes incohérentes selon les combinaisons (vides/inversées).
    Utiliser VRAI pour l’ordre dans TRIER fonctionne (coercition en 1), mais 1 est plus explicite.


    Petite question pour finaliser
    Sur quelle colonne voulez-vous trier exactement dans [[Nom document]:[Lien]] ? Si ce n’est pas la 7ᵉ, dites-moi le numéro (ou le nom de la colonne) et je vous renvoie la formule ajustée.
    Fournissez vos commentaires sur BizChat

    🔍 Que signifient les bornes -1E99 et +1E99 ?

    Ce sont simplement des valeurs très petites et très grandes, utilisées comme bornes par défaut lorsqu’aucune valeur n’est saisie dans C2 ou D2.

    • -1E99 = −10⁹⁹
      → un nombre extrêmement faible (pratiquement « moins l’infini » pour Excel)

    • +1E99 = +10⁹⁹
      → un nombre extrêmement élevé (pratiquement « plus l’infini » pour Excel)

    🎯 Pourquoi les utiliser ?

    Excel ne possède pas de fonctions « moins l’infini » ou « plus l’infini ».
    Donc on utilise un nombre tellement grand (ou petit) qu’il ne restreint jamais le filtre.

    Ainsi :

    • Si aucune borne n’est donnée, alors :
      • borne minimale = -1E99 → tout est ≥
      • borne maximale = +1E99 → tout est ≤
        👉 le filtre laisse passer tous les matricules

    C’est simplement un truc de formulation pour éviter des SI compliqués, et rester certain que la condition reste vraie.

    🧠 Important

    Ces valeurs ne seront jamais affichées ni dans vos données, ni dans le résultat.
    Elles sont internes à la formule pour rendre la logique propre et robuste.

    Formule finale TRIER/FILTRE avec le double intervalle ajouter intervalle date mais la colonne date est texte

    1) Ajoute la colonne de conversion dans ta table

    Dans la table Liste_Paie_Personel (le non du tableau), ajoute une nouvelle colonne (nom conseillé : Date_Conv) et mets-y cette formule dans la 1re ligne de la table :

    =DATE(DROITE([@Date];4)+0; SUPPRESPACE(SUBSTITUE(SUBSTITUE([@Date];"Mois";""); DROITE([@Date];4);""))+0; 1)

    2) Votre formule finale TRIER/FILTRE avec le double intervalle

    ✅ Cette version :

    • respecte tes bornes matricule C2–D2 (bornes intelligentes si vide),
    • accepte F2 et G2 en texte (ex. Mois 2 2026) ou vides,
    • inverse automatiquement si F2 > G2 (via MIN/MAX),
    • trie par la 6ᵉ colonne en ordre croissant.
    =TRIER(
      FILTRE(
        Liste_Paie_Personel[[Nom document]:[Lien]];
        (Liste_Paie_Personel[Matricule]<>"") *
        (Liste_Paie_Personel[Matricule] >= SI(ET(C2="";D2=""); -1E+99; SI(C2=""; D2; SI(D2=""; C2; MIN(C2; D2))))) *
        (Liste_Paie_Personel[Matricule] <= SI(ET(C2="";D2="");  1E+99; SI(C2=""; D2; SI(D2=""; C2; MAX(C2; D2))))) *
        (
          Liste_Paie_Personel[Date_Conv] >= MIN(
            SI(F2=""; DATE(1900;1;1);
              DATE(DROITE(F2;4)+0; SUPPRESPACE(SUBSTITUE(SUBSTITUE(F2;"Mois";""); DROITE(F2;4);""))+0; 1)
            );
            SI(G2=""; DATE(9999;12;31);
              DATE(DROITE(G2;4)+0; SUPPRESPACE(SUBSTITUE(SUBSTITUE(G2;"Mois";""); DROITE(G2;4);""))+0; 1)
            )
          )
        ) *
        (
          Liste_Paie_Personel[Date_Conv] <= MAX(
            SI(F2=""; DATE(1900;1;1);
              DATE(DROITE(F2;4)+0; SUPPRESPACE(SUBSTITUE(SUBSTITUE(F2;"Mois";""); DROITE(F2;4);""))+0; 1)
            );
            SI(G2=""; DATE(9999;12;31);
              DATE(DROITE(G2;4)+0; SUPPRESPACE(SUBSTITUE(SUBSTITUE(G2;"Mois";""); DROITE(G2;4);""))+0; 1)
            )
          )
        );
        "Aucun résultat"
      );
      6; 1

    )

    Notes utiles

    • Saisie en F2 & G2 : tu peux mettre Mois 2 2026, Mois 12 2025, etc. (la formule les convertit).
    • Si F2 ou G2 est vide, la borne devient illimitée (1900 / 9999).
    • Si tu préfères saisir de vraies dates dans F2/G2 (ex. 01/02/2026), tu peux remplacer, dans la formule, chaque bloc SI(F2=""; …; DATE(DROITE(F2;4)…)) par SI(F2="";DATE(1900;1;1);F2) (idem pour G2).

    Commentaires

    Posts les plus consultés de ce blog

    🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

    🗓️ Simulateur de Congés et Calendrier Collaboratif sous Google Sheets

    Explication VBA : Facturation automatique Gestion client