Forum Clubic

Changer l'extension de fichier par VBA

bonjour @ tous,
voila j’ai un formulaire sous access avec un bouton dont j’aimerais qu’il exécute le changement d’extraction de fichier c’est à dire que je souhaiterait qu’en appuyant sur mon bouton l’extraction d’un fichier change,par exemple :
toto.Lso devienne toto.txt
donc tout d’abord es-ce possible??
si oui, quel commande permet-il de faire cela??

merci d’avance pour votre aide!!

Edité le 25/06/2007 à 13:35

Qu’est ce que tu veux faire exactement ?
Renommer ton fichier avant de l’extraire ?
en VBA : name ancien_nom AS nouveau_nom

C bon en faite g trouvé, je vais utiliser FileCopy vu que je pense que mon maitre de stage préfér conserver les fichier en .ls0
Mais le problème c’est que j’en ai pas qu’un fichier dont je doi changer d’extraction (j’en ai 6) t’aurai un moyen gcc qui serait plus simple car répéter je ne sait combien de fois le code suivant ca va être lourd :

If Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\ipms_icxs_pves_epms_iens_fab_naz.ls0") = "ipms_icxs_pves_epms_iens_fab_naz" Then
        FileCopy "X:\Comptes Utilisateurs\stagebeluc\Loïc\ipms_icxs_pves_epms_iens_fab_naz.ls0", "X:\Comptes Utilisateurs\stagebeluc\Loïc\ipms_icxs_pves_epms_iens_fab_naz.txt"
    Else
        MsgBox ("Le fichier n'est pas ici")
    End If

merci d’avance pr ton aide!!

Si tu veux copier tous les .lso tu as plus vite fait de passer par le DOS que tu appelles depuis la commande shell
shell “copy *.lso *.txt”, true

Edit: tu peux bien sûr inclure le path
Edité le 20/06/2007 à 10:56

oué C sur mé bon, j’ai peur ke mon maitre de stage soi dépasser la dessu, surtout ke déja access il ny coné po gd chose(il es en stage Access actuellemen) donc jpréfér éviter !!ken pense tu??

Le rôle d’un maître de stage, c’est de piloter son stagiaire. C’est à lui de donner, les orientations du projet et les grandes lignes de la marche à suivre.
Ca, sa se fait dans les briefs du matin.
Après, pour ce qui est de savoir s’il doit ou non rentrer dans le détail du programme, c’est à lui de décider.
De toute manière, la maintenabilité ultérieure dépendra essentiellement de la documentation que tu laisseras avec ton programme (notice utilisateur, notice de maintenance et analyse fonctionnelle et spécifications techniques)
Ceci dit pour moi, quelqu’un qui ne connait pas la commande copy et qui est maître de stage, ca ne doit pas courir les rues

ok, po bien de juger les gens!!lol. Il ma guider et je regarde ce quil a fé oparaven… Jaime po kon juge les gens sans les connaitres dc fé gaffe!!MDR.LOL.

si cela interresse quelqu’un j’ai trouvé une solution pour changer l’importation de plusieur fichier en même temps , c’est le code suivant :

Private Sub Impor_Bpss_Ipms_Click()
On Error GoTo Err_Impor_Bpss_Ipms_Click
     
    'Ajoute comme référence Microsoft Scripting Runtime
    Dim Fso As New FileSystemObject
    Dim Fi As File
    Dim NomFile As String
    Dim Rep As String
'    If Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\*.ls0") > 1 Then
        Rep = "X:\Comptes Utilisateurs\stagebeluc\Loïc\"
        For Each Fi In Fso.GetFolder(Rep).Files
            If UCase(Fso.GetExtensionName(Fi.Name)) = "LS0" Then
                NomFile = Mid(Fi.Name, 1, InStrRev(Fi.Name, "."))
                'Copie le fichier True = Ecrase si exsite
                Call Fi.Copy(Rep & NomFile & "txt", True)
            End If
        Next
        Set Fso = Nothing
        Set Fi = Nothing
'    Else
'        MsgBox ("Erreur")
'    End If
    
     
Exit_Impor_Bpss_Ipms_Click:
    Exit Sub

Err_Impor_Bpss_Ipms_Click:
    MsgBox err.Description
    Resume Exit_Impor_Bpss_Ipms_Click
    
End Sub


mais j’ai un problème qui est le suivant : j’aimerai qu’un message d’erreur s’affiche si mes fichier ls0 ne sont pas dans le dossier donné, comment faire??(dans un forum on me dit avec un DIR() mais le problème je sait pas ou le placer…!!

merci d’avance pour votre aide!!

Oui, la fonction dire permet de vérifier l’existence d’un fichier.

Dir(chemin_de_mon_fichier) retourne “” si le fichier n’existe pas.

Donc par exemple:
If Dir(mon_fichier) <> “” Then
'Le fichier existe donc je dois le renommer
End If

C’est ce qui figure dans le code ci-dessus mais qui est commenté

C’était bon ta ligne If Dir(“X:\Comptes Utilisateurs\stagebeluc\Loïc*.ls0”) > 1 Then
sauf que DIR retourne une chaine ; ce n’est donc pas >1 mais >"" qu’il faut mettre

tu avais raison, merci beaucoup!!


pour importer les feuilles qui sont mtn en .txt, sui obliger de faire une par une (en mettan les noms) ou yauré un moyen pour que cela s"'effectue directemen??

Il faut le faire avec une boucle
Tu peux utiliser la technique du ForEach, ou du Dir(), les deux se valent

je voit pas vrémen comment ça peut fonctionner l’importation des fichiers parce que je veux que si les tables correspondant aux nom des fichier en .txt existe alors on les supprime pour les recréer avec les nouveaix fichier .txt!!
donc je sait vraimen pas comment faire si j’utilise la commande transferSpreedsheat.

Si tes fichiers contiennent des données sour forme de feuilles excel, ils doivent conserver l’extension.xls et tu utilises transferspreadsheet.
Si tes fichiers contiennent des données au format texte, tu peux les renommer .txt, mais à ce moment là tu utiliseras transferttext

ok, c’est des fichier qui sont en .txt donc c’est transferttext. Mais je peux avec cette commande importer tout les fichiers sans donner les noms exact ou sui obligé de faire fichier par fichier??

Il faut faire une ligne par fichier.
Ceci dit, cette ligne peut être dans une boucle, et le nom de fichier source remplacé par une variable
Variable que tu alimentes par une boucle foreach ou while
Si tu utilises while il faut faire
x = dir("*.txt") ’ ou ce que tu veux exactement comme étendue
while x <> “”

x=dir()
wend
Edité le 20/06/2007 à 15:03

voila j’ai essayer avec un while, mais problème ca ne fais rien du tout c’est à dire que la table ne se fait pas, commen faire??

tu essaies en pas à pas et tu regardes si tu rentres dans la boucle

le problème c’est que je rentre pas dans la boucle, mais pourquoi??(je ne le sait pas par le pas à pas mais par un MsgBox juste apré le while.

Et si tu faisais comme on te le conseille ?
Ca te permettrait de voir et de modifier en temps réel les valeurs de tes variables
Edité le 20/06/2007 à 15:29