Transformer une extention de fichier

Résolu
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 7 octobre 2010 - 18 janv. 2008 à 14:11
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 7 octobre 2010 - 21 janv. 2008 à 11:35
Bonjour,

Je cherche le moyen de renomer des fichiers dans un répertoire donné via Excel VB.

Je souhaites ouvrir des .DBF dans excel puis les enregistrer au format .xls.

Le code doit pouvoir ouvrir TOUS les fichiers dans présent dans le répertoire et ayant l'extention .DBF

Pouvez vous m'aider ?

Si oui vous me sauvez

11 réponses

tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
21 janv. 2008 à 09:11
Arf, si ton fileExt contient le "." avec l'extension (.dbf) il faut mettre
right(.FileName,4) = FileExt
TBBUIM
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 janv. 2008 à 14:35
filename = dir$("*.dbf")
do while lenb(filename)
...
msgbox filename
filename = dir$()
loop
0
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 7 octobre 2010
18 janv. 2008 à 14:43
Je suis un boulet, c'est impec pour du renomage en chaine mais en fait je me suis mal exprimé...

Le but est que Excel ouvre le fichier puis le sauvegarde au format .xls.

*******.DBF (par exemple) doit être donc ouvert dans Excel puis suavegarder sous en *******.xls

Pour info il y a plus de 500 fichiers dans le répertoire. L'idéal serait donc de ne pas avoir de limite dans le volume de fichier.

Encore merci pour ton aide.
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Derniè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
              
       File_Is = Dir
    Loop
End Sub
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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
0
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 7 octobre 2010
18 janv. 2008 à 16:15
Mais Excel est capable d'ouvrir un .DBF

Ce qu'il manque c'est l'enregistrement auto en gardant le nom de l'activeworkbook au moment ou il est ouvert.

ActiveWorkbook.SaveAs (Filename=(wbname),FileFormat:=xlNormal))
ActiveWorkbook.close
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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


End Sub

TBBUIM
0
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Derniè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


   End With
   End Sub
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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
0
Konyl Messages postés 25 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 7 octobre 2010
21 janv. 2008 à 11:35
Yes merci beaucoup !
0
Rejoignez-nous