macro pur faire un filtre

  • Initiateur de la discussion Initiateur de la discussion a10
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

a10

XLDnaute Impliqué
bonjour

j'ai une macro qui copie les lignes qui ont un "A"

Range("E2:X512").Select
ActiveSheet.Range("$D$1:$BA$512").AutoFilter Field:=18, Criteria1:="<>"
Selection.Copy

mais quand il n'y pas de A il copie tout le tableau

quand il y a au moins un a la macro fonctionne


A+
 
Re : macro pur faire un filtre

Bonjour a10

ce serait mieux comme cela:
Code:
Sub TriCopie()
Dim Drl As Integer, Drl2 As Integer, i As Integer
Set f = Sheets("Feuil1")
Set g = Sheets("copie")

Drl = f.Range("B65500").End(xlUp).Row
For i = 2 To Drl
    If f.Cells(i, 2).Value = "a" Then
        Drl2 = g.Range("A65500").End(xlUp).Row + 1
        g.Range("A" & Drl2).Value = f.Cells(i, 1).Value
        g.Range("B" & Drl2).Value = f.Cells(i, 2).Value
    End If
Next i
End Sub

@+ 😎
 
Re : macro pur faire un filtre

Bonsoir xhudi69, a10

Code à insérer dans Feuil1. Tabeau1 est le nom de la plage de cellules "a2:b65536"

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect(Target, [Tableau1]) Is Nothing Then
Range("Tableau1").AutoFilter Field:=2, Criteria1:=Target.Text, _
Visibledropdown:=True
End If
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect(Target, [Tableau1]) Is Nothing Then
ActiveSheet.ShowAllData
End If
End Sub


Et dans le code du bouton

Code:
Sub Macro1()
Sheets("Feuil1").Range("a2:b65536").SpecialCells(xlCellTypeVisible).Copy Sheets("copie").Range("a2")
End Sub

Voir pièce jointe.

A+ 😎
 

Pièces jointes

Dernière édition:
Re : macro pur faire un filtre

Bonsoir a10

As-tu pris le soin de regarder le dernier classeur??

POURQUOI QUAND IL N'Y A PAS DE A; il prends tout le tableau ?

Essaie comme ceci : If ActiveSheet.Range("$D$1:$BC$512").value <> "A" Then Exit sub

ET POURQUOI TU AS MIS .AutoFilter Field:=21???


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("c1:x65536")) Is Nothing Then Exit Sub
On Error Resume Next
If Not Intersect(Target, [Tableau1]) Is Nothing Then
' Ici la macro trie d'après la colonne choisie et la valeur de la cellule active.
Range("Tableau1").AutoFilter Field:=Target.Column, Criteria1:=Target.Text, _
Visibledropdown:=True
If Target.Text = "" Then: MsgBox "Il n'y a plus de données dans le Tableau", , "Tableau": Exit Sub
End If
End Sub



A+ 😎
 
Re : macro pur faire un filtre

Bonjour a10,

avec le dernier fichier que j'ai, mis copie cette macro.

J'ai modifié la ligne affichant le MsgBox, pour éviter de filtrer si le tabeau ne contient pas de A.


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lettre As String
Application.ScreenUpdating = False
If Not Intersect(Target, Range("c1:x65536")) Is Nothing Then Exit Sub
On Error Resume Next
lettre = "a"
If Not Intersect(Target, [Tableau1]) Is Nothing Then
Range("Tableau1").AutoFilter Field:=Target.Column, Criteria1:=Target.Text, _
Visibledropdown:=True
If Target.Text <> "a" Then: MsgBox "Vous devez sélectionner la lettre " & lettre & " dans le Tableau", , "Tableau": ActiveSheet.ShowAllData: Exit Sub
End If
End Sub


A+ 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
340
Réponses
18
Affichages
807
Réponses
10
Affichages
547
Réponses
18
Affichages
317
Réponses
4
Affichages
243
Retour