VBA - Lancer macro dans plusieurs fichiers d'un même répertoire

Bonjour le Forum,

Je souhaiterais savoir si techniquement il est possible de lancer une macro pour traiter plusieurs fichiers d'un même répertoire.

La commande ressemblerait à quelque chose comme :

1/- Ouvre la macro "XXX" du répertoire en cours

2/- Ouvre le premier fichier, quelque soit son nom

3/- Applique lui la macro "XXX"

4/- Ferme le fichier ainsi traité

5/- Passe au suivant

Et ainsi de suite jusqu'au dernier fichier rencontré dans le répertoire.

Merci de vos réponses.

Salut

tu trouveras sous : https://www.extendoffice.com/documents/excel/627-excel-list-files.html#a2

un code pour retrouver tout les fichiers d'un répertoire

Option Explicit

Sub GetFileNames()

Dim xRow As Long

Dim xDirect$, xFname$, InitialFoldr$

InitialFoldr$ = "C:\"

With Application.FileDialog(msoFileDialogFolderPicker)

.InitialFileName = Application.DefaultFilePath & "\"

.Title = "Please select a folder to list Files from"

.InitialFileName = InitialFoldr$

.Show

If .SelectedItems.Count <> 0 Then

xDirect$ = .SelectedItems(1) & "\"

xFname$ = Dir(xDirect$, 7)

Do While xFname$ <> ""

ActiveCell.Offset(xRow) = xFname$

xRow = xRow + 1

xFname$ = Dir

Loop

End If

End With

End Sub

Tu peux le modifier pour rentrer les informations dans un dictionnaire puis pour chacun des éléments faire le traitement que tu souhaites, c'est à dire ouvrir le fichier puis lancer ta macro

Amicalement

Merci pour ta réponse Jeb, mais je n'en suis pas encore là en terme de maîtrise du vba que je découvre à mon rythme.

Bonsoir,

Une chose que tu peux considérer comme toujours vraie : si tu peux faire une opération, tu pourras toujours en faire plusieurs similaires à la suite, en utilisant une boucle et donc sans alourdir le code...

Les choix de méthodes et de boucle peuvent être très divers (les opérations le sont aussi) mais sur le principe de faisabilité tu peux toujours conclure que c'est faisable. La recherche ne porte que sur le comment ?

Cordialement.

Très Cher MFerrand,

Je progresse dans l'assimilation du langage vba mais j'avance à mon rythme de débutant. J'entrevois à peine tout ce qu'il est possible de faire avec et j'ai un gros projet en parallèle que je souhaite faire aboutir au plus tôt.

C'est les contributions des uns et des autres qui me donnent envie de d'aller plus loin pour devenir autonome.

Je m'aperçois qu'effectivement le choix des boucles (If/End If, With/End With...) est important en terme de rapidité d'exécution. Le dernier code que tu m'as écris est à ce titre assez impressionnant.

Je suis dans l'histoire de la poule et de l'oeuf où j'ai besoin de faire avancer un projet qui me demande la maîtrise d'une certaine automatisation avec laquelle je ne suis pas encore autonome et les contributions des uns et des autres qui m'encouragent dans cette démarche d'autonomie.

En l'état actuelle des choses, la dernière macro que tu m'as écrite, il faudrait que je l'applique à une 50ne de fichiers contenus dans un même répertoire...

Si tu as une réponse concrète en termes de codification, je suis preneur...

Un grand merci déjà quelque soit ta réponse...

Hellsoir tout le Monde

J'ai fait un truc dans le genre, un Planificateur de lancement de fichiers avec macros de lettrage, censés être préparés et stockés dans un dossier.

Mon algo y est détaillé, ça suit ton algo, je pense que ça peut striker et t'aider à commencer le codage .

Te focalise pas sur les macros d'options et axillaires, y'en a pas mal, c'est dans le module principal lettrage, ici :

https://www.excel-pratique.com/fr/telechargements/comptabilite/myrmidon-lettrage-no172.php

