Ne contient pas... 2 et pas plus ?

Bonjour les gens.

Je travaille sur un tableau tout à fait classique, d'environ 3500 lignes.

J'aimerais effectuer un filtre (une exclusion...) sur une colonne qui contient des données du genre :

"AENC AINT INOE AIMP CLO DNCC" ou encore

"AENC AINT INOE AIMP INIT DNCC"

Je sais c'est pas très explicite, mais c'est comme ça....

L'exclusion que j'aimerais réaliser : ôter toutes les lignes qui contiennent, dans cette fameuse colonne, les occurrences suivantes

ni CLO ni INIT ni ANNU (ce qui représente environ 80% du tableau total.

L'idée d'un filtre, avec utilisation du " Ne contient pas" est la première idée qui m'est venue.

Sauf que, à ma connaissance (qui est faible...) on ne peut spécifier que deux critères, et pas 3....

Pour l'instant je m'en tire de cette façon peut élégante : je duplique la colonne concernée. Sur celle d'origine, j'exclus les "CLO" et les "INIT", et sur celle dupliquée, j'exclus les "ANNU".

Y a t il un moyen plus pratique ?

J'ai peine à penser qu'un environnement aussi puissant qu'Excel ne permette pas d'exclure avec 3 (ou n....) critères !

Merci d'avance pour vos réponses.

Phil

Bonjour Phil, bonjour le forum,

Le code ci-dessous (à adapter) renvoie dans la cellule A1 de l'onglet Feuil2 les données filtrées :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
NC = UBound(TC, 2) 'définit le nombre de colonnes NC du tableau de cellules TC
K = 1 'initialise la variable K
COL = 1 'définit la colonne dans laquelle se trouve les données à exclure (à adapter)
For I = 1 To NL 'boucle 1 : sur toutes les lignes I du tableau de cellules TC
    'condition : si la valeur ligne I colonne COL ne contient ni "CLO" ni "INIT" ni "ANNU"
    If InStr(1, TC(I, COL), "CLO") = 0 And InStr(1, TC(I, COL), "INIT") = 0 And InStr(1, TC(I, COL), "ANNU") = 0 Then
        ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau de lignes TL (autant de lignes que TC a de colonnes, K colonnes)
        For J = 1 To NC 'boucle 2 : sur toutes les colonne J de TC
            TL(J, K) = TC(I, J) 'récupère dans la ligne J de TL la valeur de la colonne J de TC (transposition)
        Next J 'prochaine colonne de la boucle 2
        K = K + 1 'incémente K
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
Set DEST = Sheets("Feuil2").Range("A1") 'définit la cellule de destination DEST (à adapter)
If K > 1 Then DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'si K est supérieur à 1, renvoie dans DEST redimensionnée le tableau TL transposé
End Sub

Il te faut adapter les variables O, COL et DEST...

ah ouais... quand même !

Ben en tout cas un grand merci, je vais tester ça juste pour le fun, parce que ...ne m'en veux pas, mais ma petite manip qui consiste à dupliquer la colonne de filtration pour m'offrir deux possibilités "Ne contient pas" de plus me parait finalement plus sympa... !

Je reste quand même un peu sur le...postérieur...

Que Mr Excel n'est pas imaginé une seule seconde qu'on pouvait filtrer sur plus de deux critères...me sidère !

Un grand merci quand même d'avoir pris le temps de me faire cette réponse.

bonjour

une petite contribution pour les "privés " de vba

105philocar.xlsx (8.95 Ko)

cordialement

Bonjour à tous, Forum, Philochar,

Une solution sans macro dans le fichier joint.

En passant par un filtre élaboré avec la plage ou base de donnée d'un côté et la zone de critères en colonne G, H et I.

Dis-nous si c'est le résultat que tu veux obtenir.

Fabrice.

422filtres-elabores.xlsx (26.10 Ko)
Rechercher des sujets similaires à "contient pas"