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
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 SubMais 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 SubCdlt,
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 SubCordialement
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 SubCdlt,