AutoFiltre plusieurs colonne

Bonjour,

J'ai fait un programme pour filtrer automatiquement selon un mot clé dans une cellule, ce qui correspond à une barre de recherche.

Je viens vers vous pour vous demandez si vous savez comment chercher la valeur dans les 2 colonnes en même temps par exemple si il y'a le mot air en colonne "H" et "I" cela va m'afficher les 2 colonnes.

Actuellement cela m'affiche que la colonne de la première ligne du programme ce qui est embêtant.

Sub Recherche()
' Recherche Macro

    Dim mot$
    mot = [F5]
    If [F5] = "" Then 'Si [F5] est vide enlever le filtre
        ActiveSheet.Range("$A$10:$J$43").AutoFilter Field:=9 'sélectionne toutes les données dans la cellules G
        ActiveSheet.Range("$A$10:$J$43").AutoFilter Field:=8 'sélectionne toutes les données dans la cellules H
        Else
    If Not Columns(8).Find(mot, , xlValues, xlPart) Is Nothing Then 'Si aucune données trouvées dans cellule H
    ActiveSheet.Range("$A$10:$J$42").AutoFilter Field:=8, Criteria1:="*" & mot & "*" 'Cherche dans la colonne H
    ElseIf Not Find Then 'si rien n'est trouvé alors (c'est ici que le programme s'arrête si la valeur rechercher est trouvé, et donc ne cherche pas dans la colonne "I")
     ActiveSheet.Range("$A$10:$J$42").AutoFilter Field:=9, Criteria1:="*" & mot & "*" 'Cherche dans la colonne G
    End If
    End If
End Sub
11intervention.xlsm (41.85 Ko)

Bonjour,

Ce n'est, je crois pas possible, que ce soit par VBA ou manuellement de filtrer sur une même valeur sur 2 colonnes différentes sur 2 lignes différentes. La seule piste que je verrais serait de rajouter une colonne finale étant la concaténation de ces deux colonnes et de filtrer sur cette dernière colonne.

Donc en L12 puis en tirant :

=H12&I12

Et votre code :

Sub RECHERCHER()
ActiveSheet.Range("$A$10:$L$42").AutoFilter Field:=12, Criteria1:="*" & [F5] & "*" 'Filtre sur colonne L
End Sub

Cdlt,

Je crois que si c'est possible car quand je modifié le code à un moment je voyais bien que les 2 colonnes était filtrés mais je ne me souviens de qu'est ce que j'avais mis puisque je trifouillais un peu tout.

Bonjour Biimoxx, Ergotamine,

Un essai de solution VBA (désolé Ergotamine...) :

Sub Recherche()
Dim DerLig As Long, mot As String
With Worksheets("Histo")
mot = "*" & UCase(.[F5]) & "*"
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For i = 11 To DerLig
    If Not (UCase(.Range("H" & i)) Like mot Or UCase(.Range("I" & i)) Like mot) Then
        .Rows(i).Hidden = True
    End If
Next
End With
End Sub

A+

Bonjour AlgoPlus,

En effet j'y ai pensé aussi, j'avais juste peur qu'avec trop de ligne ça mette beaucoup de temps à se MaJ. Et comme l'auteur voulait une solution par filtre je ne me suis pas attardé sur cette piste, mais bonne alternative qui permet de se passer par l'ajout d'une colonne !

Par contre Biimoxx, j'ai eu beau essayé de filtrer, même manuellement sur deux colonnes parallèles, je n'y suis pas arrivé donc si tu trouves la solution je suis preneur !

Cdlt,

Merci à vous deux, pour l'instant je vais me contenter de sa surement en l'améliorant un peu.

Sa fait le taff que je souhaite donc pourquoi ne pas s'en servir ?

Si jamais je trouve une alternative selon mon code de base je reposterai un message.

Cdlt,

Par autofilter, pas trouvé de solution ( pas dit qu'il n'y en a pas, et curieux de la connaitre...)

Une autre piste à explorer : le filtre avancé (piloté par VBA) qui fonctionne .

Rechercher des sujets similaires à "autofiltre colonne"