'__________________________________________________________________________________________________________________________
'0. Variables Publiques communes à ce classeur
Public STOPDATEPLANI As Date, PLANIFICATEUR As Workbook, FICHIERCOMBI As String, NAMEFICHIERCOMBI As String, MACROFICHIERCOMBI As String, TSTOPCOMBI As String, MAILCOMBI As String, ONEDRIVECOMBI As String, SAVEHARDCOMBI As String ', ZAZ_STOPMACRO As String

'__________________________________________________________________________________________________________________________
'I. PROCEDURE UNICLASS PLANIFICATION_RECHERCH_COMBI_MYR
Public Sub PLANIFICATION_RECHERCH_COMBI_MYR()
'Mémo 1> Procédure UNICLASS ou Programation de stratégie de traitement sur matériel et réseau personnel
'          L 'user planifie ses actions à faire, en générale pour être traités le soir, les week ends, les vacances, jours fériés à partir de son poste, traité par son poste
'          Si echec pour manque de puissance, Hydra fournit une base de données et lance en auto, le traitement à la place d'Excel,
'          soit en puissance X4 mais 1 traitement possible, soit puissance X1 mais 4 traitements possibles (si 4 processeurs)
'----------------------------------------------------------------------------------------------------------------------------------

'----------------------------------------------------------------------------------------------------------------------------------
'SOMMAIRE
'1. Déclaration de variables particulières SUB PLANIFICATION_RECHERCH_COMBI_MYR
'2. Définition des variables
   '2.1. Définition variable procèdure planifié numlignelistfile pour avoir la ligne de début du tableur
   '2.2. Définition variable procèdure planifié taillelistfile pour définir la fin de la procédure for to
   '2.3. Définition variable publique PLANIFICATEUR pour avoir le nom du fichier de planification en cas de changement de nom avec son chemin d'accés
   '2.4. Définition variable publique pour l'arrêt par planificateur du traitement planifié
   '2.5. Définition variable ZAZ_STOPMACRO du chemin+nom fichier STOP.txt
