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 :

Macro executant plusieurs macros qui sont dans des fichiers differents [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2022
    Messages : 5
    Par défaut Macro executant plusieurs macros qui sont dans des fichiers differents
    Bonjour,
    Pour faire simple, je voudrais reunir dans une macro 4 macros différentes qui se trouvent dans des fichiers différents :

    VIRUS FRANCE.xlms'!FichierDatesurP
    VIRUS WORLDOMETERS import.xlms'!Onglet
    VIRUS SELECTION.xlms'!CopyLineS
    VIRUS FRANCE.xlms'!saveSurC

    Je lancerai cette nouvelle macro depuis le fichier VIRUS FRANCE.xlms


    Quelle serait la syntaxe ?
    Merci par avance

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Je vous invite à lire la documentation sur l'exploitation du fichier personnel "Personal.xlsB"; ça peut vous aider à concevoir une solution.

    Vous pouvez également vous inspirer du code ci-dessous pour traiter plusieurs fichiers, via macro.

    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
    53
    54
    55
    56
    Sub ExecuterMacroSur_Tout_unRepertoire()
    On Error GoTo SortieSecours
     
        Dim NomRepertoire As String
        Dim Exl_App As Excel.Application
        Dim NomFichier As String
        Dim wb, currWb As Workbook
        Dim ws, currWs As Worksheet
        Dim j As Integer
        Dim fDialog As Object
     
        Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
        Set currWb = ActiveWorkbook
        Set currWs = ActiveSheet
     
        'Choisissez le répertoire contenant les fichiers à traiter
        fDialog.Title = "Choisissez un répertoire"
        fDialog.InitialFileName = currWb.Path
        If fDialog.Show = -1 Then
          NomRepertoire = fDialog.SelectedItems(1)
        End If
     
        'Ouvrez une session Excel la rendant invisible
        Set Exl_App = New Excel.Application:  Exl_App.Visible = False
     
        'Scruter tous les classeurs XL das ce répertoire
        NomFichier = Dir(NomRepertoire & "\*.xlsx")    '   "\*.*"
        Do While NomFichier <> ""
            'Afficher message sur la progression dans la barre du statut (utile car le 2è Excel est invisible)
            Application.StatusBar = "Fichier en cours de tratement = '" & NomRepertoire & "\" & NomFichier & "'"
     
            Set wb = Exl_App.Workbooks.Open(NomRepertoire & "\" & NomFichier)
            '...
            'Ajouter ici vos propres instructions
            '...
            wb.Close SaveChanges:=False 'on ferme le fichier traité sans l'enregistrer (à adapter si nécessaire)
            Debug.Print "Fichier traité " & NomRepertoire & "\" & NomFichier
            j = j + 1
            NomFichier = Dir()
        Loop
     
        Debug.Print "Nombre de fichiers traités = " & j
        Exl_App.Quit
        Set Exl_App = Nothing
     
        'Rétablir le statut par défaut et annoncer la fin du processus
        Application.StatusBar = ""
        MsgBox "L'execution des macros s'est terminée avec succès !", vbInformation, "Macros"
     
    SortieSecours_Fin:
        Exit Sub
     
    SortieSecours:
        MsgBox "Erreur dans le processus !; " & Err & " : " & Error, vbCritical, "Y a un Stuuud"
        Resume SortieSecours_Fin
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2022
    Messages : 5
    Par défaut bisutage
    Merci pour ces indications. Je ne sais comment utiliser la suggestion concernant le fichier PERSONAL. Car je cherchais une syntaxe. Tout comme l'exemple proposé me semble être un bizutage; un peu complexe pour moi, mais surtout, dans les deux cas, les orientations sont un peu loin de la question. Il ne s'agit pas de gérer plusieurs fichiers, mais enquiller des macros provenant de fichiers différents, et devant agir sur ces m^me fichiers
    Merci quand m^me

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne suis pas certain d'avoir compris votre demande et de plus comment voulez-vous que l'on vous aide. La seule chose que vous affichez c'est le nom de quatre classeurs
    Ce que j'ai compris.
    Vous avez une procédure (macro) dans chacun de vos classeurs et vous voudriez les rassembler dans un seul classeur.
    Si c'est le cas, il suffit de faire une copie de chacune d'elles pour les coller dans le module du classeur où vous souhaitez les avoir réunies, à condition évidemment qu'elles n'aient pas le même nom.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2022
    Messages : 5
    Par défaut elliptique
    Bonsoir de Hanoi,
    merci de vous être intéressé à la question. Je comprends que j'ai été trop elliptique.

    J'ai quatre macro :
    FichierDatesurP
    Onglet
    CopyLineS
    saveSurC

    qui chacune se trouve et travaille dans un seul fichier :
    VIRUS FRANCE.xlms
    VIRUS WORLDOMETERS import.xlms
    VIRUS SELECTION.xlms
    VIRUS FRANCE.xlms

    j'ai ainsi 4 macros dont le nom complet est donc :
    VIRUS FRANCE.xlms'!FichierDatesurP
    VIRUS WORLDOMETERS import.xlms'!Onglet
    VIRUS SELECTION.xlms'!CopyLineS
    VIRUS FRANCE.xlms'!saveSurC

    Pour l'instant, MANUELLEMENT, j'ouvre le premier fichier et je lance la macro correspondante, puis le second et sa macro, et ainsi de suite.
    Je souhaite, après avoir ouvert les quatre fichiers, lancer une macro qui exécuterait chacune des quatre et fasse le travail a l'intérieur de son fichier.

    J'ai composé une macro qui lance (type 'call') les quatre, mais le système ne travaille pas dans le bon fichier et fait n'importe quoi.
    Dans cette macro, je ne sais pas lui dire de se positionner dans fichier correspondant à la macro.
    Quand j' essaie de le faire; par exemple : ( ("VIRUS WORLDOMETERS import.xlsm").Activate ), ca plante

    quelle serait la bonne syntaxe ?

    J'espère avoir été plus clair

    Bonne soirée

  6. #6
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    C'est exactement ce que fait le code que je vous ai proposé, à condition de l'adapter et le compléter

    A la ligne "ajouter ici vos instructions", il faut y mettre "Call VIRUS FRANCE.xlms'!FichierDatesurP", par exemple.
    Vous pouvez créer une boucle sur les 4 macros, du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For j = 1 to 4
          ChoixMacro = Choose(j, "Fichier1.Macro1", "Fichier2.Macro2", "Fichier3.Macro3", "Fichier4.Macro4")
          '..... Faire ce que l'on veut ici, et passer à la macro suivante
    Next j
    Je crois, on ne peut plus clair !

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

Discussions similaires

  1. Macro qui fonctionne dans un fichier Excel mais pas dans un autre
    Par Olivier2610 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 12/04/2020, 21h05
  2. macro qui regroupe dans un fichier excel plusieurs fichiers
    Par michamicha94 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/10/2019, 08h47
  3. Aligner des <p> qui sont dans des <div> différents.
    Par JonasM dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/05/2016, 21h35
  4. [vb6]:Recuperer les caracteres qui sont dans un fichier text
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/10/2006, 08h44
  5. Réponses: 1
    Dernier message: 29/08/2006, 14h45

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