Votre question
Résolu

Execution d'une macro excel sur plusieurs fichiers

Tags :
  • Microsoft Excel
  • VB
  • Programmation
Dernière réponse : dans Programmation
21 Janvier 2018 02:58:02

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 :

  1. Sub test()
  2. Const type_fichier As String = "tous fichiers, *.*"
  3. Dim FichierChoisi As String
  4.  
  5.  
  6. 'Choisir un fichier
  7. FichierChoisi = Application.GetOpenFilename("Fichiers Excel, *.xlsx")
  8. If FichierChoisi = "" Then Exit Sub
  9.  
  10. 'ouvrir le fichier
  11. Workbooks.Open (FichierChoisi)
  12.  
  13. 'traitement
  14.  
  15. Call V_uniques
  16.  
  17.  
  18. 'puis à la fin fermer et enregistrer le fichier
  19. ActiveWorkbook.Close savechanges:=True
  20. End Sub


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.

  1. Sub V_uniques()
  2. '
  3. ' V_uniques Macro
  4. '
  5.  
  6. '
  7. Rows("1:1").Select
  8. Selection.AutoFilter
  9. Range("BY1").Select
  10. ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=71, Criteria1:= _
  11. "Confirmed"
  12. ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=72, Criteria1:="=4" _
  13. , Operator:=xlOr, Criteria2:="=5"
  14. ActiveSheet.Range("$A$1:$CS$101425").AutoFilter Field:=73, Criteria1:=Array _
  15. ("Active", "New", "Re-Opened"), Operator:=xlFilterValues
  16. Range("BR1").Select
  17. Range(Selection, Selection.End(xlDown)).Select
  18. Selection.Copy
  19. Sheets.Add After:=ActiveSheet
  20. ActiveSheet.Paste
  21. Columns("A:A").Select
  22. Application.CutCopyMode = False
  23. ActiveSheet.Range("$A$1:$A$839").RemoveDuplicates Columns:=1, Header:=xlYes
  24. End Sub


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 !

Autres pages sur : execution macro excel plusieurs fichiers

Meilleure solution

a c 90 L Programmation
23 Janvier 2018 08:34:14

Salut, un peu en retard pour toi, dsl,
Mais je présume que c'est lié au fait que ta macro ne sait pas dans quel "workbook" s’exécuter ...
amha si tu rajoutes juste "activesheet." avant row(1;1), ça devrait marcher
partage