Problème convertion de fichiers

Résolu
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012 - 10 mars 2006 à 10:42
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012 - 10 mars 2006 à 15:56
bonjour,

voila, je voudrais convertir l'ensemble des fichiers d'un répertoire en changeant l'extention qui rest choisi dan un combo box nommé CmbConv. voici mon code:
il me met "fichiers introuvable"

Private Sub CmdConvert_Click()
Dim OldName As String
Dim NewName As String
'MsgBox "En construction"
repertoire = MainForm.DirList.Path + ""
extension = " " ' 1 espace
Do
fich = Dir(repertoire, vbNormal)
If fich = "" Then Exit Do
ext = Mid(fich, 1, 3)
If InStr(extension, ext) = 0 Then
extension = extension & ext & " " ' 1 espace OldName fich & ext: NewName fich & CmbConv.Text
Name OldName As NewName ' Renommer
End If
Loop
MsgBox "Opérations terminés"
End Sub

merci

14 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 mars 2006 à 13:02
Salut,

héhé, finalement on y arrive tout doucement à ma solution

rien ne vaut les solutions classiques.







attention tous les fichiers du répertoire seront renommés avec l'extension choisi

donc possibilité de double



Dim repertoire As String

Dim OldName As String

Dim NewName As String

Dim fich As String



repertoire = dirList.Path & ""



fich = Dir$(repertoire & "*.*")

Do While fich <> ""

OldName = repertoire & fich

NewName =
repertoire & Right$(fich, InStrRev(fich, ".")) & CmbConv.Text

Name OldName As NewName

fich = Dir$()

Loop


Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 mars 2006 à 15:52
ok je vois, erreur de copie:



NewName = repertoire & Left$(fich, InStrRev(fich, ".")) & CmbConv.Text

Daniel
3
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
10 mars 2006 à 11:37
la fonction DIR te renvoi le nom du fichier avec son extension.
donc lorsque tu fait OldName = fich & ext, tu obtiens monFichier.txt.txt
c'est pour cela que tu ne retrouve pas ton fichier a la fin.
je pense qu'il faut que tu fasse directement

Name Fich As NewName
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 11:42
daccord, donc j'ai corrigé:

NewName = fich & CmbConv.Text
Name fich As NewName ' Renommer

mais je suppose que quand je fait:
fich = Dir(repertoire, vbNormal)
il faudrais que je supprime l'extention de fich, non? comment faireN?
0

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

Posez votre question
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
10 mars 2006 à 12:03
en splitant ton nom de fichier avec le point comme separateur, et en recollant les N-1 premier morceaux

mais ce n'est qu'une solution (pas la mieux) parmis d'autres

il y a des exemple sur le site, fait une recherche et tu trouvera surement ton bonheur
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 12:04
eu.....et comment on fait ca?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 12:32
salut



et ton do loop sans condition de sortie? je vois bien ton exit do mais ta condition devrait être en do while ;)








Option Explicit



Private Sub Form_Load()

Const sFile As String = "fichier.txt"

Dim iPos As String, a$, b$



iPos = InStrRev (sFile, ".")



a = Left$(sFile, iPos - 1)

b = Right$(sFile, Len(sFile) - iPos)



MsgBox a & vbCrLf & b

Unload Me

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 12:33
ipos as integer
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 14:19
alors, j'ai tester le truc de Daniel, ca marche, mis a part u'il en profite pour me shooter les noms des fichiers
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 mars 2006 à 15:13
comment ça shooter les noms de fichiers, donne un exemple

j'ai pas testé si fichiers sans extension InStrRev(fich, ".") = zéro

qu'est ce qu'on fait de ces fichiers ?

on les modifie en rajoutant l'extension ?





Dim iPos As Integer

iPos = InStrRev (fich, ".")



If iPos > 0 Then

NewName = repertoire & Right$(fich, iPos) & CmbConv.Text

Else

NewName = repertoire & fich & "." & CmbConv.Text

End If


Daniel
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 mars 2006 à 15:19
phenX fait allusion à la fonction Name, apparemment sans avoir lu ton code...
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 15:20
j'ai repris ce code:

Dim repertoire As String
Dim OldName As String
Dim NewName As String
Dim fich As String

repertoire = dirList.Path & ""

fich = Dir$(repertoire & "*.*")
Do While fich <> ""
OldName = repertoire & fich
NewName = repertoire & Right$(fich, InStrRev(fich, ".")) & CmbConv.Text
Name OldName As NewName
fich = Dir$()
Loop

si je le lance sur un dossier ou il y a deux fichier word: "12.doc" et "123.doc", et que je met une convertion en txt, ils deviennet respectivement:

".doc.txt" et "doc.txt"
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 15:47
a mon avis ce doit être un problème dans la ligne
NewName = repertoire & Right$(fich, InStrRev(fich, ".")) & CmbConv.Text
parceque c'est la que l'on défini le nouveau nom mais je vois pas....
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
10 mars 2006 à 15:56
super

merci a tous , ca fonctionne
0
Rejoignez-nous