AutoFiltre plusieurs colonne

Bonjour à tous,

J'ai réalisé un autofiltre pour un document Excel feuille (histo) mais je souhaite l'améliorer un peu pour qu'il recherche sur plusieurs colonne à condition qu'il ne trouve pas de valeurs souhaité.

J'ai réalisé ce code la

12intervention.xlsm (35.96 Ko)
Sub recherche()
Dim mot$
With ActiveSheet.Range("$A$10:$J$15")
    mot = [E5].Value
    If Not .Columns(8).Find(mot, , xlValues, xlPart) Is Nothing Then
       .AutoFilter Field:=8, Criteria1:="*" & mot & "*", Operator:=xlAnd
       If Not Value.Find Then
       .AutoFilter Field:=9, Criteria1:="*" & mot & "*", Operator:=xlAnd
    End If
    End If
    End With
End Sub

Mais depuis mon autofiltre ne fonctionne plus, au début pour tester j'avais seulement mis (( ActiveSheet.Range("$A$10:$J$15").AutoFilter Field:=8, Criteria1:="*" [E5].Value "*" ))sans les parenthèse bien sur, et cela fonctionné très bien mais me filtrer que la colonne 8 donc H, maintenant je veux étendre mon filtre de la colonne 1 à 10 donc de A à J

Merci de vos réponse.

Bonjour,

Le code corrigé adapter. Les autres conditions sont a ajouter dans des ElseIf en respectant le type/casting des valeurs présentes dans la colonnes. En effet du texte ne se traite pas de la même façon que des dates (cf code ci-dessous) :

Sub recherche()
Dim mot$
With ActiveSheet.Range("$A$10:$J$15")
    mot = [E5]
    If Not .Columns(8).Find(mot, , xlValues, xlPart) Is Nothing Then
        .AutoFilter Field:=8, Criteria1:="*" & mot & "*", Operator:=xlAnd
        ElseIf Not .Columns(9).Find(mot, , xlValues, xlPart) Is Nothing Then
        .AutoFilter Field:=9, Criteria1:=Format(mot, "dd/mm/yyyy"), Operator:=xlAnd
        Else
        MsgBox "Aucune valeur correspondante à E5 trouvée dans les colonnes H et I", vbInformation
    End If
End With
End Sub

Cdlt,

Bonjour Ergotamine

J'ai testé ton code et il ne marchait pas pour moi voir le ElseIf .columns(9)

Sub recherche()
Dim mot$
With ActiveSheet.Range("$A$10:$J$15")
    mot = [E5]
    If Not .Columns(8).Find(mot, , xlValues, xlPart) Is Nothing Then
        .AutoFilter Field:=8, Criteria1:="*" & mot & "*", Operator:=xlAnd
        ElseIf Not .Columns(9).Find(What:=CDate(mot), LookAt:=xlWhole) Is Nothing Then
        .AutoFilter Field:=9, Criteria1:=Format(mot, "dd/mm/yyyy"), Operator:=xlAnd
        Else
        MsgBox "Aucune valeur correspondante à E5 trouvée dans les colonnes H et I", vbInformation
    End If
End With
End Sub

Cordialement

Bonjour,

En effet c'est ma faute j'ai rajouté le ElseIf sans avoir testé, à la base j'étais parti sur un Else qui fonctionnait bien et ne générait pas d'erreur .. ! Désolé et merci pour la correction.

Cdlt,

Merci de vos réponses !

Je me suis basé sur ce que vous m'avez codé, au final je voulais mettre le filtre dans la cellule 7 et pas 9 donc j'ai amélioré mon code, je le partage car cela peux aidé.

Encore merci car grâce à vous j'améliore mes compétences dans le codage.

Sub Recherche()
'
' Recherche Macro

    Dim mot$
    mot = [E5]
    If [E5] = "" Then 'Si [E5] est vide alors
        ActiveSheet.Range("$A$10:$J$43").AutoFilter Field:=7 'sélectionne toutes les données dans la cellules G (pour les afficher)
        ActiveSheet.Range("$A$10:$J$43").AutoFilter Field:=8 'sélectionne toutes les données dans la cellules H (pour les afficher)
        Else
    If Not Columns(8).Find(mot, , xlValues, xlPart) Is Nothing Then 
    ActiveSheet.Range("$A$10:$J$42").AutoFilter Field:=8, Criteria1:="*" & [E5].Value & "*" 'Cherche dans la colonne H
    ElseIf Not Find Then
    ActiveSheet.Range("$A$10:$J$42").AutoFilter Field:=7, Criteria1:="*" & [E5].Value & "*" 'Cherche dans la colonne G
    End If
    End If
End Sub

Cdlt,

Rechercher des sujets similaires à "autofiltre colonne"