Changer l'extension d'un fichier sous VBA

Fermé
thunderbolt - 5 juil. 2010 à 10:59
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 5 juil. 2010 à 15:19
Bonjour,

Je bloque un peu sur VBA pour changer l'extension d'un fichier. Enfait Dans un répertoire j'ai 2 dossier, l'un contenant des fichier .txt et je voudrais réenregistrement ces fichier en .xls dans le deuxième dossier. Je ne connais pas vraiment VBA alors je patoge pas mal. Si vous avez une idée me permetant de me dire dans quelle direction chercher je vous en remercie. Toute aide est la bienvenue, merci d'avance

A voir également:

8 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 11:05
changer l'extension d'un fichier sous VBA :
il faut utiliser faire : name fichier.txt fichier.xls

mais dans ton cas j'ai des doutes...
Je ne connais pas vraiment VBA alors je patoge pas mal.
Explique ce que tu veux faire ce sera plus simple.
j'ai l'impression que la methode enregistrer Sous... serait plus proche de ton besoin.
A+
0
Merci déjà pour ta réponse si rapide, je vais essayer d'expliquer un peu mieux ce que j'essai de faire.
Enfaite, j'ai plusieurs dossier qui on comme nom des dates mais ces dossiers ont toujours la même arborescence. dans chacun de ces dossier j'ai deux sous répertoires: Données brutes et Données Excel. dans le dossier données brutes j'ai un ensemble de fichier text et ce que je voudrais c'est ré enregistrer ces fichiers au format .xls dans le deuxième dossier appelée Données Excel
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 11:44
donc ce qu'il te faut c'est utiliser une conversion des données TXT vers XLS puis enregistrez le fichier excel dans le bon dossier.


As-tu écris quelque chose pour la conversion des données?
Ne sachant pas comment sont ordonnées les données en texte ... difficile!
peux-tu donner un exemple sur ci-joint .fr ( pas de données confidentielles ou personnelles)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 12:58
pour t'avancer dans ta demarche
executes ce code.
il t'ouvre la boite de dialogue "fichier ouvrir" puis tu selectionnes le fichier Texte
il l'ouvres comme si le fichier était bien formaté ( à voir)
puis il l'enregistre dans le sousdossier \Données Excel ..
le résultat est un fichier xls...





Sub Convertit_en_xls()
Dim Chemin As String
Dim Fichier As String
Dim LeNom As String

    Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    Workbooks.OpenText (Fichier)
   
    While Right(Fichier, 1) <> "\"
        LeNom = Right(Fichier, 1) & LeNom
        Fichier = Left(Fichier, Len(Fichier) - 1)
    Wend
    CheminSource = Left(Fichier, Len(Fichier) - 1)
    
    
    While Right(CheminSource, 1) <> "\"
        CheminSource = Left(CheminSource, Len(CheminSource) - 1)
    Wend
    Chemin = CheminSource & "Données Excel\"
    
    LeNom = Left(LeNom, Len(LeNom) - 3) & "xls" ' le nom avec xls
       
        ActiveWorkbook.SaveAs Chemin & LeNom
        ActiveWorkbook.Close

End Sub
0
hua super, merci ça l'enregistre dans le bon dossier, maintenant faut juste voir pour qu'il l'ouvre automatiquement et faire une boucle de façon a ce qu'il fasse de même pour tout les fichier texte du dossier. Pour l'ouvrir et faire la boucle je devrais réussir a m'en sortir mais au cas ou je reposerais sur ce forum par contre, quand le fichier se ré enregistre il demande de confirmer que je veux bien enregistrer les modification, il y aurait il un moyen de désactiver cette alerte?

Merci beaucoup pour ton aide précieuse.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 14:06
le principe est le même mais j'aatendais que tu me dises comment était ton fichier texte ;-)
je te rajoute une boucle....
0

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

Posez votre question
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 14:34
je n'ai pas eu d'erreur mais vérifie quand même...

A+



Public TabloFichier() As String

Sub Convertit_en_xls()
Dim Chemin As String
Dim SavChemin As String
Dim CheminSource As String
Dim Fichier As String
Dim LeNom As String
Dim j As Integer

    Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    

    While Right(Fichier, 1) <> "\"
        LeNom = Right(Fichier, 1) & LeNom
        Fichier = Left(Fichier, Len(Fichier) - 1)
    Wend
    
    CheminSource = Left(Fichier, Len(Fichier) - 1)
    SavChemin = CheminSource & "\"
    creerListeFichier (Fichier)  ' un tableau qui contient tous les noms de fichier TXT
    
    While Right(CheminSource, 1) <> "\"
        CheminSource = Left(CheminSource, Len(CheminSource) - 1)
    Wend
    Chemin = CheminSource & "Données Excel\"   ' le dossier d'enregistrement
    
    ' on boucle sur le tableau
    For j = 0 To UBound(TabloFichier)
        LeNom = TabloFichier(j)
        Fichier = SavChemin & LeNom
        Workbooks.OpenText (Fichier)
        LeNom = Left(LeNom, Len(LeNom) - 3) & "xls" ' le nom avec xls
       
        ActiveWorkbook.SaveAs Chemin & LeNom
        ActiveWorkbook.Close
    Next j
End Sub



Public Sub creerListeFichier(specdossier)
    
    Dim fso, oDossier, oFichier, sFichier

    Dim I As Integer
    Dim s As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oDossier = fso.getfolder(specdossier)
    Set oFichier = oDossier.Files
    For Each sFichier In oFichier
        If Right(sFichier.Name, 3) <> "txt" Then
           ' ce n'est pas un fichier txt
        Else
            ReDim Preserve TabloFichier(I)
            TabloFichier(I) = sFichier.Name
            I = I + 1
       End If
    Next
   
   
End Sub
0
Merci pour se nouveau code, je ne l'ai pas encore essayer, je te dis tout de suite s'il marche, j'étais en train de modifier de trois bricole sur l'ancien car enfaite, le fichier s'ouvrait bien mais j'avais un message d'erreur sur l'extension et j'ai aussi supprimer les message d'alerte ça donnais ça (je renvoie que la fin, le début est le même)

ActiveWorkbook.SaveAs Filename:=Chemin & LeNom, FileFormat:=xlNormal

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.DisplayAlerts = True


End Sub

Encore un grand merci pour ton aide,
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 14:56
modifie l'autre code en conséquence
avec...

ActiveWorkbook.SaveAs Filename:=Chemin & LeNom, FileFormat:=xlNormal
0
Bon ba c'est tout simplement Parfait, je te remercie encore
Bonne journée à toi Bye ;)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
5 juil. 2010 à 15:19
penses à mettre résolu s'il te plait
0