'Erreur. Procédure de gestion d'erreur spécifique nom/chemin fichier/pb puissance calcul
'3. Protocole STRIKER For > To > Next
   '3.1. désactiver avant ouverture événements excel
   '3.2. Désactivation du rafraichissement et de la visibilité de la fenêtre Excel
   'Erreur : Si erreur continue
   '3.3. SI Sécurité validité nom fichier___START
      '3.3.1. SI Sécurité validité nom fichier, MàJ état traitement en cours
      '+3.3.1. SI Fichier STOP de ZAZ Stopmacro, alors arrêt
         '3.3.1.1. SI Sécurité temp planificateur___START
            '3.2.1.1.1. Ciblage du fichier à traiter et modification des indicateurs pour info user
         '3.3.1.2. SI Sécurité temp planificateur___SINON
            '3.2.1.2.1. Date d'arrêt planifié atteinte, arrêt du traitement
            '3.3.1.2.2 Sort de la boucle Protocole STRIKER FOR > TO > NEXT
         '3.3.1.3. SI Sécurité temp planificateur___END
         '3.3.1.4. Définition publique FICHIERCOMBI avec chemin dossier
         '3.3.1.5. Définition variable publique NAMEFICHIERCOMBI sans chemin dossier
         '3.3.1.6. Définition variable publique MACROFICHIERCOMBI pour lancer macro
         '3.3.1.7. Ouvre fichier combinatoire en cours
         '3.3.1.8. Active fichier  combinatoire en cours
         '3.3.1.9. Contrôle CTRLCALCAUTO activé du FICHIERCOMBI pour lancement procédures spécifiques à la planification
            '3.3.1.9.a. Contrôle CTRLCALCAUTO dans FICHIERCOMBI Coché
            '3.3.1.9.b. Contrôle CTRLCALCAUTO dans FICHIERCOMBI visible
         '3.3.1.10. OPTION MàJ Timer dans fichier combi en cours à partir du planificateur
         '3.3.1.11. OPTION MàJ MAIL dans fichier combi en cours à partir du planificateur
         '3.3.1.12. OPTION MàJ SAVE ONEDRIVE dans fichier combi en cours à partir du planificateur
         '3.3.1.13. OPTION MàJ SAVE PHYSIQUE dans fichier combi en cours à partir du planificateur
         '3.3.1.14. OPTION PLANIFICATEUR ARRET, pour transférer valeur d'arrêt à chaque fichier combi en cours
         '3.3.1.15. lance macro FICHIERCOMBI
         '3.3.1.16. Retour sur fichier planificateur pour MàJ des indicateur
         '3.3.1.17. Traitement terminé, MàJ des indicateurs de traitement
            '3.3.1.17.1. Dispatching SI, si erreur ou arrêt par date ou timer atteint alors traitement fin erreur/arrêt, sinon traitement normal MàJ indicateur
               '3.3.1.17.1.1. SI Message suite arrêt timer combi
                  '3.3.1.17.1.1.1. Modifs indicateur colonne B état du traitement
                  '3.3.1.17.1.1.2. Modifs indicateur colonne C Nom du fichier
                  '3.3.1.17.1.1.3. Modifs indicateur colonne D résultat oui/non
               '3.3.1.17.1.2. Si Message suite arrêt par date planifié
                  '3.3.1.17.1.2.1 Modifs indicateur colonne B état du traitement
                  '3.3.1.17.1.2.2.  Modifs indicateur colonne C Nom du fichier
                  '3.3.1.17.1.2.3.  Modifs indicateur colonne D résultat oui/non
               '3.3.1.17.1.3. Message suite arrêt par erreur
                  '3.3.1.17.1.3.1 Modifs indicateur colonne B état du traitement
                  '3.3.1.17.1.3.2.  Modifs indicateur colonne C Nom du fichier
                  '3.3.1.17.1.3.3.  Modifs indicateur colonne D résultat oui/non
            '3.3.1.17.2. Dispatching SI? Traitement réussi sans arrêt ou erreur
               '3.3.1.17.2.1 Modifs indicateur colonne B état du traitement
               '3.3.1.17.2.2.  Modifs indicateur colonne C Nom du fichier
               '3.3.1.17.2.3.  Modifs indicateur colonne D résultat oui/non
            '3.3.1.17.3. Dispatching SI, FIN
      '3.3.2. SINON sortie SI de SI Sécurité validité nom fichier, modifs indicateurs et fichier suivant
         '3.3.2.1 Modifs indicateurs d'informations d'état du traitement, erreur fichier non trouvé
      '3.3.3. SI Sécurité validité nom fichier___END
   'Erreur, process de gestion
      'A. Si erreur problème de puissance de calcul alors
         'A.1. Retour sur fichier planificateur pour MàJ des indicateur
         'A.2. Traitement terminé, MàJ des indicateurs de traitement
      'B. Si erreur nom ou chemin d'accès du fichier alors
         'B.1. Retour sur le fichier planificateur pour MàJ des indicateur
         'B.2. Traitement terminé, MàJ des indicateurs de traitement
   '3.4. Fermeture FICHIERCOMBI en cours avec save
   '3.5. Ajoute +1 à la variable NUMLIGNELISTFILE qui sert de compteur marcheur dans la liste fichier
'4. Quand terminé, réactiver raffraichissement et visibilité écran
'5. OPTION Envoi par Mail du planificateur
'6. SI controle checkbox CTRLECLOSEPLANIFICATEUR clické alors fermeture planificateur
   '6.1. Si clické alors Save planificateur et fermeture
   '6.2. Sinon alors Save planificateur et restera ouvert
