XL 2016 VBA : Filtrer entre deux valeurs de deux cellules

Antoinepasautop

XLDnaute Nouveau
Bonjour à tous,

Novice en VBA, je souhaiterais dans l'onglet CFR lancer une macro qui me filtrerai en fonction de l'année et de l'épaisseur souhaités.
J'arrive à filtrer par rapport à l'année.
L'épaisseur souhaité me donne un intervalle que je souhaite affiché dans mon tableau et pas seulement une valeur.
Je fais donc :

ActiveSheet.Range("$A$1:$ED$65489").AutoFilter Field:=22, _
Criteria1:=">=ICI je souhaiterais la valeur de la cellule EH4 " _
, Operator:=xlAnd, _
Criteria2:="<=ICI je souhaiterais la valeur de la cellule EI4 "

Or ce code me génère des erreurs systématiquement.
Je joins le fichier avec le début du code.

Merci de votre aide

Cordialement,
Antoine
 

Pièces jointes

  • testfiltre.xlsm
    125.1 KB · Affichages: 5

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans votre macro je n'ai pas bien compris ce que venait faire EH4 et EI4 ni quand vous interrogez les valeurs inférieure, supérieures. Visiblement je ne suis pas le seul puisque vous avez déjà 23 affichages et pas une réponse jusqu'à présent.

Mais voici en résumé ce que pourrait donner votre instruction de filtrage :
VB:
ActiveSheet.Range("$A$1:$ED$65489").AutoFilter _
                Field:=22, _
                Criteria1:=">=" & Sheets("CFR").Range("EH4").Text, Operator:=xlAnd, _
                Criteria2:="<=" & Sheets("CFR").Range("EI4").Text

Cordialement
 

Antoinepasautop

XLDnaute Nouveau
Bonjour Roblochon,

Tout d'abord merci pour votre réponse.
Effectivement j'avais fait un test avec EH4 et EI4 mais c'est en réalité les cellules c4 et d4 de la feuille CFR qui m'intéressent.

J'ai bien remplacé dans le code, mais cela ne fonctionne toujours pas :
Le filtre, m'enlève toutes les lignes, même celles qui ne devraient pas.
Une fois la macro terminée, je vérifie manuellement dans le filtre "entre" j'ai bien les valeurs voulues qui s'affichent et quand je fais OK sur cette fenêtre, le filtre est pris en compte !!
(j'ai veillé à tester avec le format nombre de mes cellules et format en texte, modifier l'ordre des actions, ...)

Merci d'avance
Antoine
 

job75

XLDnaute Barbatruc
Bonjour le forum,

Ce n'est pas bien clair mais voyez le fichier joint et cette macro dans le code de la feuille CFR :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim crit1 As Range, crit2 As Range, col1%, col2%, tablo, v, i&, liste$
Set crit1 = [A2]: Set crit2 = [V2] 'à adapter
col1 = crit1.Column: col2 = crit2.Column
tablo = Sheets("mére").[A1].CurrentRegion 'matrice, plus rapide
If Not Intersect(Target, crit1) Is Nothing Then
    crit1(1, 2).Resize(, Columns.Count - col1).ClearContents 'RAZ
    v = crit1
    For i = 2 To UBound(tablo)
        If tablo(i, col1) = v Then liste = liste & "," & Replace(tablo(i, col2), ",", ".")
    Next
    With crit2.Validation
        .Delete
        If liste <> "" Then .Add xlValidateList, Formula1:=Mid(liste, 2) 'crée la liste
    End With
ElseIf Not Intersect(Target, crit2) Is Nothing Then
    v = crit1 & Chr(1) & Replace(crit2, ",", ".")
    For i = 2 To UBound(tablo)
        If tablo(i, col1) & Chr(1) & Replace(tablo(i, col2), ",", ".") = v Then
            Application.EnableEvents = False 'désactive les évènements
            [A2].Resize(, UBound(tablo, 2)) = Application.Index(tablo, i, 0)
            Application.EnableEvents = True 'réactive les évènements
            Exit For
        End If
    Next
End If
End Sub
Le résultat du filtrage est affiché en ligne 2.

2 listes de validation, en A2 et V2, sont utilisées.

A+
 

Pièces jointes

  • testfiltre(1).xlsm
    75 KB · Affichages: 9

Antoinepasautop

XLDnaute Nouveau
Bonjour,

Désolé pour les explications désastreuses!
Job 75 Merci pour le temps passé, mais cela ne correspond pas tout à fait à mon besoin, mais cet exemple pourras me servir pour autre chose 👍 .

Je souhaite commencer à filtrer par année cellule B3 onglet CFR
Lorsque je rentre une épaisseur nominale (0.7), j'ai besoin de trier dans un intervalle (0.675 à 0.725)
D'où dans mon fichier les formules en c4 et d4 onglet CFR
J'ai donc besoin d'avoir toutes les lignes de l'année choisie dans lesquelles l'épaisseur est située dans l'intervalle défini par les celllules c4 et d4.
Le code de roblochon intègre bien les valeurs mais je suis obligé d'aller manuellement dans :
filtre numérique "entre" de la colonne V et de faire OK pour que cela marche!

Merci
 

Pièces jointes

  • testfiltre.xlsm
    112.1 KB · Affichages: 7

Discussions similaires

Réponses
2
Affichages
98

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390