Traitements par lots

  • Initiateur de la discussion Initiateur de la discussion topo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

topo

Guest
Bonjour à tous!

J'aurais besoin d'un petit coup de main, mais je vous avouerais que je ne sais pas si c'est un problème de VBA ou d'Excel ...
Chaque trimestre je dois affecter deux macros à une cinquantaine de fichiers Excel.
Les Macros sont enregistrés en .xla et directement au démarrage de Excel.

Est-il possible de demander à Excel de faire un traitement par lots (comme dans Photoshop un peu) où je lui indique l'emplacement des fichiers à retraiter et les macros à utiliser ? Comme ça, une fois ces informations données, il mouline tout seul.

Merci beaucoup.
 
Re : Traitements par lots

Si je comprends bien ta question ... la réponse est oui ...

Une "master" macro peut lancer en séquence toutes tes macros sur tous tes fichiers ... à condition bien sûr que tu fournisses cette liste à ta "master" macro ...

Est-ce-que çà répond à ta question ...???
 
Re : Traitements par lots

Bonjour Topo, James007 🙂,
Sous Excel, contrairement à PhotoShop, tout est programmable via VBA, donc il n'y a pas de solution simple type "Automatisation". Il va falloir que tu écrives quelques lignes de code pour trouver tous les fichiers xls de ton dossier, les faire ouvrir en automatique, les traiter avec tes 2 macros, puis les enregistrer. Attention à bien faire une copie de sauvegarde des originaux avant de tout lancer...
Bon courage 😎
 
Re : Traitements par lots

Salut James007 et JNP,

Merci pour vos réponses mais malheureusement, je débute dans la programmation VBA et donc ce genre de macro est inaccessible pour moi ...

Pouvez-vous m dire comment je peux demander à excel d'appliquer telle ou tel macro dans un dossier particulier?
Pour l'arborescence, j'ai bien quelque chose mais je sais pas si c'est applicabe :
Dim fic() ' liste des fichiers à l'aide du File Object System (FSO)
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = "C:\Documents and Settings\...\Liasses à transformer" ' chemin à modifier
Set folder = fso.GetFolder(chemin)
Set collfic = folder.Files
tempname = "xxxxx.xxx"
nfic = collfic.Count
ReDim fic(nfic + 1)
n = 0 ' tableau des fichiers du répertoire "Chemin"
For Each curfic In collfic
n = n + 1
fic(n) = curfic.Name

Merci d'avance
 
Re : Traitements par lots

Bonjour tous


Chaque trimestre je dois affecter deux macros à une cinquantaine de fichiers Excel.

ça c'est un boulot pour le planificateur de taches de Windows

la tache étant l'ouverture d'un classeur *.xls ou xla contenant les macros
devant être lancées.


Tu pourrais aussi envisager de faire cela avec un script VBS* + planificateur de taches
en mode silencieux (Excel étant en mode Application.Visible=False)

*WSH = Windows Scripting Host
 
Re : Traitements par lots

Merci James007,
mais l'illusion ne dure qu'un temps, je m'inspire des macros que j'ai trouvé mais je n'arrive vraiment pas à l'appliquer à mon problème ...
Je voudrais en fait que par le script, je lui donne l'emplacement et par un boucle, il active les macros pour tous les fichiers dans le dossier ...

et là, je comprends plus rien au VBA
 
Re : Traitements par lots

Re bonjour,

J'ai bidouillé une macro et voilà ce que ça donne :
Sub Nettoyage_dossier()
Dim fic() ' liste des fichiers à l'aide du File Object System (FSO)
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = "C:\Documents and Settings\jbav\Mes Documents\Liasses à transformer" ' chemin à modifier
Set folder = fso.GetFolder(chemin)
Set collfic = folder.Files
tempname = "xxxxx.xxx"
nfic = collfic.Count
ReDim fic(nfic + 1)
n = 0 ' tableau des fichiers du répertoire "Chemin"
For Each curfic In collfic
n = n + 1
fic(n) = curfic.Name
Next ' ajout d'un \ en fin de Chemin
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
z = 0
For I = 1 To nfic
Workbooks.Open (I)
Application.Run "nettoyage"
Workbooks.Close
Next
MsgBox z & " fichiers nettoyés " & chemin, vbOKOnly, "nettoyage de fichiers dans " & CurDir
End Sub

Il me met un message d'erreur en jaune : visiblement, je n'arrive pas à ouvrir et à fermer le fichier excel via la boucle. En fait, je souhaiterais ouvrir, lancer la macro, enregistrer les modifications et fermer le fichier pour passer au suivant.
Quelqu'un peut me donner un dernier coup de main, j'ai l'impression que je touche au but ...
 
Dernière modification par un modérateur:
Re : Traitements par lots

Merci encore mais je n'y suis pas encore :

Si je rentre les toutes les informations à la place de X, je vais perdre l'avantage d'avoir une boucle non?
Il faudrait que la boucle ouvre puis ferme tous les fichiers dans le repértoire.

Merci
 
Re : Traitements par lots

Merci encore mais je n'y suis pas encore :

Si je rentre les toutes les informations à la place de X, je vais perdre l'avantage d'avoir une boucle non?
Il faudrait que la boucle ouvre puis ferme tous les fichiers dans le repértoire.

Merci

Bien sûr ... mais je pensais que je n'avais même pas besoin de te dire ...
Effectivement ta boucle doit inclure l'ouverture et la fermeture des tes fichiers ...
 
Re : Traitements par lots

en fait, c'est là où le bât blesse ...
Je ne sais pas comment programmer l'ouverture des fichiers en mode boucle ...
je vois bien ce que je dois rajouter, mais je ne sais pas ce que je dois mettre comme écriture
:
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
z = 0
For I = 1 To nfic
Workbooks.Open ("arborescence + boucle")
Application.Run "nettoyage"
Workbooks.Close savechanges:=True

Merci
 
Re : Traitements par lots

Un truc dans le style ...
Code:
Dim fso As Scripting.FileSystemObject
Dim fso_folder As Scripting.Folder
Dim fso_file As Scripting.file
Dim oApp As Object
Dim Chemin
Dim NomComplet
Dim Dossier

Set fso = New Scripting.FileSystemObject
Set fso_folder = fso.GetFolder(Chemin)
Set oApp = CreateObject("Shell.Application")
....
For Each Dossier In oApp.Namespace(NomComplet).Items
    Workbooks.Open (Chemin & Dossier)
....
Next

Bon Courage
A+
 
Re : Traitements par lots

Je suis désolé, mais ça va trop loin pour moi, je ne comprends plus rien !!!!!
Autant la programmation que j'ai bidouillé, j'arrive à la comprendre, mais là, je ne sais plus faire ...
J'essaye d'insérer ce que tu as mis dans mon VBA, mais il y a que des msg d'erreurs.

Le pire, c'est que je sais que je ne suis pas loin mais je ne sais pas où !!

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
  • Question Question
Réponses
2
Affichages
1 K
MiaouLeLion
M
E
  • Question Question
Réponses
6
Affichages
1 K
elmilo13
E
D
Réponses
8
Affichages
1 K
DukeDevlin
D
T
Réponses
3
Affichages
1 K
Retour