'7. Réactivation évenements excel
'----------------------------------------------------------------------------------------------------------------------------------

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'1. Déclaration de variables particulières SUB PLANIFICATION_RECHERCH_COMBI_MYR
Dim NUMLIGNELISTFILE As Integer, NBLIGNELISTFILE As Double
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'2. Définition des variables
'2.1. Définition variable procèdure planifié numlignelistfile pour avoir la ligne de début du tableur
NUMLIGNELISTFILE = Range("listfile").Row + 1
'2.2. Définition variable procèdure planifié taillelistfile pour définir la fin de la procédure for to
NBLIGNELISTFILE = Range(Rows(NUMLIGNELISTFILE), Rows(NUMLIGNELISTFILE).End(xlDown)).Rows.Count
If NBLIGNELISTFILE > 60000 Then 'Si nombre fichier dépasse 60 000, chances certaines que la valeur est celle de fin de tableur, NBLIGNELISTFILE prend valeur par défaut 1
NBLIGNELISTFILE = 1
End If
'2.3. Définition variable publique PLANIFICATEUR pour avoir le nom du fichier de planification en cas de changement de nom avec son chemin d'accés
Set PLANIFICATEUR = Application.ThisWorkbook
'2.4. Définition variable publique pour l'arrêt par planificateur du traitement planifié
STOPDATEPLANI = Format(Range("STOPPLANIFICATEUR"), "dd/mm/yyyy hh:mm")
'2.5. Définition variable ZAZ_STOPMACRO du chemin+nom fichier STOP.txt
'ZAZ_STOPMACRO = "C:\Users\waard\Desktop\STOP.txt" 'Le fichier stop.txt doit se trouver sur le bureau user car l'appli. ZAZ est censée le créer à cet emplacement
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Erreur. Procédure de gestion d'erreur spécifique nom/chemin fichier/pb puissance calcul
'Démarrer à ce point si erreur diverse constaté au démarrage
On Error GoTo Erreur:
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'__________________________________________________________________________________________________________________________
'__________________________________________________________________________________________________________________________
'Protocole STRIKER FOR > TO > NEXT___START____________________________________________________________________________________________

