XL 2016 Code vba permettant de faire une recherche soit dans la colonne A ou B

telemarrk

XLDnaute Occasionnel
Bonjour,

j'ai créé un fichier qui référence les natures du plan comptable M57, B5 permet de rechercher en Colonne A.
Je souhaite faire mes recherches soit par le biais de la colonne A ou de la Colonne B mais je n' y arrive pas quelqu'un peut m'aider.

Cela fonctionne avec un code VBA.


Merci
 

Pièces jointes

  • test.xlsm
    50.5 KB · Affichages: 2

scraper

XLDnaute Nouveau
Bonjour Telemarrk, Oneida
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Filter As String, Col As Long, lastRow As Long
    
    If Not Intersect(Target, ActiveSheet.Range("B5")) Is Nothing Then
        Application.ScreenUpdating = False
        If Me.FilterMode Then Me.ShowAllData
        Filter = ActiveSheet.Range("B5")
        lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
        If Filter <> "" Then
            If IsNumeric(Filter) Then
                Col = 1
                Filter = CStr(Filter)
            Else
                Col = 2
            End If
            With Range("A9:D" & CStr(lastRow)).Select
                ActiveSheet.Range("$A$8:$D$" & CStr(lastRow)).AutoFilter Field:=Col, Criteria1:="*" & Filter & "*"
            End With
        End If
         MsgBox "Nb:" & ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
    End If
    Application.ScreenUpdating = True
End Sub
 

Oneida

XLDnaute Impliqué
Bonjour Telemarrk, Oneida
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Filter As String, Col As Long, lastRow As Long
  
    If Not Intersect(Target, ActiveSheet.Range("B5")) Is Nothing Then
        Application.ScreenUpdating = False
        If Me.FilterMode Then Me.ShowAllData
        Filter = ActiveSheet.Range("B5")
        lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
        If Filter <> "" Then
            If IsNumeric(Filter) Then
                Col = 1
                Filter = CStr(Filter)
            Else
                Col = 2
            End If
            With Range("A9:D" & CStr(lastRow)).Select
                ActiveSheet.Range("$A$8:$D$" & CStr(lastRow)).AutoFilter Field:=Col, Criteria1:="*" & Filter & "*"
            End With
        End If
         MsgBox "Nb:" & ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
    End If
    Application.ScreenUpdating = True
End Sub
Bonjour,
Oui, code a peut pret que moi. Marche pas pour ex: 606* partie d'un nombre
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11