Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Saisie intuitive et filtrage auto sur colonne

11 réponses
Avatar
Apitos
Bonjour =C3=A0 tous,

Peut-on r=C3=A9aliser cela :

Lors de la saisie dans la cellule A2, un filtre automatique est appliquer s=
ur la colonne A selon ce qui est =C3=A9crit en A2.

La m=C3=AAme op=C3=A9ration sera ex=C3=A9cut=C3=A9e sur les colonnes B, C e=
t D selon la saisie en B2, C2 et D2.

Merci d=E2=80=99avance.

10 réponses

1 2
Avatar
?K?
Hello
D'après Apitos
Peut-on réaliser cela
Lors de la saisie dans la cellule A2, un filtre automatique est appliquer sur
la colonne A selon ce qui est écrit en A2.
La même opération sera exécutée sur les colonnes B, C et D selon la saisie en
B2, C2 et D2.

on peut :
mettre ce type de code dans la feuille de calcul concernée
----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Range("$a$4:$d$50").AutoFilter Field:=1, Criteria1:="="
& Range("a2").Value & "*", _
Operator:=xlAnd
ActiveSheet.Range("$a$4:$c$50").AutoFilter Field:=2, Criteria1:="=" &
Range("b2").Value & "*", _
Operator:=xlAnd
ActiveSheet.Range("$a$4:$c$50").AutoFilter Field:=3, Criteria1:=">" &
Range("c2").Value, _
Operator:=xlAnd
End Sub
--------------------------
les deux premiers utilisent "commence par" et le 3ème "plus grand que"
flemme de mettre le quatrième ;-)
en a4:d4 on a les en têtes de colonne
attention laisse a3:d3 vide sinon le filtre a tendance à s'emmêler un
peu
et si tu n'arrives pas à trouver la syntaxe de ton filtre, tu le crées
en enregistrement de macro et tu adaptes ;-)
cdlt
--
-
Avatar
?K?
D'après ?K?
Hello
D'après Apitos
Peut-on réaliser cela Lors de la saisie dans la cellule A2, un filtre
automatique est appliquer sur la colonne A selon ce qui est écrit en A2.
La même opération sera exécutée sur les colonnes B, C et D selon la saisie
en B2, C2 et D2.

on peut :

ceoendant les filtres cachent des lignes entières donc les filtres des
4 colonnes se surajoutent ce n'est pas indépendant
cdlt
--
-
Avatar
Apitos
Bonjour ?K?,
Le filtre n'est pas appliqué en même temps de la saisie des carac tères en A2.
Je crois qu'il n'y a pas d’événement Onchage des cellules ?
Avatar
?K?
D'après Apitos
Bonjour ?K?,
Le filtre n'est pas appliqué en même temps de la saisie des caractères en A2.
Je crois qu'il n'y a pas d’événement Onchage des cellules ?

il est appliqué dès qu'on a validé la saisie en a2
(ce n'est pas du javascript)
cdlt
--
-
Avatar
?K?
Bonjour
D'après Apitos
Bonjour ?K?,
Le filtre n'est pas appliqué en même temps de la saisie des caractères en A2.
Je crois qu'il n'y a pas d’événement Onchage des cellules ?

en fait créer une zone de texte de formulaire (textbox) en haut de
chaque colonne fera ce que tu souhaites
tu mets la propriété linkedcell à a2 pour textbox1 etc. comme ça tu
peux récupérer les valeurs sans changer le reste de ta feuille
avec ce genre de code (dans la feuille)
je suppose que tes en-têtes de colonne sont en a3:d3
-----------------
Private Sub TextBox1_Change()
ActiveSheet.Range("$a$3:$d$100").AutoFilter Field:=1, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
Private Sub TextBox1_Change()
ActiveSheet.Range("$b$3:$d$100").AutoFilter Field:=2, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
etc.
---------------------------------
ci-dessus les filtres de colonnes se rajoutent
si tu mets aussi
--------------------
Private Sub TextBox1_LostFocus()
Range("a3:d3").AutoFilter
End Sub
Private Sub TextBox2_LostFocus()
Range("D6:G6").AutoFilter
End Sub
-----------------
quand tu changes de colonne le filtre se réinitialise donc ça filtre
successivementcolonne par colonne
à toi de voir
cdlt
--
-
Avatar
?K?
(supersedes <584e5fa7$0$7995$)
Bonjour
D'après Apitos
Bonjour ?K?,
Le filtre n'est pas appliqué en même temps de la saisie des caractères en
A2.
Je crois qu'il n'y a pas d’événement Onchage des cellules ?

en fait créer une zone de texte de formulaire (textbox) en haut de
chaque colonne fera ce que tu souhaites
tu mets la propriété linkedcell à a2 pour textbox1 etc. comme ça tu
peux récupérer les valeurs sans changer le reste de ta feuille, tu peux
mettre ta zone de texte au dessus de la cellule
avec ce genre de code (dans la feuille)
je suppose que tes en-têtes de colonne sont en a3:d3 (tu peux masquer
la ligne ça ne change rien)
par défaut les filtres de colonnes se rajoutent
-----------------
Private Sub TextBox1_Change()
ActiveSheet.Range("$a$3:$d$100").AutoFilter Field:=1, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
Private Sub TextBox2_Change()
ActiveSheet.Range("$b$3:$d$100").AutoFilter Field:=2, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
etc.
---------------------------------
si tu mets aussi
--------------------
Private Sub TextBox1_LostFocus()
Range("a3:d3").AutoFilter
End Sub
Private Sub TextBox2_LostFocus()
Range("D6:G6").AutoFilter
End Sub
-----------------
quand tu changes de colonne le filtre se réinitialise donc ça filtre
successivement colonne par colonne
à toi de voir
cdlt
--
-
Avatar
?K?
(supersedes <584e6414$0$3317$)
(supersedes <584e5fa7$0$7995$)
Bonjour
D'après Apitos
Bonjour ?K?,
Le filtre n'est pas appliqué en même temps de la saisie des caractères en
A2.
Je crois qu'il n'y a pas d’événement Onchage des cellules ?

en fait créer une zone de texte de formulaire (textbox) en haut de
chaque colonne fera ce que tu souhaites
tu mets la propriété linkedcell à a2 pour textbox1 etc. comme ça tu
peux récupérer les valeurs sans changer le reste de ta feuille, tu peux
mettre ta zone de texte au dessus de la cellule
avec ce genre de code (dans la feuille)
je suppose que tes en-têtes de colonne sont en a3:d3 (tu peux masquer
la ligne ça ne change rien)
par défaut les filtres de colonnes se rajoutent
-----------------
Private Sub TextBox1_Change()
ActiveSheet.Range("$a$3:$d$100").AutoFilter Field:=1, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
Private Sub TextBox2_Change()
ActiveSheet.Range("$b$3:$d$100").AutoFilter Field:=2, Criteria1:="=" &
TextBox1.Value & "*", _
Operator:=xlAnd
End Sub
etc.
---------------------------------
si tu mets aussi
--------------------
Private Sub TextBox1_LostFocus()
Range("a3:d3").AutoFilter
End Sub
Private Sub TextBox2_LostFocus()
Range("a3:d3").AutoFilter
End Sub
-----------------
quand tu changes de colonne le filtre se réinitialise donc ça filtre
successivement colonne par colonne
à toi de voir
cdlt
--
-
Avatar
Apitos
J'ai essayé avec cet exemple :
http://www.cjoint.com/c/FLmqtkqKdKM
Mais quand je mets un "2" dans la première TextBox, je n’obti ens aucun résultat (visible au mois) et quand j'efface ce "2" le filtr e reste toujours figé ...?
Avatar
?K?
Bonjour
D'après Apitos
J'ai essayé avec cet exemple :
http://www.cjoint.com/c/FLmqtkqKdKM
Mais quand je mets un "2" dans la première TextBox, je n’obtiens aucun
résultat (visible au mois) et quand j'efface ce "2" le filtre reste toujours
figé ...?

d'une part si on veut que ça fonctionne avec * il faut mettre les
cellules de la colonne A en mode texte
sinon on ne peut utiliser que > < ou = (nombres !)
ensuite trop de copier-coller lol
Private Sub TextBox1_Change()
ActiveSheet.Range("$A$4:$G$4").AutoFilter Field:=1, Criteria1:="=" &
TextBox1.Value & "*"
End Sub
le premier ça va
Private Sub TextBox2_Change()
ActiveSheet.Range("$A$4:$G$4").AutoFilter Field:=2, Criteria1:="=" &
TextBox2.Value & "*", Operator:=xlAnd
End Sub
mais pour le deuxième et les suivants il faut changer àchaque fois le
champ
Field:=2
ET le nom de la zone de texte
TextBox2.Value
tel quel tous les filtres vont s'ajouetr
si tu veux qu'ils soient indépendants ajouter des
Private Sub TextBox1_LostFocus()
Range("a4:g4").AutoFilter
End Sub
Private Sub TextBox2_LostFocus()
Range("a4:g4").AutoFilter
End Sub
cdlt
--
-
Avatar
Apitos
Bonjour,
Comme je cherche par l’utilisation du filtre à ne pas accepter des valeurs existantes, alors la ligne "A2:G2" n’est pas ajoutà ©e dans le tableau en dessous que si elle ne contient pas de doublons.
Voila ou j’en suis avec le code :
En colonne C quand je saisi "1000", le filtre ne trouve pas cette valeur da ns le tableau, pourtant j’ai bien utilisé un "=" dans le cri tère de filtrage.
Le même critère est utilisé pour filtrer les dates.
http://www.cjoint.com/c/FLntmYIeXbq
1 2