tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 18 janv. 2008 à 15:13
Tu peux faire un prog qui ouvre tes fichiers dbf avec excel et ensuite ferme Excel en sauvant en .xls puis passer au fichier dbf suivant de ton répertoire.
cherche toutes ses fonctionnalités indépendemment les unes des autres et associes les pour faire ce que tu veux.
-lister des fichiers d'un répertoire
-ouvrir des fichiers avec une api
-fermer excel en sauvant le fichier ouvert
TBBUIM
Vous n’avez pas trouvé la réponse que vous recherchez ?
Konyl
Messages postés25Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention 7 octobre 2010 18 janv. 2008 à 15:57
Voila donc ce que j'obtient mais ça ne marche pas, je ne sais pas quoi mettre pour qu'il saveas le fichier mais en gardant le même nom (vu le nombre de fichiers je ne peux pas tous les citer, il faudrait que ça marche dans tous les cas)
Sub Laggo()
'Ouvre tous les fichiers .xls dans Ton repertoire
Dim File_Is As String
File_Is = Dir("C:\Documents and Settings\konyl\Bureau\Test Laggo\*.DBF")
Wb.SaveAs ActiveWorkbook.SaveAs ------------------
Wb.Close
'Ici, il faut que tu renseigne le nom du dernier fichier (ordre alphabethique ! sinon ça tourne en boucle !
Do Until File_Is = ""
Workbooks.Open Filename:="C:\Documents and Settings\konyl\Bureau\Test Laggo" & File_Is
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 18 janv. 2008 à 16:04
A mon avis, il faudrait que l'ouverture et la fermeture se fasse fichier par fichier.
De ce fait, tu pourrais récupérer le nom du fichier dbf en cours et pouvoir ainsi le renommer efficacement en .xls
Trouves une autre fonction pour lister tes fichiers
ainsi qu'une api pour ouvrir le fichier dbf
Enfin, une fois que tu as fait ça, tu pourras dire de fermer Excel en sauvant le fichier en tant qu'xls.
La boucle étant là pr passer au fichier suivant et effectuer à nouveau l'opération.
TBBUIM
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 18 janv. 2008 à 16:17
Utilises ce genre de fonction pr lister tes fichiers
Ainsi dans le for each tu feras ton action d'ouverture et de fermeture
et le f1.Name t'aideras à récupérer le nom du fichier en cours...
Sub AfficheListeFichier(specdossier)
'Affiche tous les Fichiers du Dossiers specfichiers
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
If s = "" Then
MsgBox ("Aucuns Fichiers")
Else
MsgBox s
End If
Konyl
Messages postés25Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention 7 octobre 2010 21 janv. 2008 à 09:03
Hello,
Merci pour ta réponse, aussi j'ai construit ça ce week-end.
Mais sur les ligne en rouge (plus bas), il ne trouve pas de fichier a convertir alors que je me trouve dans le bon répertoire.
Une idée ?
Sub Outil_Laggo()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'LA on conditionne l'ouverture du DIR.
SearchDir = InputBox("Chemin d'accès des fichiers")
FileExt = InputBox("Quel type de fichier Mr Laggo ? *.xxx")
SaveDir = InputBox("Input name of directory to save files to")
SearchSubs = MsgBox(prompt:="Les sous-dossiers aussi Breakmezz ?", 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 & " GG Konyl ! Les fichiers ont été convertis"
ElseIf .Execute = 0 Then
MsgBox "Pas de fichiers a traiter"
End If
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 21 janv. 2008 à 09:10
Apparemment, il y a une erreur...
.FileName c'est probablement le nom du fichier
Truc.dbf
Et toi tu mets : = FileExt
qui est juste l'extension .dbf
Donc forcément, il ne trouvera aucun fichier de ce nom là...
Faudrait plutôt prendre tous les fichier dont l'extension est égal à FileExt
right(.FileName,3) = FileExt
ceci récupère les 3 dernieres lettres du fichier (donc l'extension) et compare avec l'extension voulu.
TBBUIM