XL 2013 Plusieurs macros, plusieurs fichiers, même répertoire

JBond13600

XLDnaute Junior
Bonjour le Forum,

Alors voilà, j'ai 3 macros qui fonctionnent et 25 fichiers qui ont la même structure. Le tout dans un même répertoire.

J'applique ces 3 macros successivement à ces 25 fichiers et ceci de manière régulière.

Le code vba qu'il me faudrait aurait l'objectif suivant :

1/-Dans le répertoire en cours,
2/- Ouvre la macro 1 "Nom de la macro 1"
3/- Ouvre le fichier 1 "Nom du fichier 1"
4/- Applique la macro 1 au fichier 1
5/- Ferme le fichier 1
6/- Ouvre le fichier "Nom du fichier 2"
7/- Applique la macro 1 au fichier 2
8/- Ferme le fichier 2... jusqu'au 25me fichier.
9/- Ferme la macro 1

10/- Ouvre la macro 2 "Nom de la macro 2"
11/- Ouvre le fichier 1 "Nom du fichier 1"...

Merci de votre aide.
 

ChTi160

XLDnaute Barbatruc
Bonjour jBond13600
Bonjour le Fil,le Forum
un peu lege comme fichier lol
ne peux tu mettre un ou deux fichiers exemples (donnees non confidentielles)
et l exemple de ce que tu veux faire.
et bien sur le fichier a partir duquel tu veux faire tout cela(macro)
sinon tu te rends compte du boulot?
dans l attente
bonne journee
amicalement
jean marie
 

cp4

XLDnaute Barbatruc
Bonjour Jbond, ChTi160;)

En effet, Chti160 a raison de réclamer un fichier. Il faut consulter la charte.
D'autant plus que ça facilite le travail.
Voici un essai
VB:
Option Explicit

Sub ouvrirfichiers()
    Dim Fichier As String, Chemin As String, Wb As Workbook
    Chemin = "D:\Dossier\Sous-Dossier\"  'adapter chemin
    Fichier = Dir(Chemin & "*.xls*")

    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & Fichier)
        'suite de la procedure
        Call test 'appel de tes macros

        Application.DisplayAlerts = False
        Wb.Close True
        Application.DisplayAlerts = True
        Set Wb = Nothing

        Fichier = Dir
    Loop
End Sub
Sub test()
    MsgBox "1ère macro"
    MsgBox "2ème macro"
    MsgBox "3ème macro"
    MsgBox "4ème macro"
End Sub
Bonne journée!
 

JBond13600

XLDnaute Junior
Hyper Génial CP4,

Ca marche avec l'ensemble des macros que j'associe à la tienne.
En revanche, il ne me prend pas une macro qui marche pourtant dans le traitement individuel.

Si tu peux jeter un oeil sur les fichiers que je joins afin de voir où se trouve le problème...

Par ailleurs, si tu peux lever aussi les box auxquelles il faut répondre ce serait mieux car avec le nombre de fichiers à traiter il serait préférable que la procédure aille à son terme sans interventions régulières de ma part.

Un grand merci à toi.
 

Pièces jointes

  • Macro Action Tous Fichiers.xlsm
    106.4 KB · Affichages: 35
  • Combis C EDE 41 de 4 Echec Copie Multiples.xlsx
    118.5 KB · Affichages: 37

cp4

XLDnaute Barbatruc
Tu n'as qu'une seule macro dans ton fichier.
Dans la macro test, tu dois mettre le nom de tes macros dans l'ordre de leur appel.
ou bien dans la macro "ouvrirfichiers", tu mets à la place de call test, tes macros dans l'ordre.

remplace la macro test par celle-ci
VB:
Sub test()
    CopieDonnéesBaseDansFeuilles
End Sub
tu as utilisé msgbox, cette fonction affiche un message.

ou remplace par cette procédure
VB:
Sub ouvrirfichiers()
    Dim Fichier As String, Chemin As String, Wb As Workbook
    Chemin = "H:\Combis C EDE de 4 Test Macro\Test Fichiers à Traiter\"  'adapter chemin
    Fichier = Dir(Chemin & "*.xls*")

    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & Fichier)
        'suite de la procedure
        Call CopieDonnéesBaseDansFeuilles    'appel de tes macros

        Application.DisplayAlerts = False
        Wb.Close True
        Application.DisplayAlerts = True
        Set Wb = Nothing

        Fichier = Dir
    Loop
End Sub
 
Dernière édition:

JBond13600

XLDnaute Junior
Slt le Forum,
Bonjour cp4,

Même avec plusieurs macros, il bloque toujours sur la même, la première.

Jette un oeil si tu peux avec un fichier à traiter.

Merci
 

Pièces jointes

  • Macro Action Tous Fichiers.xlsm
    107.9 KB · Affichages: 25
  • Combis C Test.xlsx
    119.1 KB · Affichages: 24

cp4

XLDnaute Barbatruc
Bonjour Jbond:)

remplace par cette macro, ensuite revois ce que font tes différentes macros.
nb: tes fichiers doivent dans le même répertoire que le fichier "Macro Action Tous Fichiers".
VB:
Sub ouvrirfichiers()
    Dim Fichier As String, Chemin As String, Wb As Workbook
    Chemin = ThisWorkbook.Path 'donne le chemin de ton fichier principal
    Fichier = Dir(Chemin & "\*.xls*") 'on se met dans répertoire du fichier

    Do While Fichier <> "Macro Action Tous Fichiers.xlsm"
        Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
        'suite de la procedure
        Call CopieDonnéesBaseDansFeuilles    'appel de tes macros
        Call CompterEcarts
        Call Effacer
        Call Récupérer
        Application.DisplayAlerts = False
        Wb.Close True
        Application.DisplayAlerts = True
        Set Wb = Nothing

        Fichier = Dir

    Loop
    MsgBox "TRAITEMENT DE TOUTES LES MACROS TERMINE!" 'message pour avertir fin procédure
End Sub
Bonne journée!
 

JBond13600

XLDnaute Junior
Tout a bien été respecté scrupuleusement.
Vois donc ce qu'il m'envoie comme message d'erreur alors que je le répète, la macro CopieDonnéesBaseDansFeuilles marche très bien toute seule.
C'est à n'y rien comprendre...
 

Pièces jointes

  • Classeur1.xlsx
    144.8 KB · Affichages: 31
  • Classeur2.xlsx
    138.4 KB · Affichages: 23

cp4

XLDnaute Barbatruc
Avec Option Explicit en début de module impose la déclaration des variables

dans ton cas c'est le nombre de lignes dans la colonne A, il faut déclarer lig as integer ou Long.
J'ai testé ma macro, elle ouvre bien les fichiers et les referme.

bonne continuation!
 

cp4

XLDnaute Barbatruc
pas de problème, je suis passé par là, tout comme toi quand j'ai commencé à m’intéresser au vba.

Au début de ta macro tu écris dim lig as long

si tu ne veux pas être contraint de déclarer tes variables, retire option explicit au début du module.
Mais il es fortement conseiller de déclarer les variables, ça évite beaucoup de tracas par la suite.
 

JBond13600

XLDnaute Junior
Oupsssssssssssssss,
Ca fonctionne maintenant avec la macro incriminée mais ça ne fonctionne plus avec "CompterEcarts".
Aucun message d'erreur. Message immédiat comme quoi le traitement des fichiers est terminé alors que le traitement n'a pas eu lieu, comme si la macro "CompterEcarts" n'existait pas alors que celle-ci marche très en traitement individuel !!!
 

cp4

XLDnaute Barbatruc
si tu as eu exactement ce message: TRAITEMENT DE TOUTES LES MACROS TERMINE!
il provient de la dernière instruction de la macro "ouvrirfichiers"
MsgBox "TRAITEMENT DE TOUTES LES MACROS TERMINE!"

ça prouve que toutes les macros ont été exécutées.

Il faut revoir tes macros qui ne fonctionnent pas correctement.
tu me dis que toute seule ("CompterEcarts"), elle fonctionne. J'en doute.
Si non, dis-nous sur quel fichier elle doit agir?
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 838
Membres
103 000
dernier inscrit
Nath13