Changer l'extension d'un fichier sous VBA

thunderbolt -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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

8 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  2. thunderbolt
     
    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
    1. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  4. thunderbolt
     
    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
    1. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      le principe est le même mais j'aatendais que tu me dises comment était ton fichier texte ;-)
      je te rajoute une boucle....
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  7. thunderbolt
     
    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
    1. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      modifie l'autre code en conséquence
      avec...

      ActiveWorkbook.SaveAs Filename:=Chemin & LeNom, FileFormat:=xlNormal
      0
  8. thunderbolt
     
    Bon ba c'est tout simplement Parfait, je te remercie encore
    Bonne journée à toi Bye ;)
    0
  9. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    penses à mettre résolu s'il te plait
    0