Exceuter une macro dans plusieurs fichiers excel

0

Bonjour,

Avant de commencer, je precise que je suis newbie en vba. CA va peut etre eviter qu'on me balance des tomates si la reponse etait evidente :)

Je cherche à executer une macro sur un ensemble de fichiers excel.

J'ai donc un premier bout de code qui va m'ouvrir mes fichiers via une dialog box, qui me lance ma macro puis qui sauve et quitte le fichier.

Ce premier bout de code fonctionne, le voici :

[code]

Sub test()

 Const type_fichier As String = "tous fichiers, *.*"

 Dim FichierChoisi As String

  'Choisir un fichier

  FichierChoisi = Application.GetOpenFilename("Fichiers Excel, *.xlsx")

  If FichierChoisi = "" Then Exit Sub

  'ouvrir le fichier

  Workbooks.Open (FichierChoisi)

  'traitement

   

    Call V_uniques

  'puis à la fin fermer et enregistrer le fichier

  ActiveWorkbook.Close savechanges:=True

End Sub

[/code]

Là où ça ne marche plus c'est l'execution de la macro...

Ce qu'elle fait, c'est rajouter l'autofiltre, et filtrer 3 colones

puis en copier une dans un nouvel onglet

et garder que les valeurs uniques de cette colonne du nouvel onglet.

[code]

Sub V_uniques()

'

' V_uniques Macro

'

'

    Rows("1:1").Select

    Selection.AutoFilter

    Range("BY1").Select

    ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=71, Criteria1:= _

        "Confirmed"

    ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=72, Criteria1:="=4" _

        , Operator:=xlOr, Criteria2:="=5"

    ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=73, Criteria1:=Array _

        ("Active", "New", "Re-Opened"), Operator:=xlFilterValues

    Range("BR1").Select

    Range(Selection, Selection.End(xlDown)).Select

    Selection.Copy

    Sheets.Add After:=ActiveSheet

    ActiveSheet.Paste

    Columns("A:A").Select

    Application.CutCopyMode = False

    ActiveSheet.Range("$A$1:$A$839").RemoveDuplicates Columns:=1, Header:=xlYes

End Sub

[/code]

Avec F8 le plantage se fait au niveau du     Rows("1:1").Select avec le message Run-time error '1004': Application-defined or object-defined error

C'est pour un rendu demain au boulot...

Pour info, si j'enregistre ma macro dans chacun de mes  fichiers et l'execute, ca marche.

C'est juste que j'ai +2000 fichiers...

Mille mercis !


    Posté le 21 janvier 2018, 03:04
    par nabjaf
    Répondre
    0

    Bonjour,

    Essaies ce code :

    Option Explicit
    Sub test()
    Dim NomFichierChoisi As String
    Dim FichierChoisi As Workbook
      'Choisir un fichier
      NomFichierChoisi = Application.GetOpenFilename("Fichiers Excel, *.xlsx")
      If NomFichierChoisi = "" Then Exit Sub
      'ouvrir le fichier
      Set FichierChoisi = Workbooks.Open(NomFichierChoisi)
      'traitement
      Call V_uniques(FichierChoisi)
      'puis à la fin fermer et enregistrer le fichier
      FichierChoisi.Close savechanges:=True
    End Sub
    Sub V_uniques(Fichier As Workbook)
      With Fichier
      .Worksheets.Add After:=.Worksheets(1)
      With .Worksheets(1)
      With .Range("$A$1").CurrentRegion
      .Rows(1).AutoFilter
      .AutoFilter Field:=71, Criteria1:="Confirmed"
      .AutoFilter Field:=72, Criteria1:="=4", Operator:=xlOr, Criteria2:="=5"
      .AutoFilter Field:=73, Criteria1:=Array("Active", "New", "Re-Opened"), Operator:=xlFilterValues
      End With
      End With
      .Worksheets(1).Columns("BR").Copy .Worksheets(2).Columns("A:A")
      .Worksheets(2).Range("$A$1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
      End With
    End Sub

    Patrice33740 Posté le 22 janvier 2018, 16:52
    par Patrice33740

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :