VBA : ouverture de fichier excel en boucle
Fermé
nico3110
Messages postés
3
Date d'inscription
mercredi 26 août 2009
Statut
Membre
Dernière intervention
6 novembre 2009
-
26 août 2009 à 17:28
nico3110 - 27 août 2009 à 13:01
nico3110 - 27 août 2009 à 13:01
A voir également:
- VBA : ouverture de fichier excel en boucle
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
13 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 août 2009 à 18:35
26 août 2009 à 18:35
Bonjour,
Un exemple ici : https://forums.commentcamarche.net/forum/affich-13840446-vba-ouverture-dossier#11
N'hésite pas à revenir pour avoir des explications.
;o)
Un exemple ici : https://forums.commentcamarche.net/forum/affich-13840446-vba-ouverture-dossier#11
N'hésite pas à revenir pour avoir des explications.
;o)
Bonsoir,
sub miseenforme
dim fichier as string
fichier = 7
do while fichier <>7
fichier = msgbox("Voulez-vous ouvrir un fichier pour le mettre en forme?", vbyesno)
if fichier = 6 then
Application.Dialogs(xlDialogOpen).Show
'intègre ta mise en forme
'ici, tu dois être sur ton classeur ou tu as appliqué ta mise en forme
activeworkbook.save
activeworkbook.close
fichier =1
end if
loop
end sub
sub miseenforme
dim fichier as string
fichier = 7
do while fichier <>7
fichier = msgbox("Voulez-vous ouvrir un fichier pour le mettre en forme?", vbyesno)
if fichier = 6 then
Application.Dialogs(xlDialogOpen).Show
'intègre ta mise en forme
'ici, tu dois être sur ton classeur ou tu as appliqué ta mise en forme
activeworkbook.save
activeworkbook.close
fichier =1
end if
loop
end sub
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 août 2009 à 18:45
26 août 2009 à 18:45
dim fichier as string
fichier = 7 ???
Merci de vérifier un peu avant de poster ...
La variable "fichier" est déclarée en String et tu lui affectes un Integer (7) ???
D'ailleurs d'où sort ce 7 ???
fichier = 7 ???
Merci de vérifier un peu avant de poster ...
La variable "fichier" est déclarée en String et tu lui affectes un Integer (7) ???
D'ailleurs d'où sort ce 7 ???
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
26 août 2009 à 19:09
26 août 2009 à 19:09
Bonjour,
on peut le mettre en integer mais en string ca marche aussi, je l'utilise tout le temps.
Parce que ca sert pour ma boucle car on demande à l'utilisateur s'il veut ouvrir un fichier et si c'est oui fichier =6 si c'est non fichier =7.
Et c'est vrai j'ai une erreur dans le code car écrit vite.
sub miseenforme
dim fichier as integer
fichier = 6
do while fichier <>7
fichier = msgbox("Voulez-vous ouvrir un fichier pour le mettre en forme?", vbyesno)
if fichier = 6 then
Application.Dialogs(xlDialogOpen).Show
'intègre ta mise en forme
'ici, tu dois être sur ton classeur ou tu as appliqué ta mise en forme
activeworkbook.save
activeworkbook.close
end if
loop
end sub
on peut le mettre en integer mais en string ca marche aussi, je l'utilise tout le temps.
Parce que ca sert pour ma boucle car on demande à l'utilisateur s'il veut ouvrir un fichier et si c'est oui fichier =6 si c'est non fichier =7.
Et c'est vrai j'ai une erreur dans le code car écrit vite.
sub miseenforme
dim fichier as integer
fichier = 6
do while fichier <>7
fichier = msgbox("Voulez-vous ouvrir un fichier pour le mettre en forme?", vbyesno)
if fichier = 6 then
Application.Dialogs(xlDialogOpen).Show
'intègre ta mise en forme
'ici, tu dois être sur ton classeur ou tu as appliqué ta mise en forme
activeworkbook.save
activeworkbook.close
end if
loop
end sub
bonjour
Merci à vous deux pour vos exemple.
Je crois que tu as exactement compris ce que je voulais polux...mais par contre je crois que c moi qui est beaucoup plus de mal à comprendre ta procédure en exemple.
et oui je débute en VBA, j'essaie de déchiffrer un peu ..mais bon je comprend pas trop pourquoi y'a plusieurs procédure et ce qu'elle font.......allez je me lance dans le déchiffrage!!
Merci encore à vous deux!!
Merci à vous deux pour vos exemple.
Je crois que tu as exactement compris ce que je voulais polux...mais par contre je crois que c moi qui est beaucoup plus de mal à comprendre ta procédure en exemple.
et oui je débute en VBA, j'essaie de déchiffrer un peu ..mais bon je comprend pas trop pourquoi y'a plusieurs procédure et ce qu'elle font.......allez je me lance dans le déchiffrage!!
Merci encore à vous deux!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux,
j'ai regardé un peu le programme ...c plus clair pour certaines partie ..moins pour d'autre. Si tu as un peu de temps, je vais copier ici ton exemple en te posant quelques questions...
1. .....alors la , c toutes la premiere partie ..c le blackout..je comprends rien et ne sais pas à quoi cela sert..est ce que tu crois que j'ai besoin de ca? et si oui pourquoi????
Option Explicit
'L'objet ClipBoard n'existant pas en VBA, il faut utiliser les fonctions de l'API Windows :
'-- Déclaration des fonctions API
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private mTabFiles()
Private pathFolder As String
'Setter d'affection de valeur à pathFolder
'Cette valeur vient de la cellule C3
'Procédure appelée par cmdMenu_Click() de Feuil1
Public Sub setPathFolder(ByVal str As String)
pathFolder = str
End Sub
'Procédure Main du traitement
'Procédure appelée par cmdMenu_Click() de Feuil1
Public Sub Main()
initEnvironnement
traiteFichiers
End Sub
'Procédure d'initialisation du tableau mTabFiles()
'Procédure appelée par Main()
Private Sub initEnvironnement()
'On récupère le chemin d'acces de tous les fichiers contenus dans le répertoire
'
If ModTools.AllFilesInFolder(pathFolder, mTabFiles()) = False Then
End If
End Sub
2.seconde partie, je comprends le principe mais ne sais pas ou je dois écrire le chemin d'accés et si je dois donner le nom du premier fichier excel et du dernier contenu dans mon dossier?
..j'ai enlevé quelques partie du code car je n'ai que du xls à traiter (j'espere ne pas avoir fait trop de coupe).
'Procédure qui traite tous les fichiers du répertoire
Private Sub traiteFichiers()
Dim i As Long
Dim ext As String
'Pour tous les fichiers de mTabFiles()
For i = LBound(mTabFiles()) To UBound(mTabFiles())
'On extrait l'extension
'mTabFiles(i) contient le chemin d'acces et le nom d'un fichier
'ex mTabFiles(i) = "C:\MonDossier\MonSousDossier\MonFichier.XLS"
'On lance la procédure pour traiter les fichiers Excel
Call traiteXLS(mTabFiles(i))
Next i
End Sub
3. ensuite ,ici j'integre ma macro de mise en forme....si j'ai bien comprs...
4.et enfin ..encore une ^partie que je n'ai pas compris
Private Sub VideMemoire()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub
J'espere que je suis clair et que je n'abuse pas top de ton temps!!!
j'ai regardé un peu le programme ...c plus clair pour certaines partie ..moins pour d'autre. Si tu as un peu de temps, je vais copier ici ton exemple en te posant quelques questions...
1. .....alors la , c toutes la premiere partie ..c le blackout..je comprends rien et ne sais pas à quoi cela sert..est ce que tu crois que j'ai besoin de ca? et si oui pourquoi????
Option Explicit
'L'objet ClipBoard n'existant pas en VBA, il faut utiliser les fonctions de l'API Windows :
'-- Déclaration des fonctions API
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private mTabFiles()
Private pathFolder As String
'Setter d'affection de valeur à pathFolder
'Cette valeur vient de la cellule C3
'Procédure appelée par cmdMenu_Click() de Feuil1
Public Sub setPathFolder(ByVal str As String)
pathFolder = str
End Sub
'Procédure Main du traitement
'Procédure appelée par cmdMenu_Click() de Feuil1
Public Sub Main()
initEnvironnement
traiteFichiers
End Sub
'Procédure d'initialisation du tableau mTabFiles()
'Procédure appelée par Main()
Private Sub initEnvironnement()
'On récupère le chemin d'acces de tous les fichiers contenus dans le répertoire
'
If ModTools.AllFilesInFolder(pathFolder, mTabFiles()) = False Then
End If
End Sub
2.seconde partie, je comprends le principe mais ne sais pas ou je dois écrire le chemin d'accés et si je dois donner le nom du premier fichier excel et du dernier contenu dans mon dossier?
..j'ai enlevé quelques partie du code car je n'ai que du xls à traiter (j'espere ne pas avoir fait trop de coupe).
'Procédure qui traite tous les fichiers du répertoire
Private Sub traiteFichiers()
Dim i As Long
Dim ext As String
'Pour tous les fichiers de mTabFiles()
For i = LBound(mTabFiles()) To UBound(mTabFiles())
'On extrait l'extension
'mTabFiles(i) contient le chemin d'acces et le nom d'un fichier
'ex mTabFiles(i) = "C:\MonDossier\MonSousDossier\MonFichier.XLS"
'On lance la procédure pour traiter les fichiers Excel
Call traiteXLS(mTabFiles(i))
Next i
End Sub
3. ensuite ,ici j'integre ma macro de mise en forme....si j'ai bien comprs...
4.et enfin ..encore une ^partie que je n'ai pas compris
Private Sub VideMemoire()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub
J'espere que je suis clair et que je n'abuse pas top de ton temps!!!
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
27 août 2009 à 11:24
27 août 2009 à 11:24
Bonjour,
Je viens de me rendre compte que je ne t'ai pas donné le bon lien ... Regarde sur celui là si le fichier est toujours actif sur cjoint.com: https://forums.commentcamarche.net/forum/affich-13840446-vba-ouverture-dossier#9.
Tu auras la partie qui permet de récupérer tous les fichiers d'un répertoire.
Pour répondre à tes questions:
1) et 4)
Cette partie de code sert à vider le presse-papier Windows. Si tu ne fais pas de copier/coller de feuille ou de plage, tu n'en as pas besoin.
2) ..j'ai enlevé quelques partie du code car je n'ai que du xls à traiter (j'espere ne pas avoir fait trop de coupe).
Es-tu sûr que ton répertoire ne contient que des fichiers .XLS ? Ca ne coûte rien de contrôler l'extension de ton fichier avant de le traiter.
3) Pour lancer ta macro, tu remplaces "Call traiteXLS(mTabFiles(i))" par "Call maMacro(mTabFiles(i))"
;o)
PS: Tu n'abuses pas ... ^^
Je viens de me rendre compte que je ne t'ai pas donné le bon lien ... Regarde sur celui là si le fichier est toujours actif sur cjoint.com: https://forums.commentcamarche.net/forum/affich-13840446-vba-ouverture-dossier#9.
Tu auras la partie qui permet de récupérer tous les fichiers d'un répertoire.
Pour répondre à tes questions:
1) et 4)
'L'objet ClipBoard n'existant pas en VBA, il faut utiliser les fonctions de l'API Windows : '-- Déclaration des fonctions API Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function EmptyClipboard Lib "user32" () As Long '.... Private Sub VideMemoire() OpenClipboard 0 EmptyClipboard CloseClipboard End Sub
Cette partie de code sert à vider le presse-papier Windows. Si tu ne fais pas de copier/coller de feuille ou de plage, tu n'en as pas besoin.
2) ..j'ai enlevé quelques partie du code car je n'ai que du xls à traiter (j'espere ne pas avoir fait trop de coupe).
Es-tu sûr que ton répertoire ne contient que des fichiers .XLS ? Ca ne coûte rien de contrôler l'extension de ton fichier avant de le traiter.
3) Pour lancer ta macro, tu remplaces "Call traiteXLS(mTabFiles(i))" par "Call maMacro(mTabFiles(i))"
;o)
PS: Tu n'abuses pas ... ^^
ok merci..le lien marche mais bon, je ne suis pas sur de comprendre ce qu'il faut faire :
Je vais essayer de reecrire une code simple et peut etre pourra tu m'aider:
1. definir mon dossier (que j'irai changer directement dans la macro ..une fois par an cela devra aller
2.faire une procedure lui indiquant de selectionner le premier fichier xls
3. faire tourner ma macro de mis en forme , enregistrer et fermer le fichier
4. dans la partie 2 mettre en place une boucle lui indiquant que lorsque la procedure de mise en forme et terminer qu'il doit faire la meme chose avec le second jusqu'au dernier des fichiers excel se trouvant dans mon dossier.
..je me lance.mais je ne sais meme pas par quoi commencer..lol
Encore merci pour ton aide...
Je vais essayer de reecrire une code simple et peut etre pourra tu m'aider:
1. definir mon dossier (que j'irai changer directement dans la macro ..une fois par an cela devra aller
2.faire une procedure lui indiquant de selectionner le premier fichier xls
3. faire tourner ma macro de mis en forme , enregistrer et fermer le fichier
4. dans la partie 2 mettre en place une boucle lui indiquant que lorsque la procedure de mise en forme et terminer qu'il doit faire la meme chose avec le second jusqu'au dernier des fichiers excel se trouvant dans mon dossier.
..je me lance.mais je ne sais meme pas par quoi commencer..lol
Encore merci pour ton aide...
ok
Private Sub traiteFichiers()
Dim pathfolder As String
Dim i As Long
Dim mTabFiles As Excel.Workbook
Set pathfolder = « C:\MonDossier\MonSousDossier »"
For i = LBound(mTabFiles()) To UBound(mTabFiles())
Call traiteXLS(mTabFiles(i))
Next i
End Sub
Je pense que je me plante complet mais bon dans cette procedure je voudrais lui indiquer ou se trouve mon dossier (pathfolder), lui definir mtabesfiles en tant que classeur excel et lui dire de faire une boucle en appliquant la macro traiteXLS...
je suis loin non??est ce qu'il est possible de le faire dans une procedure?
Sinon pour faire plus simple, je peux commencer ma macro en me mettant dans le dossier ou se trouve mes fichier excel et juste faire la boucle en lui demandant de prendre l'ensemble des fichiers excel se trouvant dedans???
Private Sub traiteFichiers()
Dim pathfolder As String
Dim i As Long
Dim mTabFiles As Excel.Workbook
Set pathfolder = « C:\MonDossier\MonSousDossier »"
For i = LBound(mTabFiles()) To UBound(mTabFiles())
Call traiteXLS(mTabFiles(i))
Next i
End Sub
Je pense que je me plante complet mais bon dans cette procedure je voudrais lui indiquer ou se trouve mon dossier (pathfolder), lui definir mtabesfiles en tant que classeur excel et lui dire de faire une boucle en appliquant la macro traiteXLS...
je suis loin non??est ce qu'il est possible de le faire dans une procedure?
Sinon pour faire plus simple, je peux commencer ma macro en me mettant dans le dossier ou se trouve mes fichier excel et juste faire la boucle en lui demandant de prendre l'ensemble des fichiers excel se trouvant dedans???
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 août 2009 à 12:23
27 août 2009 à 12:23
Salut,
J'ai peut être une autre solution ici
J'ai peut être une autre solution ici
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
27 août 2009 à 12:31
27 août 2009 à 12:31
OK ...
Je vais reprendre depuis le début .. ^^
1) definir mon dossier (que j'irai changer directement dans la macro ..une fois par an cela devra aller
- plutôt que d'aller dans le code modifier le chemin (pas très pro ça ;o)), je te propose de mettre le chemin du dossier dans une cellule d'une feuille d'Excel.
- Ensuite de mettre un bouton sur la feuille Excel pour lancer la macro.
2, 3, 4) faire une procedure lui indiquant de selectionner le premier fichier xls.
- C'est là que les choses se compliquent un peu. Ce n'est pas une mais plusieurs procédures ou fonctions que ta macro va mettre en oeuvre ... En effet, Tu as besoin de "plusieurs services" pour réaliser ce que tu veux faire. Il faut donc structurer ton code en autant de service que de tâche à faire. Cela permet une meilleure compréhension et maintenance de ton code.
Pour faire simple:
- On met en mémoire (dans un tableau "mTabFiles()") tous fichiers d'un répertoire. Pour faire cela, on va se servir d'une fonction.
- On va ensuite ouvrir un à un les fichiers pour les traiter.
Je fais une maquette et je te l'envoie.
Je vais reprendre depuis le début .. ^^
1) definir mon dossier (que j'irai changer directement dans la macro ..une fois par an cela devra aller
- plutôt que d'aller dans le code modifier le chemin (pas très pro ça ;o)), je te propose de mettre le chemin du dossier dans une cellule d'une feuille d'Excel.
- Ensuite de mettre un bouton sur la feuille Excel pour lancer la macro.
2, 3, 4) faire une procedure lui indiquant de selectionner le premier fichier xls.
- C'est là que les choses se compliquent un peu. Ce n'est pas une mais plusieurs procédures ou fonctions que ta macro va mettre en oeuvre ... En effet, Tu as besoin de "plusieurs services" pour réaliser ce que tu veux faire. Il faut donc structurer ton code en autant de service que de tâche à faire. Cela permet une meilleure compréhension et maintenance de ton code.
Pour faire simple:
- On met en mémoire (dans un tableau "mTabFiles()") tous fichiers d'un répertoire. Pour faire cela, on va se servir d'une fonction.
- On va ensuite ouvrir un à un les fichiers pour les traiter.
Je fais une maquette et je te l'envoie.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 août 2009 à 12:37
27 août 2009 à 12:37
Je proposais juste avant cette macro qui, il me semble, remplit toutes les conditions.
Sub ouvrir_et_fermer_fichiers ()
Dim ScanFic As Office.FileSearch
Dim NomFic As Variant
Dim Diag As String, fich As String, exten As String
Dim Nbr As Long
Dim NBlignes As Integer, NBCol As Integer
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
Range("A1").Value = Chemin '-----> à adapter si vous avez quelque chose en A1
exten = InputBox("Saisissez ici l'extension souhaitée pour la recherche. Par ex : xls pour excel, doc pour word, ppt pour powerpoint, pour tous fichiers tapez *.*", "Extension de fichier")
Set ScanFic = Application.FileSearch
With ScanFic
.NewSearch
.LookIn = Range("A1").Value
.SearchSubFolders = True
.Filename = exten
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
Nbr = .Execute
For Each NomFic In .FoundFiles
Workbooks.Open Filename:=NomFic
MsgBox (NomFic & " est ouvert et va se refermer")
ActiveWorkbook.Close
Next
End With
End Sub
Sub ouvrir_et_fermer_fichiers ()
Dim ScanFic As Office.FileSearch
Dim NomFic As Variant
Dim Diag As String, fich As String, exten As String
Dim Nbr As Long
Dim NBlignes As Integer, NBCol As Integer
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
Range("A1").Value = Chemin '-----> à adapter si vous avez quelque chose en A1
exten = InputBox("Saisissez ici l'extension souhaitée pour la recherche. Par ex : xls pour excel, doc pour word, ppt pour powerpoint, pour tous fichiers tapez *.*", "Extension de fichier")
Set ScanFic = Application.FileSearch
With ScanFic
.NewSearch
.LookIn = Range("A1").Value
.SearchSubFolders = True
.Filename = exten
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
Nbr = .Execute
For Each NomFic In .FoundFiles
Workbooks.Open Filename:=NomFic
MsgBox (NomFic & " est ouvert et va se refermer")
ActiveWorkbook.Close
Next
End With
End Sub
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
27 août 2009 à 12:45
27 août 2009 à 12:45
Interressante ... mais il est de bon ton de citer ses sources ...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
>
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
27 août 2009 à 12:49
27 août 2009 à 12:49
Exact, et je suis le premier à le faire en tant ordinaire... Malheureusement j'ai perdu la source de cette macro. Désolé pour l'auteur.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
27 août 2009 à 12:43
27 août 2009 à 12:43
Voilà tu n'as plus qu'à mettre ton code dans TraiteXLS() ... : https://www.cjoint.com/?iBmReQcnXs
merci polux!!!!!!!!!
tu es un boss........je pense que seul j'aurais mis un mois!!!
cool
bonne journée
tu es un boss........je pense que seul j'aurais mis un mois!!!
cool
bonne journée
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 août 2009 à 19:43
26 août 2009 à 19:43
Je ne pense que ça soit ce qui est demandé !!!
Ici l'utilisateur doit à chaque fois sélectionner un fichier pour le traiter. Il me semble que la demande est de le faire automatiquement à partir d'un dossier.
En résumé:
La macro ouvre un fichier dans un dossier, traite la mise en forme du fichier, le sauvegarde et fait la même chose avec le fichier suivant ... ainsi de suite jusqu'au dernier fichier du dossier.
Si l'utilisateur doit intervenir, ce n'est que pour indiquer le dossier contenant les fichiers à traiter.
;o)
Ici l'utilisateur doit à chaque fois sélectionner un fichier pour le traiter. Il me semble que la demande est de le faire automatiquement à partir d'un dossier.
En résumé:
La macro ouvre un fichier dans un dossier, traite la mise en forme du fichier, le sauvegarde et fait la même chose avec le fichier suivant ... ainsi de suite jusqu'au dernier fichier du dossier.
Si l'utilisateur doit intervenir, ce n'est que pour indiquer le dossier contenant les fichiers à traiter.
;o)