IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Loop Unfilter - VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut Loop Unfilter - VBA
    Bonjour,

    Je souhaite automatiser pour plusieurs fichiers identiques, un unfilter pour la colonne A de la feuil Para.

    j'ai le code qui fonctionne pour un seul fichier correctement mais pas lorsque je fais une loop. Je n'ai pas de message d'erreur mais le changement ne s'effectue pas en vérifiant le résultat.

    Voici le code qui fonctionne pour un seul fichier:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub unfilterr()
    Dim y As Workbook, myfile, FolderPath, path
    Dim ws As Excel.Worksheet
    Set y = Workbooks.Open("Z:\VBA\Copie de Devis.xlsx")
    With y.Worksheets("Para RF")
            If Not y.Worksheets("Para RF").AutoFilter Is Nothing Then
                    y.Sheets("Para RF").Range("A1").AutoFilter Field:=1
            End If
        End With
    End Sub
    Mais en faisant la loop suivante, pas de modification obtenue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub unfilter1()
    Dim y As Workbook, myfile, FolderPath, path
    Dim ws As Excel.Worksheet
     
    '## Open workbooks first:
    Application.ScreenUpdating = False
      Application.EnableEvents = False
      Application.Calculation = xlCalculationManual
     
     
     
    FolderPath = "Z:\VBA\PARA\"
        path = FolderPath & "*.xls*"
        myfile = Dir(path)
     
     Do While myfile <> ""
     
    Set y = Workbooks.Open(path)
     
    Set ws = y.Worksheets("Para RF")
    With ws
            If Not ws.AutoFilter Is Nothing Then
                    y.Sheets("Para RF").Range("A1").AutoFilter Field:=1
            End If
        End With
     
    myfile = Dir()
        y.Close saveChanges:=True
        Loop
     
     
        MsgBox ("Task Complete")
    End Sub
    Pourquoi j'arrive pas à automatiser ce code? quelles sont les raisons pour ne pas pouvoir unfiltrer la colonne?

    Merci d'avance pour votre aide!

    merci pour vos suggestions.

    Cheers!!

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    voici un bout de code qui ouvre et ferme les fichiers d'un dossier.
    Après tu fais le traitement que tu veux entre les deux instructions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Fichiers()
    Application.ScreenUpdating = False
    Dim myPath As String, myFile As String
     
        myPath = ThisWorkbook.Path
        myFile = Dir(myPath & "\*.xls*")
     
        c = 1
        Do While myFile <> ""
            'ouverture du fichier
            Workbooks.Open myFile
            'traitement ...
            'fermeture du fichier
            Workbooks(myFile).Close SaveChanges:=False
        Loop
    End Sub
    Attention, il me semble que sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not ws.AutoFilter Is Nothing Then
    Le ws est de trop, tu es dans un bloc with ws end with

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Bonjour,
    Merci pour la réponse. Mais je ne comprends pas le c=1 pourquoi?
    et si j'enlève le ws autofilter marche plus devient non defini alors j'ai enlevé le with ws et gardé #ws.Autofilter#
    mais est ce qu'il faut mettre #savechanges = False?#

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    en exécutant le code j'ai remarqué que que le premier fichier de la liste à été modifié!!
    le problème est bien donc dans ma loop non? et j'ai remarqué qu'il répète la loop sur le premier fichier uniquement!
    sachant que je n'ai pas de message d'erreur! trop bizarre!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    myFile = Dir(myPath & "\*.xls*")
    Do While myFile <> ""        'ouverture du fichier
           with Workbooks.Open( myFile)
            'traitement ...
            'fermeture du fichier
            .Close SaveChanges:=False 
         end with
    myFile = Dir
    Loop

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    j'ai essayé mais toujours le même problème! pas de message d'erreur et pas de modification.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Voici le code que j'excecute, ceci ne modifie pas les filitres, maintenant pour aucun

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub unfilter1()
    Dim y As Workbook
    Dim myfile, myExtension, myPath
    Dim ws As Excel.Worksheet
     
    '## Open workbooks first:
    Application.ScreenUpdating = False
      Application.EnableEvents = False
      Application.Calculation = xlCalculationManual
    Application.DisplayAlerts = False
        myPath = "Z:\VBA\Test\"
     
      If myPath = "" Then GoTo ResetSettings
     
    'Target File Extension (must include wildcard "*")
      myExtension = "*.xls*"
     
    'Target Path with Ending Extention
      myfile = Dir(myPath & myExtension)
     
     
     
     
     
     
     
     Do While myfile <> ""
     
    Set y = Workbooks.Open(myPath & myfile)
     
    'Set ws = y.Worksheets("Para RF")
    With y.Worksheets("Para RF")
            If Not y.Sheets("Para RF").AutoFilter Is Nothing Then
                    y.Sheets("Para RF").Range("A1").AutoFilter Field:=1
            End If
        End With
     
    myfile = Dir()
        y.Close saveChanges:=False
        Loop
     
     
        MsgBox ("Task Complete")
     
    ResetSettings:
      'Reset Macro Optimization Settings
        Application.EnableEvents = True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
     
    End Sub

Discussions similaires

  1. [XL-2010] problème d'interraction et de loop entre vba et putty en utilisant wscript.shell
    Par legethi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/11/2014, 22h42
  2. VBA Excel Loop sur Range de Cells - Copie Ficher
    Par bebert00 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/09/2010, 18h11
  3. [E-03] VBA Pb Do..Loop until + Offset
    Par Bastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/02/2009, 19h33
  4. [VBA-E] - Loop sur userform
    Par Qatari dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/03/2007, 14h00
  5. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo