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 .
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