Pb de conflit entre le filtrer élaboré et le filtre par la méthode Collection

T

thuan

Guest
Bonjour le forum
J'ai un petit pb de conflit entre le filtre élaboré d'excel et le filtre que je met en place avec la méthode Collection, le pb c'est que lorsque je filtre une colonne et que j'utilise la méthode collection ben le résultat que j'obtient n'as pas cohérant.
Merci pour votre aide
 

Pièces jointes

  • Classeur1.zip
    6.9 KB · Affichages: 28
R

Rénato

Guest
Bonjour Thuan,

Voici un petit script qui pourra je l'espère te dépanner

Sub RENATO()
Range("A1").Select
Selection.Copy
Range("J1").Select
ActiveSheet.Paste
Range("B1:C1").Select
Application.CutCopyMode = False
Selection.Copy
Range("H1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("H2").Select
AGE = InputBox("Veillez renseigner ici l'âge à filtrer", , "exemple saisie : 22")
ActiveCell.FormulaR1C1 = AGE
Range("I2").Select
SEXE = InputBox("Veillez renseigner ici le SEXE à filtrer", , "exemple saisie : F")
ActiveCell.FormulaR1C1 = SEXE
Range("A1:C500").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"H1:I2"), CopyToRange:=Range("J1"), Unique:=True
Range("F18").Select
ActiveCell.FormulaR1C1 = "=COUNTA(C[4])-1"
Range("F18").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Columns("H:J").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("F18").Select
End Sub

A bientôt

Rénato
 
R

Rénato

Guest
Re Thuan,

Oups, je viens corriger un petit oubli (sur le champs Prénom), colle ce code en annule et remplace.

Sub RENATO()
Range("A1").Select
Selection.Copy
Range("J1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1:C1").Select
Selection.Copy
Range("G1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("G2").Select
NOM = InputBox("Veillez renseigner ici le Prénom à filtrer" & Chr(13) & "Saisie Facultative")
ActiveCell.FormulaR1C1 = NOM
Range("H2").Select
AGE = InputBox("Veillez renseigner ici l'âge à filtrer" & Chr(13) & "Saisie Facultative")
ActiveCell.FormulaR1C1 = AGE
Range("I2").Select
SEXE = InputBox("Veillez renseigner ici le SEXE à filtrer" & Chr(13) & "Saisie Facultative")
ActiveCell.FormulaR1C1 = SEXE
Range("A1:C500").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"G1:I2"), CopyToRange:=Range("J1"), Unique:=True
Range("F18").Select
ActiveCell.FormulaR1C1 = "=COUNTA(C[4])-1"
Range("F18").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Columns("G:J").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("F18").Select
End Sub


J'ai cherché une solution sans VBA avec une tantative d'imbrication de la fonction SOUS.TOTAL sans succès...mais si Celeda, Monique ou d'autres passent sur ce topic...ils te proposeront probablement plus simple.

A+

Rénato
 
T

thuan

Guest
Bonjour Rénato
Merci de m'avoir répondu, mais vois tu le pb est que je veux garder le filtre automatique de excel et en fonction de ce filtre je veux pouvoir calculer le nombre de valeurs différentes.
Je m'explique, je sais mettre en place ma méthode collection et donc je lui dis de filtrer les valeurs de la cellule B2 à Bi mais le pb c'est que lui si je met en place le filtre automatique ben il me compte pas bien les cellules.
 
M

Monique

Guest
Bonjour,

Tu as 2 propositions dans le fichier joint.
Par formules : 1, 2 ou 3 critères
Ou bien reporter dans une autre colonne ta liste de noms, sans doublons (par formules aussi).
 

Pièces jointes

  • FiltreThuan.zip
    7.5 KB · Affichages: 39
T

thuan

Guest
Bonjour Monique, bonjour le forum
Merci pour ton aide monique
Mais ce que tu m'as fait en trop compliqué et en plus je crois que je dois pas très bien m'exprimer.
Le truc c'est que je veux garder mes filtres automatiques sur les colonnes de départ et lorsque je filtre une colonne donc mon filtre automatique me met les valeurs filtrer et avec ces valeurs filtrer je veux pouvoir compter le nombre de valeurs diférentes (c'est la que j'utilise la méthode Collection) et l'afficher. en fait Ma Méthode collection prendre les nouvelles valeurs filtrer pour les rentrer dans une listbox et apres je viens juste compter le nombre d'élément dans ma listbox
 
M

Monique

Guest
Bonjour,

Autre système en gardant le filtre automatique.
Tu insères une colonne contenant une formule te renvoyant :
0 si la ligne est vide ou s'il s'agit d'un doublon,
1 sinon.
Dans ton filtre, tu ne gardes que les 1.
 

Pièces jointes

  • FiltreThuanV1.zip
    5.9 KB · Affichages: 38
R

Rénato

Guest
Bonjour à tous,

En complément de la réalisation de Monique ci-dessus

En cellule B2 je modifierai juste la syntaxe en ce sens SOUS.TOTAL(9;A3:A20) avec un no_fonction à 9 plutôt que 3.

Ce qui permet de dénombrer les valeurs distinctes de la colonne prénom.

A+

Rénato
 

Discussions similaires

Réponses
2
Affichages
133

Statistiques des forums

Discussions
312 382
Messages
2 087 838
Membres
103 667
dernier inscrit
datengo