Erreur code vba

Résolu/Fermé
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020 - 3 sept. 2014 à 14:55
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 3 sept. 2014 à 18:36
Bonjour,

j'ai le code suivant qui me permet de filtrer des données dans un tableau.

Dim derlig As Integer, Var_Fitre

Private Sub Worksheet_Change(ByVal Target As Range)
Dim dercol As Integer, i As Long, derlig As Long, Var_Fitre As Variant, LtrCol As String

dercol = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
derlig = Range("A" & Rows.Count).End(xlUp).Row

If Not Intersect(Target, Range("A1", Cells(1, dercol))) Is Nothing Then
For i = 1 To dercol
Select Case Target.Address
Case Cells(1, i).Address
If Target = "" Then
Range("A2", Cells(derlig, dercol)).AutoFilter Field:=i
Else
If IsNumeric(Cells(1, i)) Then
Var_Filtre = CStr(Cells(1, i).Value)
'cherche le nom (la lettre) de la colonne
LtrCol = Split(Cells(1, i).Address, "$")(1)
'masque lignes
Call Masque(Var_Filtre, LtrCol)
Exit Sub
ElseIf IsDate(Cells(1, i)) Then
Var_Filtre = "=" & CDate(Cells(1, i))
Else
Var_Filtre = "*" & Cells(1, i).Value & "*"
End If
Range("A2", Cells(derlig, dercol)).AutoFilter Field:=i, Criteria1:=Var_Filtre
End If
End Select
Next i
End If
End Sub

Sub Masque(Critere As Variant, LtrCol As String)
Dim Plage As Range, Cel, Lig

Set Plage = Worksheets("feuil1").Range(LtrCol & "3:" & LtrCol & Range(LtrCol & "65536").End(xlUp).Row)

For Each Cel In Plage.SpecialCells(xlCellTypeVisible).Rows
If InStr(1, CStr(Cel), Critere) = 0 Then
Rows(Cel.Row).EntireRow.Hidden = True
End If
Next Cel

End Sub

Le code fonctionne correctement tant que je ne modifie pas les données de mon tableau.
Si j'ajoute une ligne le code fonctionne également.
Par contre, si j'ajoute une colonne, j'ai une erreur à la ligne :

Range("A2", Cells(derlig, dercol)).AutoFilter Field:=i

Je ne vois pas trop comment éviter ce problème.

Merci d'avance pour votre aide.

Megatronnbjja
A voir également:

1 réponse

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
3 sept. 2014 à 18:36
Bonjour,

reponse idem message prive:

Dans le code d'origine, c'est A1 pas A2

Range("A1", Cells(derlig, dercol)).AutoFilter Field:=i

et

Range("A1", Cells(derlig, dercol)).AutoFilter Field:=i, Criteria1:=Var_Filtre

0