Annulation filtre automatique par macro

Gudule

XLDnaute Nouveau
bonjour,
les réponses trouvées sur le forum ne fonctionne pas sur mon tableau et je ne comprends pas pourquoi. Explication : j'ai six tableaux de suivi incrémentés par des personnes qui utilisent des filtres automatique. Leur responsable doit visualiser les six tableaux fusionnés en un seul. pas de soucis à l ouverture la mise à jour de l'ensemble se fait bien, mais s'il y a des filtres en cours seules les données non filtrées sont rappatriées. sur le forum j'ai trouvé deux solutions :

Sheets(4).FilterMode = False
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

ou

On Error Resume Next
Sheets(4).ShowAllData
On Error GoTo 0

et cela ne fonctionne pas :-(
ci dessous mon code quelqu'un peut il me dire où est mon erreur sinon je vais etre obligé de reprendre la vieille methode des formules (très lourde)
merci de votre aide . Bonne journée . Cordialement . Bénédicte

-----------------------------------------------------------------------------

Private Sub Workbook_Open()

Sheets(1).Range("A1").CurrentRegion.Offset(1).Clear

Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = 1 To 6


ligne = Sheets(1).Range("A1").CurrentRegion.Rows.Count + 1
If i < 10 Then
fichier = "S0" & i & ".xls"
Else
fichier = "S" & i & ".xls"
End If
Workbooks.Open ("Z:\F.T.Investissement\ADV\SUIVI DES VENTES\-2011-\suivis\" & fichier)
Workbooks(fichier).Sheets(4).Activate

Range("A1").Select
Sheets(4).FilterMode = False
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
'On Error Resume Next
'Sheets(4).ShowAllData
'On Error GoTo 0
Selection.CurrentRegion.Select
Selection.Offset(1).Select
Selection.Copy
ActiveWorkbook.Close
Sheets(1).Select
Cells(ligne, 1).Select
ActiveSheet.Paste

Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 

Gudule

XLDnaute Nouveau
Re : Annulation filtre automatique par macro

Bonjour Pierrot93, je viens de tester en enlevant les autres tests.... et ça fait pareil ! je ne comprends pas. il y a t il un moyen de contourner cela ? d'avance merci ! bonne journée
 

Efgé

XLDnaute Barbatruc
Re : Annulation filtre automatique par macro

Bonjour Gudule, re Pierrot :)
Je ne voudrais pas dire une nouvelle bétise, mais j'ai l'impression que l'ordre des lignes de code est mauvais. J'essairai ceci:
VB:
Range("A1").Select
With ActiveSheet
    If .AutoFilterMode And .FilterMode Then .ShowAllData
    .FilterMode = False
End With
'Etc...
Cordialement
 

Gudule

XLDnaute Nouveau
Re : Annulation filtre automatique par macro

Pierrot, je viens de tester avec la formule ci dessus, non toujours pareil. ci joint un extrait de mon tableau. il y a deux fichiers sources S01 et 02 et c'est sur la synthèse que j ai le problème de filtre qui ne s'annule pas. et en plus maintenant ya un bugg sur la référence aux docs sources. je n'ai eu que deux jours de formation vba et je galère. J espère que ca va aller !
 

Pièces jointes

  • test pour aide.zip
    226.7 KB · Affichages: 36

Pierrot93

XLDnaute Barbatruc
Re : Annulation filtre automatique par macro

Re, fg:)

pourquoi 3 fichiers dans ton "zip".. attention le code s'applique sur la feuille active du classeur actif... si ce n'est pas le cas il faut préciser les différents objets :
Code:
With Workbooks("nomclasseur.xls").Sheets("nomfeuille")
    If .AutoFilterMode And .FilterMode Then .ShowAllData
End With
 

Efgé

XLDnaute Barbatruc
Re : Annulation filtre automatique par macro

Re
Bien d'accord avec Pierrot,
J'en suis là pour ma part (à tester, evidemment)
VB:
    ' ... / ....
    Workbooks.Open ("C:\Documents and Settings\leclerc\Bureau\test pour aide\" & fichier)
    With ActiveWorkbook
        .Sheets(4).Activate
        With ActiveSheet
            .Range("A1").Select
            If .AutoFilterMode And .FilterMode Then .ShowAllData
            .Range("A1").CurrentRegion.Offset(1).Copy
        End With
        .Close False
    End With
    ' ... / ....
Cordialement
 

Gudule

XLDnaute Nouveau
Re : Annulation filtre automatique par macro

ayé cela fonctionne !! en effet, le code ne s'appliquait donc pas sur les bons fichiers. J'avais mis trois fichiers, ma synthèse qui centralise les infos des fichiers sources s01 et s02 où les filtres sont appliqués et n'étaient pas supprimés par la formule. merci beaucoup de ton aide Pierrot ! bonne journée ! cordialement. Bénédicte
 

Pierrot93

XLDnaute Barbatruc
Re : Annulation filtre automatique par macro

Re,

petite précision tout de même, le code étant placé dans le module "thisworkbook", toute instruction envoyé s'appliquera sur ce classeur (même activesheet) sauf à préciser le classeur concerné :
Code:
Workbooks("Classeur1.xls").ActiveSheet.Range("B1").Value = 999
 

Gudule

XLDnaute Nouveau
Re : Annulation filtre automatique par macro

merci Elfé cela fonctionne ! et merci à ce forum sans lequel j'aurai beaucoup de peine pour essayer de faire du développement en VBA que j'ai découvert lors d'une formation de deux jours et m'a totalement séduite par les possibilités que cela offrait ! alors merci à vous tous qui faites vivre ce forum et êtes toujours là pour nous aider.... j'espère un jour pouvoir aider moi aussi ! bonne journée à tous !
 

Gudule

XLDnaute Nouveau
Re : Annulation filtre automatique par macro

Pierrot
oui j'ai vu et effectivement je pensais qu'indiquant que je basculais dans un autre fichier par la fonction Workbooks.open(monfichier) il n'était pas nécessaire de redonner les noms complets dans les lignes suivantes, qu'elles faisaient forcément référence au fichier ouvert.... c'est en faisant que l'on apprend ! encore merci !
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado