Grandchefus
XLDnaute Nouveau
Bonjour,
Pour des besoin de traitement global, un ami m'avait réalisé la macro ci-dessous sous une ancienne version d'excel.
Son but est simple : je déclare un dossier, un type de fichier, et la macro ouvrait un à un l'ensemble des fichiers présents dans ce dossiers (par exemple, des .DBF) et les enregistrait en .xls
Depuis passage en Excel 2010, la fonction Application.Filesearch est déclarée non reconnue.
1) Existe-t-il une alternative ?
2) Sachant que je ne suis pas 'programmeur VB' à la base, la mise en oeuvre de cette alternative (si elle existe) est elle complexe ou facilement accessible ?
J'ai bien évidemment exploré un peu le forum, et fait des 'tests' avec des info glanées à droite à gauche sur ce forum, mais sans résultat (surement lié à mon inexpérience en programmation).
Merci d'avance.
Sub Outil_Converstion()
Application.ScreenUpdating = True
Application.DisplayAlerts = True
'LA on conditionne l'ouverture du DIR.
SearchDir = InputBox("Chemin d'accès des fichiers")
FileExt = InputBox("Quel type de fichiers (*.dbf - *.txt) ?")
SaveDir = InputBox("Chemin cible sans le \ à la fin")
SearchSubs = MsgBox(prompt:="Inclure les sous-dossiers ?", Buttons:=vbYesNo)
'Initializes the search.
With Application.FileSearch
.NewSearch
.LookIn = SearchDir
'Determines whether to search subdirectories.
If SearchSubs = 6 Then
.SearchSubFolders = True
Else
.SearchSubFolders = False
End If
'Determines file type to convert.
.Filename = FileExt
.MatchTextExactly = True
'Si la recherche est fructueuse on compte les fichiers traités
If .Execute > 0 Then
counter = 0
For i = 1 To .FoundFiles.Count
counter = counter + 1
Workbooks.Open Filename:=.FoundFiles(i)
'On enregistre au format Excel en utilisant le nom du fichier ouvert
ActiveWorkbook.SaveAs Filename:=SaveDir & "\" & _
Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4), _
FileFormat:=xlWorkbookNormal
ActiveWorkbook.Close savechanges:=False
Next i
'Récap des fichier traités
MsgBox prompt:=counter & "Fichier(s) convertis"
ElseIf .Execute = 0 Then
MsgBox "Pas de fichiers a traiter"
End If
End With
End Sub
[Edit] - Passage en Résolu.
Pour des besoin de traitement global, un ami m'avait réalisé la macro ci-dessous sous une ancienne version d'excel.
Son but est simple : je déclare un dossier, un type de fichier, et la macro ouvrait un à un l'ensemble des fichiers présents dans ce dossiers (par exemple, des .DBF) et les enregistrait en .xls
Depuis passage en Excel 2010, la fonction Application.Filesearch est déclarée non reconnue.
1) Existe-t-il une alternative ?
2) Sachant que je ne suis pas 'programmeur VB' à la base, la mise en oeuvre de cette alternative (si elle existe) est elle complexe ou facilement accessible ?
J'ai bien évidemment exploré un peu le forum, et fait des 'tests' avec des info glanées à droite à gauche sur ce forum, mais sans résultat (surement lié à mon inexpérience en programmation).
Merci d'avance.
Sub Outil_Converstion()
Application.ScreenUpdating = True
Application.DisplayAlerts = True
'LA on conditionne l'ouverture du DIR.
SearchDir = InputBox("Chemin d'accès des fichiers")
FileExt = InputBox("Quel type de fichiers (*.dbf - *.txt) ?")
SaveDir = InputBox("Chemin cible sans le \ à la fin")
SearchSubs = MsgBox(prompt:="Inclure les sous-dossiers ?", Buttons:=vbYesNo)
'Initializes the search.
With Application.FileSearch
.NewSearch
.LookIn = SearchDir
'Determines whether to search subdirectories.
If SearchSubs = 6 Then
.SearchSubFolders = True
Else
.SearchSubFolders = False
End If
'Determines file type to convert.
.Filename = FileExt
.MatchTextExactly = True
'Si la recherche est fructueuse on compte les fichiers traités
If .Execute > 0 Then
counter = 0
For i = 1 To .FoundFiles.Count
counter = counter + 1
Workbooks.Open Filename:=.FoundFiles(i)
'On enregistre au format Excel en utilisant le nom du fichier ouvert
ActiveWorkbook.SaveAs Filename:=SaveDir & "\" & _
Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4), _
FileFormat:=xlWorkbookNormal
ActiveWorkbook.Close savechanges:=False
Next i
'Récap des fichier traités
MsgBox prompt:=counter & "Fichier(s) convertis"
ElseIf .Execute = 0 Then
MsgBox "Pas de fichiers a traiter"
End If
End With
End Sub
[Edit] - Passage en Résolu.
Dernière édition: