Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA - Autofilter - Prob: Copie toute la plage sans prendre en compte le filtre

Lolexcel

XLDnaute Nouveau
Bonsoir !

J'ai un souci avec la fonction Autofilter sur VBA. La macro copie toute la plage de données sans prendre en compte le critère. Je ne comprends vraiment pas d'où vient le problème, d'autant plus qu'appliquée sur une autre feuille avec un autre critère, elle fonctionne parfaitement -_-

Sub TAB_LegSelect()

Dim Derlig1&, Derlig2&

Derlig1 = Sheets("LegSelect").Range("A" & Rows.Count).End(xlUp).Row
If Derlig1 <= 2 Then DerligS = 2
Sheets("LegSelect").Range("A2:F" & Derlig1).Clear

With Sheets("ListTotalLeg")
.AutoFilterMode = False
Derlig2 = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A2:E2").AutoFilter
.Range("$A$2:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"
.Range("$A$2:$C$" & Derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("LegSelect").Range("A2")
.AutoFilterMode = False
End With

End Sub


Une idée de ce qui coince ?

Merci d'avance !!
Lolexcel
 

Pièces jointes

  • TAB_PlanCulture.xlsm
    50.2 KB · Affichages: 7
Solution
Re

Quand tu copies copie juste !!!
(CTRL C CTRL V est ton ami !!!)

Le bon code :

VB:
Sub TAB_LegSelect()

Dim Derlig&, Derlig2&

Derlig = Sheets("LegSelect").Range("A" & Rows.Count).End(xlUp).Row
If Derlig <= 2 Then Derlig = 2
Sheets("LegSelect").Range("A2:F" & Derlig).Clear

With Sheets("ListTotalLeg")
    .AutoFilterMode = False
    Derlig2 = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A1:E1").AutoFilter
    .Range("$A$1:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"
    .Range("$A$2:$C$" & Derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("LegSelect").Range("A2")
    .AutoFilterMode = False
End With

End Sub

Et ton erreur :
Range("A2:E2").AutoFilter
.Range("$A$2:$E$"...

Phil69970

XLDnaute Barbatruc
Re

Essaye comme ceci :
VB:
Sub TAB_LegSelect()

Dim Derlig1&, Derlig2&

Derlig1 = Sheets("LegSelect").Range("A" & Rows.Count).End(xlUp).Row
If Derlig1 <= 2 Then Derlig1 = 2
Sheets("LegSelect").Range("A2:F" & Derlig1).Clear

With Sheets("ListTotalLeg")
    .AutoFilterMode = False
    Derlig2 = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A2:E2").AutoFilter
    .Range("$A$2:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"
    .Range("$A$2:$C$" & Derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("LegSelect").Range("A2")
    .AutoFilterMode = False
End With

End Sub

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re

Quand tu copies copie juste !!!
(CTRL C CTRL V est ton ami !!!)

Le bon code :

VB:
Sub TAB_LegSelect()

Dim Derlig&, Derlig2&

Derlig = Sheets("LegSelect").Range("A" & Rows.Count).End(xlUp).Row
If Derlig <= 2 Then Derlig = 2
Sheets("LegSelect").Range("A2:F" & Derlig).Clear

With Sheets("ListTotalLeg")
    .AutoFilterMode = False
    Derlig2 = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A1:E1").AutoFilter
    .Range("$A$1:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"
    .Range("$A$2:$C$" & Derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("LegSelect").Range("A2")
    .AutoFilterMode = False
End With

End Sub

Et ton erreur :
Range("A2:E2").AutoFilter
.Range("$A$2:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"

au lieu de :
.Range("A1:E1").AutoFilter
.Range("$A$1:$E$" & Derlig2).AutoFilter Field:=5, Criteria1:="x"

@Phil69970
 

Lolexcel

XLDnaute Nouveau
Mince, merci, ça fonctionne ! Prochaine fois, je n'essaye pas de trouver ce qui cloche, je copie-colle direct

Par contre, je ne comprends pas pourquoi si l'AutoFilter est mis en ligne 1 ça fonctionne, et pas en ligne 2. Est-ce que tu pourrais m'expliquer stp ^^ ?
 

Discussions similaires

Réponses
8
Affichages
404
Réponses
3
Affichages
828
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…