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 SubCi 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.