'3. Protocole STRIKER For > To > Next, cible le fichier dans liste fichier, si Ok traitement puis suivant, sinon suivant
'De la ligne 1 à la ligne x, définit par la variable de fin de tableau NBLIGNELISTFILE
For i = 1 To NBLIGNELISTFILE

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.1. désactiver avant ouverture événements excel
'pour éviter les évenements de fichier/feuille dont certains s'activent de manière aléatoire sans raison
Application.EnableEvents = False
'3.2. Désactivation du rafraichissement et de la visibilité de la fenêtre Excel
Application.ScreenUpdating = False
Windows.Application.Visible = False
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Erreur : Si erreur continue
On Error Resume Next
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.3. SI Sécurité validité nom fichier___START+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.3.1. SI Sécurité validité nom fichier, la cellule de nom fichier est grise ou vide, alors traitement du fichier ciblé sinon passage au fichier suivant
If Range("A" & NUMLIGNELISTFILE).Interior.ColorIndex = 15 And Not Range("A" & NUMLIGNELISTFILE).Text = "" And Not Range("A" & NUMLIGNELISTFILE).Text = " " Then

   '+3.3.1. SI Fichier STOP de ZAZ Stopmacro, alors arrêt
   'If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then
         ''ARIANNE_ZAZ 'Message vocale d'info user d'arrêt de macro par ZAZ
         'Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 46 '46 = orange
         'Range("B" & NUMLIGNELISTFILE).Value = "Traitement arrêté par utilisateur" 'Etat
         'Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'En gras
         'Windows.Application.Visible = True 'Rendre visible l'application Excel
         'Kill ZAZ_STOPMACRO 'Suppression du fichier STOP.txt de ZAZ à l'emplacement prévu dans définition variable
         'Exit For 'Sortie de boucle et lancement des process de fin de planification (save, mail,...)
   'End If

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.1. SI Sécurité temp planificateur___START+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   'Si la date et temps NOW toujours inférieur à date et heure maxi d'arrêt alors cible le fichier
   If Now < Range("STOPPLANIFICATEUR").Value Then

         '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         'MODIFS DANS PLANIFICATEUR_START___++++++++++++++++++++++++++++++++++++++++++++
         '3.2.1.1.1. Ciblage du fichier à traiter et modification des indicateurs pour info user
         Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 43 '43 = Vert clair
         Range("B" & NUMLIGNELISTFILE).Value = "Traitement en cours" 'Etat
         Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'En gras
         '3.3.1.3. SI Sécurité temp planificateur___END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         'MODIFS DANS PLANIFICATEUR_END___++++++++++++++++++++++++++++++++++++++++++++
         '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      '3.3.1.2. SI Sécurité temp planificateur___SINON+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      'SINON si date atteinte, arrêt du traitement
      Else

         '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         'MODIFS DANS PLANIFICATEUR_START___++++++++++++++++++++++++++++++++++++++++++++
         '3.2.1.2.1. Date d'arrêt planifié atteinte, arrêt du traitement planifié & MàJ des indicateurs d'état de traitement
         Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 46 '46 = orange
         Range("B" & NUMLIGNELISTFILE).Value = "Traitement arrêté par temps planifié" 'Etat
         Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'En gras
         'MODIFS DANS PLANIFICATEUR_END___++++++++++++++++++++++++++++++++++++++++++++
         '3.3.1.2.2 Sort de la boucle Protocole STRIKER FOR > TO > NEXT
         Windows.Application.Visible = True '<<<<<<<<<<<<
         Exit For
         '3. Protocole STRIKER FOR > TO > NEXT___END____________________________________________________________________________________________
         '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      End If
      '3.3.1.3. SI Sécurité temp planificateur___END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.4. Définition publique FICHIERCOMBI avec chemin dossier, du fichier combinaison à traiter
   FICHIERCOMBI = Range("DOSSIERPLANIFICATEUR").Text & "\" & Range("A" & NUMLIGNELISTFILE).Text
   '3.3.1.5. Définition variable publique NAMEFICHIERCOMBI sans chemin dossier, du fichier combinaison à traiter
   NAMEFICHIERCOMBI = Range("A" & NUMLIGNELISTFILE).Text
   '3.3.1.6. Définition variable publique MACROFICHIERCOMBI pour lancer macro si nom avec espace et permettre d'appeler fichier en cours de traitement
   'Il faut mettre le caractère ' devant et dérrière le nom du fichier, afin de squizzer le bug des espaces et caractères spéciaux
   MACROFICHIERCOMBI = "'" & NAMEFICHIERCOMBI & "'!Principal_Lettrage.ALGO_COMBINATOIRE_MYRMIDON"
   'MACROFICHIERCOMBI = "'" & NAMEFICHIERCOMBI & "'!Principal_Lettrage.ALGO_COMBINATOIRE_MYRMIDON_NUMERIQUE" 'TEMPORAIRE // Test préliminaires semblent ok, pas passé les tests d'application de masse en réels; ni bugtests
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.7. Ouvre fichier combinatoire en cours
   Workbooks.Open (FICHIERCOMBI)
   '3.3.1.8. Active fichier  combinatoire en cours
   'pour éviter erreur dans code pour les élément de code qui ne prenne pas le nom du classeur genre range(machin).select au lieu de workbook(machin).sheet(1).range(truc)
   Workbooks(NAMEFICHIERCOMBI).Activate
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   'MODIFS DANS FICHIER_COMBI_START___++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.9. Contrôle CTRLCALCAUTO activé du FICHIERCOMBI pour lancement procédures spécifiques à la planification
   '3.3.1.9.a. Contrôle CTRLCALCAUTO dans FICHIERCOMBI Coché
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).CTRLCALCAUTO.Value = True
   '3.3.1.9.b. Contrôle CTRLCALCAUTO dans FICHIERCOMBI visible
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).CTRLCALCAUTO.Visible = True 'pour indiquer à user qu'il s'agit d'un résultat de planification
   '-------------------------------------------------------------------------------------------------------------------------------
   '3.3.1.10. OPTION MàJ Timer dans fichier combi en cours à partir du planificateur
   If PLANIFICATEUR.Worksheets(1).Range("STOPCOMBI").Value > 0 Then 'Si valeur > à 0 alors option activé par user
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("STOPTIME").Value = PLANIFICATEUR.Worksheets(1).Range("STOPCOMBI").Value
   End If
   '3.3.1.11. OPTION MàJ MAIL dans fichier combi en cours à partir du planificateur
   If PLANIFICATEUR.Worksheets(1).Range("MAILCOMBI").Value Is Not Empty Then 'Si option non vide alors option activée
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("MAIL").Value = PLANIFICATEUR.Worksheets(1).Range("MAILCOMBI").Value
   End If
   '3.3.1.12. OPTION MàJ SAVE ONEDRIVE dans fichier combi en cours à partir du planificateur
   If Not PLANIFICATEUR.Worksheets(1).Range("ONEDRIVECOMBI").Value = "NON" Then 'Si valeur non "NON" alors option activée
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("ONEDRIVE").Value = "OUI"
   End If
   '3.3.1.13. OPTION MàJ SAVE PHYSIQUE dans fichier combi en cours à partir du planificateur
   If Not PLANIFICATEUR.Worksheets(1).Range("SAVEHARDCOMBI").Value = "NON" Then 'Si valeur non "NON" alors option activée
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("SAVEHARD").Value = PLANIFICATEUR.Worksheets(1).Range("SAVEHARDCOMBI").Value
   End If
   '3.3.1.14. OPTION PLANIFICATEUR ARRET, pour transférer valeur d'arrêt à chaque fichier combi en cours
   Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J4").Value = PLANIFICATEUR.Worksheets(1).Range("STOPPLANIFICATEUR").Value
   '-------------------------------------------------------------------------------------------------------------------------------
   '3.3.1.15. lance macro FICHIERCOMBI
   Application.Run (MACROFICHIERCOMBI)
   'MODIFS DANS FICHIER_COMBI_END___++++++++++++++++++++++++++++++++++++++++++++
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.16. Retour sur fichier planificateur pour MàJ des indicateur
   PLANIFICATEUR.Activate
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   'MODIFS DANS PLANIFICATEUR_START___++++++++++++++++++++++++++++++++++++++++++++
   '3.3.1.17. Traitement terminé, MàJ des indicateurs de traitement
      '3.3.1.17.1. Dispatching SI, si erreur ou arrêt par date ou timer atteint alors traitement fin erreur/arrêt, sinon traitement normal MàJ indicateur
      If Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J3").Value = "ERROR" Or Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J5").Value = "STOP" Or Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J5").Value = "STOPP" Then
         '-------------------------------------------------------------------------------------------------------------------------------
         '3.3.1.17.1.1. SI Message suite arrêt timer combi
         If Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J5").Value = "STOP" Then
            '3.3.1.17.1.1.1. Modifs indicateur colonne B état du traitement
            Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 46 '46 = orange
            Range("B" & NUMLIGNELISTFILE).Value = "Traitement arrêté par timer d'arrêt" 'Etat
            Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
            '3.3.1.17.1.1.2. Modifs indicateur colonne C Nom du fichier
            Range("C" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J2").Value 'Nom fichier formaté
            '3.3.1.17.1.1.3. Modifs indicateur colonne D résultat oui/non
            Range("D" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J1").Value 'Résultat OUI/NON
            Range("D" & NUMLIGNELISTFILE).HorizontalAlignment = xlCenter 'Centrage cellule
            Range("D" & NUMLIGNELISTFILE).VerticalAlignment = xlCenter 'Centrage cellule
         End If
         '-------------------------------------------------------------------------------------------------------------------------------
         '3.3.1.17.1.2. Si Message suite arrêt par date planifié
         If Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J5").Value = "STOPP" Then
            '3.3.1.17.1.2.1 Modifs indicateur colonne B état du traitement
            Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 46 '10 = vert
            Range("B" & NUMLIGNELISTFILE).Value = "Traitement arrêté par temps planifié" 'Etat
            Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
            '3.3.1.17.1.2.2.  Modifs indicateur colonne C Nom du fichier
            Range("C" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J2").Value 'Nom fichier formaté
            '3.3.1.17.1.2.3.  Modifs indicateur colonne D résultat oui/non
            Range("D" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J1").Value 'Résultat OUI/NON
            Range("D" & NUMLIGNELISTFILE).HorizontalAlignment = xlCenter 'Centrage cellule
            Range("D" & NUMLIGNELISTFILE).VerticalAlignment = xlCenter 'Centrage cellule
         End If
         '-------------------------------------------------------------------------------------------------------------------------------
         '3.3.1.17.1.3. Message suite arrêt par erreur
         If Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J3").Value = "ERROR" Then
            '3.3.1.17.1.3.1 Modifs indicateur colonne B état du traitement
            Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 3 '3 = rouge
            Range("B" & NUMLIGNELISTFILE).Value = "Erreur - Puissance de calcul insuffisante" 'Etat
            Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
            '3.3.1.17.1.3.2.  Modifs indicateur colonne C Nom du fichier
            Range("C" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J2").Value 'Nom fichier formaté
            '3.3.1.17.1.3.3.  Modifs indicateur colonne D résultat oui/non
            Range("D" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J1").Value 'Résultat OUI/NON
            Range("D" & NUMLIGNELISTFILE).HorizontalAlignment = xlCenter 'Centrage cellule
            Range("D" & NUMLIGNELISTFILE).VerticalAlignment = xlCenter 'Centrage cellule
         End If
         '-------------------------------------------------------------------------------------------------------------------------------
      '3.3.1.17.2. Dispatching SI? Traitement réussi sans arrêt ou erreur
      Else
         '-------------------------------------------------------------------------------------------------------------------------------
         '3.3.1.17.2.1 Modifs indicateur colonne B état du traitement
         Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 10 '10 = vert
         Range("B" & NUMLIGNELISTFILE).Value = "Traitement terminé" 'Etat
         Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
         '3.3.1.17.2.2.  Modifs indicateur colonne C Nom du fichier
         Range("C" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J2").Value 'Nom fichier formaté
         '3.3.1.17.2.3.  Modifs indicateur colonne D résultat oui/non
         Range("D" & NUMLIGNELISTFILE).Value = Workbooks(NAMEFICHIERCOMBI).Worksheets(1).Range("J1").Value 'Résultat OUI/NON
         Range("D" & NUMLIGNELISTFILE).HorizontalAlignment = xlCenter 'Centrage cellule
         Range("D" & NUMLIGNELISTFILE).VerticalAlignment = xlCenter 'Centrage cellule
         '-------------------------------------------------------------------------------------------------------------------------------
      End If
      '3.3.1.17.3. Dispatching SI, FIN++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.3. SI Sécurité validité nom fichier___SINON+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.3.2. SINON sortie SI de SI Sécurité validité nom fichier, modifs indicateurs et fichier suivant
Else

      '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      '3.3.2.1 Modifs indicateurs d'informations d'état du traitement, erreur fichier non trouvé
      Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 3 '3 = Rouge
      Range("B" & NUMLIGNELISTFILE).Value = "Erreur - Nom fichier non conforme" 'Erreur au niveau du controle de conformité du nom, si modification inadéquat de l'user
      Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
      '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

End If
'3.3.3. SI Sécurité validité nom fichier___END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'___________________________________________________________________________________________________________________
Erreur:
'Gestionnaire d'erreurs spécifique sur traitement fichier combi en cours
'Mémo pour récupérer type d'erreur : MsgBox Err.Number & " / " & Err.Description

'-------------------------------------------------------------------------------------------------------------------------------
'SOMMAIRE
'A. Si erreur problème de puissance de calcul alors
'B. Si erreur nom ou chemin d'accès du fichier alors
'-------------------------------------------------------------------------------------------------------------------------------

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   'A. Si erreur problème de puissance de calcul alors
   If Err.Number = 6 Or Err.Number = 7 Or Err.Number = 28 Then
   'A.1. Retour sur fichier planificateur pour MàJ des indicateur
   PLANIFICATEUR.Activate
   'A.2. Traitement terminé, MàJ des indicateurs de traitement
   Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 3 '3 = rouge
   Range("B" & NUMLIGNELISTFILE).Value = "Erreur - Puissance de calcul insuffisante" 'Etat
   Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
   End If 'FIN A. Si erreur pour problème de puissance de calcul
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   'B. Si erreur sur le nom ou le chemin d'accès du fichier alors
   If Err.Number = 1004 Or Err.Number = 9 Or Err.Number = 52 Or Err.Number = 53 Or Err.Number = 75 Or Err.Number = 76 Then
   'B.1. Retour sur le fichier planificateur pour MàJ des indicateur
   PLANIFICATEUR.Activate
   'B.2. Traitement terminé, MàJ des indicateurs de traitement
   Range("B" & NUMLIGNELISTFILE).Interior.ColorIndex = 3 '3 = rouge
   Range("B" & NUMLIGNELISTFILE).Value = "Erreur - Sur Nom ou Chemin fichier" 'Etat
   Range("B" & NUMLIGNELISTFILE).Font.Bold = True 'Gras
   End If
   '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'-------------------------------------------------------------------------------------------------------------------------------
'Mémo - Liste des erreurs :

'Code / Libellé type
'Erreur sur puissance ordinateur
   '6 Dépassement de capacité
   '7 Mémoire insuffisante
   '28 Espace pile insuffisante
'Erreur sur Nom ou Chemin du fichier
   '1004 Problème Nom ou Chemin d'accès fichier
   '9 Indice en dehors de la plage
   '52 Nom ou numéro de fichier incorrect
   '53 Fichier introuvable
   '75 Erreur dans le chemin d'accès
   '76 chemin d 'accès introuvable
'-------------------------------------------------------------------------------------------------------------------------------

'___________________________________________________________________________________________________________________
'ERREUR___FIN_DU_GESTIONNAIRE_ERREURS______________________________________________________________________________
'___________________________________________________________________________________________________________________

'MODIFS DANS PLANIFICATEUR_END___++++++++++++++++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.4. Fermeture FICHIERCOMBI en cours avec save
Workbooks(NAMEFICHIERCOMBI).Close savechanges:=True
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'3.5. Ajoute +1 à la variable NUMLIGNELISTFILE qui sert de compteur marcheur dans la liste fichier
NUMLIGNELISTFILE = NUMLIGNELISTFILE + 1
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Next i
'Protocole STRIKER FOR > TO > NEXT___END____________________________________________________________________________________________
'__________________________________________________________________________________________________________________________
'__________________________________________________________________________________________________________________________

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'4. Quand terminé, réactiver raffraichissement et visibilité écran
Windows.Application.Visible = True
Application.ScreenUpdating = True
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'5. OPTION Envoi par Mail du planificateur
OPTION_SENDMAIL_PLANIFICATEUR
'6. SI controle checkbox CTRLECLOSEPLANIFICATEUR clické alors fermeture planificateur
If Worksheets(1).CTRLECLOSEPLANIFICATEUR.Value = True Then
   '6.1. Si clické alors Save planificateur et fermeture
   'ARIANNE_END_PLANIFICATION 'Message vocale d'indic de fin de planification
   PLANIFICATEUR.Close savechanges:=True
'6.2. Sinon alors Save planificateur et restera ouvert
Else
   PLANIFICATEUR.Save
   'ARIANNE_END_PLANIFICATION 'Message vocale d'indic de fin de planification
   MsgBox "Planification terminé", vbInformation, "INFORMATION PLANIFICATION"
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'7. Réactivation évenements excel
Application.EnableEvents = True
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

End Sub

Oupsssssssssssss,

Trop de lumière ébloui...

Merci tout de même

Yeeepppppppppppppppppppppppp,

J'ai trouvé une macro qui répond à ma demande.

Elle marche avec la plupart des macros qu'on lui associe dans la mesure où elle applique effectivement la macro associée à tous les fichiers du répertoire dans laquelle on la place.

En revanche pour une des macros que je lui associe, lorsque le dernier fichier est traité, elle recommence le traitement au début et poursuit en boucle comme cela sans s'arrêter. N'y-a-t-il pas incompatibilité entre des fonctions utilisées dans l'une et l'autre macro ? (voir fichier joint)

Par ailleurs, elle demande après le traitement de chaque fichier et avant de passer à l'autre si je veux ou non enregistrer la modification. Est-il possible de modifier cette macro pour qu'elle enregistre automatiquement la modification apportée sans me le demander ?

Merci pour votre aide.

pour le second point utilise

application.displayalerts=FALSE

il n'y aura pas de demande normalement

Jeb

Rechercher des sujets similaires à "vba lancer macro fichiers meme repertoire"