Ajout de données sur un filtre déja créé

Alexdubeffroi

XLDnaute Nouveau
Bonjour à tous,

Je sens que je vais avoir du mal a être clair :rolleyes: alors j'aimerai à l'aide d'une macro pouvoir ajouter des informations à un filtre sans supprimer ce qu'il contient. Par exemple, le fichier joint contient une liste de voitures, si la liste est filtrée par la marque Ferrari, je voudrai pouvoir ajouter la marque Porsche dans le filtre. est-ce possible si on ne sait pas quel est le filtre étant deja appliqué, sans test?
J'ai essayé de regarder au niveau des opérateurs de filtre (xlAnd xlOr xlValues) mais sans succes.
Merci de m'avoir lu,

Alex
 

Pièces jointes

  • Exemple.xlsx
    9 KB · Affichages: 51
  • Exemple.xlsx
    9 KB · Affichages: 56
  • Exemple.xlsx
    9 KB · Affichages: 57
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Ajout de données sur un filtre déja créé

Bonjour,

par quel procédé envisagez vous d'entrer la deuxième marque ?

Parce que s'il faut créer un bouton, saisir la deuxième marque .., autant utiliser ce qu'offre la partie filtre personnalisé du filtre automatique,où il suffit de 2 clics et de la sélection de la deuxième marque .

A+
 

Alexdubeffroi

XLDnaute Nouveau
Re : Ajout de données sur un filtre déja créé

Bonjour Paf,

La deuxième marque est entrée à l'aide d'une macro en fonction de différents paramètres de la feuille,
L'algorithme est parcouru et selon différentes conditions je voudrais ajouter la/les seconde marque/s.

Je ne sais pas si cela est clair, merci pour ton aide et je suis à ta disposition si tu as besoin que je m'eclaircisse.

A+
 

david84

XLDnaute Barbatruc
Re : Ajout de données sur un filtre déja créé

Bonjour,
un test qui ramène les critères existants, si cela peut te mettre sur la voie :
Code:
Sub Fitre()
Dim Pl As Range, F As Filters
Dim T() As String, i As Byte
On Error GoTo gesterr:
Set Pl = Range("A1:B19")
Set F = Pl.Parent.AutoFilter.Filters
Select Case F.Item(1).Count
Case Is = 1
  MsgBox F.Item(1).Criteria1
Case Is = 2
  MsgBox F.Item(1).Criteria1 & vbCrLf & F.Item(1).Criteria2
Case Else
ReDim T(1 To F.Item(1).Count)
For i = 1 To F.Item(1).Count
  T(i) = F.Item(1).Criteria1(i)
Next i
MsgBox Join(T, vbCrLf)
End Select
Exit Sub

gesterr:
MsgBox "Aucune valeur filtrée"
End Sub
Cela peut éventuellement te servir à mémoriser les critères existants que tu pourrais passer en argument (sous forme de chaîne de caractère par exemple) dans la Sub qui lancerait une nouvelle procédure de filtrage des données.
Il te resterait ensuite à associer ton dernier critère à la chaîne existante (enfin bon c'est juste une idée).
A+
 

Paf

XLDnaute Barbatruc
Re : Ajout de données sur un filtre déja créé

Re,

un code à adapter.

Code:
Sub Alexdubeffroi()
Dim Crit1 As String, Crit2 As String

Crit2 = "=Ferrari" 'mettre la variable issue de votre macro

With Sheets("Feuil1")
    If .AutoFilterMode Then ' si la feuille est en mode filtre auto
        If .AutoFilter.Filters(1).On Then 'si le filtre 1 est activé
            Crit1 = .AutoFilter.Filters(1).Criteria1
            .Range("A10").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlOr, Criteria2:=Crit2
        End If
    End If
End With
End Sub

Ce code est "fragile". il fonctionne sur le classeur exemple fourni et doit être adapté si la configuration du tableau évolue.

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45