Macro et filtre automatique

  • Initiateur de la discussion Initiateur de la discussion Atiom
  • 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 !

Atiom

XLDnaute Occasionnel
Bonjour

Je vous sollicite encore une fois.

La Macro ci-dessous efface le contenue de la plage ( A2 :A1500 ) et en suite remets la valeur 0
Elle fontine parfaitement, le seule problème est que comme j’ai des filtres automatiques dans la Feuil elle ne tiens pas conte des lignes masqués, et donc ça n’efface pas ces lignes.

Ets-ce que quelqu’un peut me corriger cette macro

Merci d’avance.

Code:
Sub nouvelle()

    Range("A2:A1500").Select
    Selection.ClearContents
    Range("A2:A1500").Select
    Range("A2:A1500").Value = 0
    Range("A2").Select

End Sub
 
Re : Macro et filtre automatique

Salut Atiom,

Tu peux le faire toi même, il suffit pour cela d'aller dans le menu
-> Outils -> Macro -> Nouvelle macro

Ensuite tu effectues les bonnes actions pour pouvoir effacer toutes tes valeurs (enlever tous les filtres)

Du coup dans ton module tu retrouveras tout le code pour faire ce que tu demandes !
Ce qui te permets du même coup de comprendre ce quio se passe dans ton code VBA 😉

Voili, voilà

A+
 
Re : Macro et filtre automatique

Salut Bruno

Voici ma Macro

Code:
    Range("A1:J1").Select
    Selection.AutoFilter
    Range("A2:A1500").Select
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "0"
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A1500"), Type:=xlFillDefault
    Range("A2:A1500").Select
    Range("A1:J1").Select
    Selection.AutoFilter
    Range("A2").Select

J’enlève le filtre
Je sélectionne la plage A2:A1500 et je l’efface le contenue et je remets 0
Je remets le filtre et me plage dans la cellule A2.

Mais je souhaiterait remets le filtre comme il été avant exécution de la macro.

Et c’est la que ça se complique, parce dans une plage de 1500 lignes il pet y avoir plus de 200 le sections différentes.

Comment faire pour remettre le filtre dans la bonne sélection ?

Merci d’avnce
 
Re : Macro et filtre automatique

Salut Atiom,

Je pense que lors de l'enregistrement de la macro, tu n'as pas correctement effectué les manoeuvres qu'il fallaient 😕

Bon, bref 😉

Tu trouveras ci-joint un code qui devrait mieux t'aller
Code:
Sub Macro1()
  Dim VFil(10) As String ' Tableau pour filtres des 10 colonnes
  Dim I
  ' Déterminer le/les filtres
  For I = 1 To ActiveSheet.AutoFilter.Filters.Count
    If ActiveSheet.AutoFilter.Filters(I).On Then
      VFil(I) = ActiveSheet.AutoFilter.Filters(I).Criteria1
    End If
  Next I
  '
  ' Enlever le filtrage automatique
  Range("A1:J1").AutoFilter
  '
  ' Effacer la colonne A de la ligne 2 à 1500
  Range("A2:A1500").ClearContents
  '
  ' Remettre le/les filtre(s) comme à l'origine
  For I = 1 To 10
    If VFil(I) <> "" Then
      [B][COLOR=blue]Cells(1, I).[/COLOR][/B]AutoFilter Field:=I, Criteria1:=Mid(VFil(I), 2, 255)
    End If
  Next I
End Sub

Je pense qu'il est possible de l'optimiser, mais ça fonctionne comme ça 🙂

A+
 
Dernière modification par un modérateur:
Re : Macro et filtre automatique

Salut Bruno

Sans vouloir être casse pieds !
Si je mets ton code j’obtient :
Code:
Erreur 1004 La méthode AutoFilter de la classe Range a échoué
Parfois le chose les plus simples sont compliquées !
Bon, bref 😉
Je continue à chercher.
Merci Bruno🙂

A+
 
Re : Macro et filtre automatique

Re,

Désolé, pas testé le code jusqu'au bout 😱
Comme quoi faut toujours aller au bout des choses 😀

Remplace : Selection. par Cells(1, I).
dans la boucle de fin

Ca devrait aller nettement mieux

A+
 
Re : Macro et filtre automatique

Salut Bruno

Merci, 🙂ça fonctionne mais il y a encore un petit bug.
Lorsque le filtre est sur « Tous « , ça pose des problèmes.
Je suppose qu’il faut mettre un if… mais je n’ai pas trouvé comment !

Je mets le fichier joint pour teste
 

Pièces jointes

Re : Macro et filtre automatique

Bonjour le forum


Ets-ce que quelqu’un peux me donner un petit coup de main ?

D’après BrunoM45 ça doit être quelque chose de simple, mais je ne trouve pas la solution.

Merci d’avance de votre aide.
 
Re : Macro et filtre automatique

Bonjour Atiom, Bruno 🙂,

Test ceci:

Code:
Private Sub CommandButton1_Click()
  Dim VFil(10) As String ' Tableau pour filtres des 10 colonnes
  Dim I, Actif As Boolean 'permet de vérifier que le filtre est actif
'on active le filtre s'il ne l'est pas
  If Not ActiveSheet.AutoFilterMode Then Range("A1:J1").AutoFilter
  Actif = False
  ' Déterminer le/les filtres
  For I = 1 To ActiveSheet.AutoFilter.Filters.Count
    If ActiveSheet.AutoFilter.Filters(I).On Then
      VFil(I) = ActiveSheet.AutoFilter.Filters(I).Criteria1
    Actif = True
    End If
  Next I
  '
  ' Enlever le filtrage automatique
  Range("A1:J1").AutoFilter
  '
  ' Effacer la colonne A de la ligne 2 à 1500
  Range("A2:A1500").ClearContents
  '
  ' Remettre le/les filtre(s) comme à l'origine
  If Actif Then
    For I = 1 To 10
      If VFil(I) <> "" Then
        Cells(1, I).AutoFilter Field:=I, Criteria1:=Mid(VFil(I), 2, 255)
      End If
    Next I
  End If
'on active le filtre s'il ne l'est pas
  If Not ActiveSheet.AutoFilterMode Then Range("A1:J1").AutoFilter
End Sub
 
Dernière édition:
- 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
2
Affichages
666
G
Réponses
7
Affichages
1 K
gfgghbhg
G
Réponses
5
Affichages
618
L
Réponses
9
Affichages
1 K
B
  • Résolu(e)
2
Réponses
16
Affichages
2 K
benbella1991
B
Réponses
7
Affichages
1 K
S
  • Question Question
Réponses
11
Affichages
2 K
Smercierj
S
A
Réponses
7
Affichages
1 K
A
Retour