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 :

Excécuter Macro dans plusieurs fichiers Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Par défaut Excécuter Macro dans plusieurs fichiers Excel
    Bonjour à tous,

    Je suis super débutant en Excel....
    J'ai réalisé plusieurs macros pour organiser la mise en page de fichiers Excel placés sur un serveur.
    Dans le répertoire 1 (\\serveur\partage\rep1), j'ai deux fichiers et donc 2 macro :
    - Biggest_Files (fichiers volumineux du répertoire 1) => Macro_Biggest_Rep1
    - Duplicate_Files (fichiers dupliqués du répertoire 1) => Macro_Duplicate_Rep1

    Dans le répertoire 2 (\\serveur\partage\rep2), j'ai deux fichiers et donc 2 macro :
    - Biggest_Files (fichiers volumineux du répertoire 2) => Macro_Biggest_Rep2
    - Duplicate_Files (fichiers volumineux du répertoire 2) => Macro_Duplicate_Rep2

    Les macros sont dans perso.xls.
    Je voudrais automatiser le passage des macros sur les fichiers concernés dans les répertoires.

    J'ai fais plusieurs recherches sur Internet mais je ne parviens pas à trouver de solution.
    Pouvez-vous SVP m'aider à ce sujet.
    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    C'est pas la première fois que je le dis, mais automatiser veut à la fois tout dire et rien dire. Donc, pas étonant que tu n'aies rien trouvé là dessus.

    La question, c'est quand veux-tu que les macros soient exécutées?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Par défaut
    Merci pour ta réponse.
    Je dirais 1 fois par mois.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Quel jour précisément? Le 1, le 15, le 31, ...?

    Et, ce qui est plus important: veux-tu le faire à l'ouverture de n'importe quelle feuilel de calcul, où l'ouverture d'une feuille de calcul bien précise?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Par défaut
    Pour le jour, je dirais le 31.
    A l'ouverture d'une feuille de calcul bien précise.
    Merci pour ton aide !

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Excuse moi, mais j'ai le droit d'aller manger, non?

    Je te propose alors de mettre ce code dans l'élément "ThisWorkbook" de ta feuille de calcul (perso.xls si j'ai bien compris):

    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
    Private Sub Workbook_Open()
        If dernier_jour_mois(Date) Then
            Call Macro_Biggest_Rep1
            Call Macro_Duplicate_Rep1
            Call Macro_Biggest_Rep2
            Call Macro_Duplicate_Rep2
        End If
    End Sub
     
    Public Function dernier_jour_mois(ByVal date_testee As Date) As Boolean
        Dim jour As Integer, mois As Integer, annee As Integer
        jour = Day(date_testee)
        mois = Month(date_testee)
        annee = Year(date_testee)
        dernier_jour_mois = False
        If jour = 31 Then
            If (mois <= 7 And mois Mod 2 = 1) Or _
            (mois >= 8 And mois Mod 2 = 0) Then dernier_jour_mois = True
            Exit Function
        End If
        If jour = 30 Then
            If (mois <= 6 And mois Mod 2 = 0) Or _
            (mois >= 9 And mois Mod 2 = 1) Then dernier_jour_mois = True
            Exit Function
        End If
        If jour >= 28 And mois = 2 Then
            If annee Mod 4 <> 0 Then
                dernier_jour_mois = True
            Else
                If jour = 29 Then dernier_jour_mois = True
            End If
        End If
    End Function
    Au passage une petite fonction qui indique si le jour en paramètre est le dernier jour du mois.

    Et là donc ça s'exécutera à chaque ouverture de classeur en fin de mois.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Tu as la réponse dans cette FAQ:
    http://excel.developpez.com/faq/?page=VBA#Run

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Par défaut
    En fait, cette fonction permet d'appeler la macro, OK.
    Mais pour l'appeler, il faut modifier les fichiers un à un.
    Impossible dans mon cas, car les fichiers sont remplacés toutes les semaines.

    En fait ce que je cherche à faire (mais je me demande de + en + si c'est possible...) c'est de disposer d'un fichier (vide) qui contient ma macro (pour faire simple une seule macro).

    Je veux créer un batch, ou un exe, ou quoi que ce soit d'autre qui aille lire la macro dans mon fichier macro.xls et qui l'exécute sur les fichiers sur le serveur.
    Peut-être en indiquant le path quelque part :
    \\serveur\partage\rep1\fichier1.xls
    \\serveur\partage\rep1\fichier2.xls

    Voilà. Merci pour ton aide.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    A mon avis tu ne t'es pas bien organisé.
    Ou alors tu as changé de concept comme de chemise.

    Pourquoi tu ne mets pas tes procédures Biggest_Files et Duplicate_Files dans ton fichier perso.xls?

    Si tu envisage le .exe (ce qui est tout à fait possible), tu devrais alors t'orienter du coté du VB et non pas du VBA.

    Je serais toi, je verrais du coté du VB en faisant un programme qui affiche une boîte de dialogue qui demande dans quel répertoire sont les fichiers à mettre en forme. Ton programme (j'appele plus ça macro quand c'est du VB) parcourra alors tous les fichiers Excel du répertoire et les mettra en forme.
    La petite difficulté, c'est que tu devras toucher un peu mieux l'utilisation d'applications externes (vu que la Excel sera une application externe) pour faire ce que font tes 2 procédures.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Par défaut
    Je viens de réussir à appeler la macro de mon fichier macro.xls depuis un autre fichier test.xls.
    Maintenant que la macro est appelée comment lui dire d'ouvrir les fichiers dans les path spécifiés, d'exécuter la macro et pour finir de l'enregistrer :
    \\serveur\partage\rep1\fichier1.xls
    \\serveur\partage\rep1\fichier2.xls

    Voilà la syntaxe de la macro dans mon fichier test.xls :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TEST2()
    Result = Application.Run("macro.xls!Macro1")
    End Sub

    Merci pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  3. Réponses: 10
    Dernier message: 28/08/2008, 09h15
  4. Réponses: 9
    Dernier message: 10/05/2007, 10h56
  5. Macros sur Plusieurs fichiers Excel
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 11h21

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