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

Excel Discussion :

Executer une macro sur plusieurs fichiers excel


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Sec officer
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Sec officer

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Executer une macro sur plusieurs fichiers excel
    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 : 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
     
    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
    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 : 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
     
    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
    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 !

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,
    Votre macro est installé sur un fichier que j'appellerai "fichier principal" et elle doit exécuter des ordres sur un autre fichier "fichier secondaire", il faut donc lui dire de changer de fichier.
    A l'ouverture du fichier principal, si vous regardez dans le ruban "Affichage", "onglet "Fenêtre" -"changement de fenêtre", le nom de votre fichier apparaît précédé du chiffre 1.
    A l'ouverture d'un 2ème fichier excel "dans la même session", le nouveau prendra la valeur 2 et ainsi de suite.
    Il suffit donc dans votre macro de sélectionner la 2ème fenêtre avant de sélectionner la ligne 1. Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Windows(2).Activate
        Rows("1:1").Select
    Après la fermeture du fichier, le nouveau fichier à traiter prendra à son tour le N°2 et ce jusqu'à ce que tous soient traités.
    Cdlt

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Sec officer
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Sec officer

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Hello,
    Ca ne marchait plus jusqu'à ce que je m'appercoive qu'une autre fenetre excel etait ouverte
    Merci beaucoup c'est nickel !

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  3. Creer un macro qui verifie une info sur plusieur fichier excel
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/07/2009, 16h42
  4. Macros sur Plusieurs fichiers Excel
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 11h21
  5. Réponses: 4
    Dernier message: 03/12/2004, 11h18

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