Excel macro désactiver filtre automatique [Résolu/Fermé]

Signaler
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
-
 Bernard BB47 -
Bonjour,
Je suis débutante en macro mais j'aime apprendre. J'ai créé une macro qui envoie certaines données d'une feuille1 dans une feuille2.
Cependant, si la feuille2 contient un filtre automatique, les données envoyées écrasent les lignes masquées de mon filtre au lieu de les saisir à la suite de ma feuille. J'aimerai donc désactiver automatiquement le filtre pour ne pas perdre les données de la feuille2. N'ayant pas assez de connaissances en macro, je n'arrive pas à trouver les lignes de code.
Merci de m'aider
Eve

5 réponses

Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
62
Salut Eve,

Je suis ravi que ca ai pu t'aider.
Dans l'aide de Microsoft basic, tu peux aussi trouver un bout de script qui permet d'enregister les paramètres du filtre en cours dans des variables, et tu peux réappliquer le filtre en fin de script... Donc au moment au tu fais le test avec la commande
If Worksheets("Feuil2").AutoFilterMode Then
tu peux y ajouter le script Microsoft adapté pour réappliquer le filtre en fin de macro.

Pour t'aider, je te met le script complet ci dessous, à toi de le personnaliser. Si tu veux de l'aide dessus, n'hésite pas!

Extrait de l'aide MS:
L'exemple suivant montre comment stocker les critères d'adresse et de filtrage pour le filtre en cours et comment appliquer de nouveaux filtres.

Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String

Sub ChangeFilters()

Set w = Worksheets("Crew")
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray(1 To .Count, 1 To 3)
        For f = 1 To .Count
            With .Item(f)
                If .On Then
                    filterArray(f, 1) = .Criteria1
                    If .Operator Then
                        filterArray(f, 2) = .Operator
                        filterArray(f, 3) = .Criteria2
                    End If
                End If
            End With
        Next
    End With
End With

End Sub



Voila bon courage!

ps: non je n'admire pas particulièrement l'équipe d'Arsenal, je traine ce pseudo depuis près de 10ans, a l'époque on se donnait des surnoms quand on jouait au paintball avec des amis, comme on me surnommait Gunner parceque je visais plutot bien, j'ai associé PB (PaintBall) et Gunner... voila voila...

a+!
14
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60803 internautes nous ont dit merci ce mois-ci

Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50
Merci à toi Gunner
Eve
Merci pour votre aide.
Quand on ne sait créer des macro que par l'enregistrement automatique, c'est difficie de faire des If , Then...
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
62
Salut!
Le mieux c'est de vérifier si le filtre auto est activé dans la feuille destination avant de faire l'export des données.
Pour ca, c'est simple:

Sub import_vers_feuil2()

If Worksheets("Feuil2").AutoFilterMode Then
     Worksheets("Feuil2").AutoFilterMode = False
End If

[Lance ta procédure d'import]

End Sub



a+
Merci!
Génial les forums : j'arrive 7 ans plus tard et la réponse m'aide aussi :-)
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50
J'ai utilisé les 2 lignes de PBGunner :

If Worksheets("Feuille2").AutoFilterMode Then
Worksheets("Feuille2").AutoFilterMode = False
End if


et j'ai redemandé les filtres avec les lignes suivantes :
Range("A2:N2").Select
Selection.AutoFilter
Merci
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50
Merci PBGunner,
Avec ce que tu m'as donné, j'ai réussi. Cependant, je ne voulais pas enlever le filtre complètement mais seulement désactiver le filtrage en cours. Tu m'as mise dans la bonne voie car j'ai utilisé ta macro et l'ai complétée avec une autre macro pour réactiver le filtre à la fin (n'ayant pas assez de connaissances en macro, j'ai utilisé l'enregistreur de macro et l'ai analysé). Tu m'as beaucoup aidée et je t'en remercie.
Au fait PBGunner parce que tu aimes l'équipe d'Arsenal ?
Merci aussi pour la rapidité de ta réponse !
A+
Eve