AutoFilter masque tous les enregistrement

Bonjour,

Je cherche à filtrer une liste en fonction du contenu de deux cellules.

Un peut comme le filtre avancé, mais version VBA.

La macro tourne, les valeurs de filtre sont bien dans le filtre, mais aucun enregistrements n'apparait, comme si aucune ligne de répondait au filtre, alors que ce n'est pas le cas.

Si l'on va manuellement dans le filtre (petite fleche dans l'entête) le critère est bien la, si l'on valide manuellement :

1- petite fleche
2- filtre numérique
3- supérieur ou égale à (on voit le la valeur à filtré est la)
4- on valide par "OK"
5- au miracle , la liste est filtrée.

Je pense que c'est un problème le type de variable "String" et le contenu des cellule à filtrer qui sont numériques, mais j'ai essayé de convertir et rien n'y fait.

Je suis sur que c'est une bêtise, mais je sèche depuis 2 jours.

Voila le code :

Sub filtrer_Tb_Chime()
'
' filtrer_a_traiter Macro
'
Const NomFeuille = "Tb_Chimie", NomTS = "Tb_Chime"
Dim critere As String
Dim NomColonne As String
Dim IndexChamp As Long
   With Sheets(NomFeuille).ListObjects(NomTS)      ' avec le tableau structuré NomTS
      If .ListRows.Count = 0 Then Exit Sub         ' si aucune ligne de données, on sort
      .Range.AutoFilter: .Range.AutoFilter         ' ôter un éventuel filtre actif
      On Error GoTo ERRnoCOL                       ' si on ne trouve pas la colonne recherchée
'Filtrer C min
      NomColonne = "C min"
      critere = Range("F2").Value
      If critere <> "" Then
      IndexChamp = .ListColumns(NomColonne).Index  ' index du champ à filtrer
'Filtrer
      .Range.AutoFilter Field:=IndexChamp, Criteria1:=">=" & critere

      End If
'Filtrer C max
      NomColonne = "C Max"
      critere = Range("G2").Value
      If critere <> "" Then
      IndexChamp = .ListColumns(NomColonne).Index  ' index du champ à filtrer
' filtrer
      .Range.AutoFilter Field:=IndexChamp, Criteria1:="<=" & critere
'      ActiveSheet.ListObjects(1).AutoFilter.ApplyFilter
      End If
'      lCnt = .DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count

   End With
   Exit Sub                                        ' sortie "normale" de la procédure
ERRnoCOL:      ' information en cas d'erreur
   MsgBox "'" & NomColonne & "' n'est pas un nom de colonne" & vbLf & _
      "du tableau structuré de nom '" & NomTS & "'" & vbLf & _
      "au sein de la feuille nommée '" & NomFeuille & "'.", vbCritical
    Selection.End(xlDown).Select

End Sub

Ci joint mon fichier exemple.

Merci de votre aide

Hello,

en fait le VBA utilise le point comme séparateur et comme le critère est un texte il garde la virgule

Remplacer la ligne : critere = Range("F2").Value

par : critere = Replace(Range("F2").Value, ",", ".")

Idem pour le second critère

Merci mille fois,

Ca fonctionne parfaitement, vous estes un chef !

Je me doutais que c'était un truc dans le genre, j'ai déjà eu ca avec les date format US ou Français, mais la le coups de point et de la virgule, j'aurais pu chercher mille ans.

Merci pour le retour, mais si vous pouviez mettre à jour votre version d'Excel dans votre profil ça serait tip top, 360 ça n'existe pas

Si vous le dites, mais je trouve cette info ou ?

Avant je savais ou trouver mais depuis que c'est Win 11 et Office 360, impossible de m'y retrouver.

Si vous le dites, mais je trouve cette info ou ?

Avant je savais ou trouver mais depuis que c'est Win 11 et Office 360, impossible de m'y retrouver.

Bonjour, dans ce cas c'est "365" pas 360

Microsoft 365 Copilot — Wikipédia d'après wikipédia on est meme passé sur "Microsoft 365 copilot" lol. Non mais oui sur votre version vous etes certainement sur 365, donc vous pouvez renseigner "365 FR" sur votre profil c'est très bien.

Rechercher des sujets similaires à "autofilter masque tous enregistrement"