IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

changer l'extension d'un fichier par VBA


Sujet :

VBA Access

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut changer l'extension d'un 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'extension de fichier c'est à dire que je souhaiterait qu'en appuyant sur mon bouton l'extension 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!!

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    Salut,

    il faudra le faire deux étapes

    copier l'ancien fichier et en suite effacer l'ancien :
    Donc ça donnera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        FileCopy "toto.Lso", "toto.txt"
        Kill "toto.Lso"
    A+,
    MasterSleepy.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    merci, on vien de me donner une autre solution :
    Name "toto.lso" AS "toto.txt" et ca fonctionne mais je vais procéder autrement je pense CAD que je vais d'abord copier le fichier pour pouvoir conserver l'original et ensuite modifier le nom(l'extension) du fichier.

    merci bcp!!

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\ipms_icxs_pves_epms_iens_fab_naz.ls0") = "ipms_icxs_pves_epms_iens_fab_naz.ls0" 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"
         End If
    par contre sui-je obliger de faire a chaque fois comme ca pour modifier l'extraction de plusieurs fichiers ou y'aurait-il un autre moyen plus simple??

  5. #5
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 791
    Points : 3 058
    Points
    3 058
    Par défaut
    Il faut effectivement faire un dir puis un Name xxx As yyyy de chacun de tes fichiers.

    Christophe

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    merci cavo, mais j'ai trouver comment faire!!merci bcp quand même!!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Si tu as trouvé, merci de cliquer sur

    Starec

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    ben j'ai trouvé, mais je vais peut-être encore avoir besoin d'aide sur un truc qui a rappor c'est pour cela starec ke je laisse comme ca!!

  9. #9
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 791
    Points : 3 058
    Points
    3 058
    Par défaut
    Je suis très nouveau sur le forum : vraiment actif depuis hier. Lorsque je regarde la liste dees questions par forum, c'est vraiment impressionnant et je me focalise sur les questions n'étant pas préfixées par "Résolu". En effet, rien ne sert d'essayer d'apporter une réponse à quelqu'un qui a déjà sa solution ===> je ne peux que te recommander de cliquer sur le bouton afin de permettre aux autres d'être plus efficace dans leur aide

    Merci pour eux.

    Christophe

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    je sait cavo, je mettré Résolu lorsque mon bouton sera totalemen résolu!! car pour le momen j'ai résolu qu'une petite partie du problème.
    si quelqu'un peux m'aider!!
    mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    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
        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
     
     
    Exit_Impor_Bpss_Ipms_Click:
        Exit Sub
     
    Err_Impor_Bpss_Ipms_Click:
        MsgBox err.Description
        Resume Exit_Impor_Bpss_Ipms_Click
     
    End Sub
    Il permet de changer l'extension des fichiers ls0 se trouvant dans le répertoire. Mais maintenant je voudrais faire en sorte que si il y à aucun fichier ls0 dans le répertoire, il y es un message d'erreur qui s'affiche, je sait que c'est possible mais je sait pas comment faire (enfin si on ma dit sur un autre forum d'utiliser un DIR mais je sait pas trop ou le placer)si quelqu'un peut m'aider, c'est le bienvenue!!

  11. #11
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 791
    Points : 3 058
    Points
    3 058
    Par défaut
    Personnellement, voici comment j'aurais fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    Dim sFile As String, sFolder As String
     
       sFolder = "X:\Comptes Utilisateurs\stagebeluc\Loïc\"
     
       sFile = Dir(sFolder & "*.LS0")
     
       If sFile = "" Then
     
          Msgbox "Il n'y a aucun fichier LS0 dans ce folder"
     
       Else
     
          Do While Not sFile = ""
     
             Name sFolder & sFile As sFolder & Left(sFile, Len(sFile)-3) & ".txt"
     
             sFile = Dir()
     
          Loop
     
       End If
    C'est basique mais devrait être OK.

    Christophe

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    ok cavo, merci pour ta réponse, j'ai réussi à trouver!! sinon maintenant je voudrais pouvoir importer tout les fichiers que l'on à mit en .txt mais sans dire leur nom. Mon code du moment es le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    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
        Dim X As String
        If Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\*.ls0") > "" 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
            X = Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\*.txt") ' ou ce que tu veux exactement comme étendue
            While X <> ""
                DoCmd.TransferText acImportDelim, Texte, "ipms_icxs_pves_epms_iens_ha", X, True
            X = Dir()
            Wend
         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
    en pas à pas : il passe de la commande transfertext à la ligne msgBox err.Description
    en mode normal : me met le message d'erreur suivant : The Microsoft Jet database engine could not find the object 'ipms_icxs_pves_epms_iens_ha.txt'. Make sure the object exists and that you spell its name and the path name correctly.
    voila, merci d'avance pour votre aide!!

  13. #13
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 791
    Points : 3 058
    Points
    3 058
    Par défaut
    Lorsque tu fais un DIR, ce qui est retourné est le nom du fichier; pas son nom complet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
       sFolder = "X:\Comptes Utilisateurs\stagebeluc\Loïc\"
     
       sFile = Dir(sFolder & "*.txt")
     
       While sFile <> ""
          DoCmd.TransferText acImportDelim, Texte, "ipms_icxs_pves_epms_iens_ha", sFolder & "\" & sFile, True
          sFile = Dir()
       Wend
    Remarques :

    1. pourquoi ne pas faire l'importation dans la boucle où tu renommes le fichier ?

    2. Penses à donner des vrais noms à tes variables. X pour un nom de fichier; c'est pas vraiment terrible

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    ok cavo, merci de m'aider, donc mon code à légérement changer depuis tout à l'heure car en fet il y à une autre pers qui m'aide sur un autre forum.
    donc je te met mon nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    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
        Dim X As String
     
        If Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\*.ls0") > "" 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
            X = Dir("X:\Comptes Utilisateurs\stagebeluc\Loïc\*.txt") ' ou ce que tu veux exactement comme étendue
            While X <> ""
                X = "X:\Comptes Utilisateurs\stagebeluc\Loïc\" + X
                DoCmd.TransferText acImportDelim, Texte, "ipms_icxs_pves_epms_iens_ha", X, True
                X = Dir()
            Wend
         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
    maintenant le problème es le suivant : c'est que lorsque je clique sur mon bouton, j'ai 2 table qui sont cré à partir d'une seul c'est à dire qu'il y en à une qui se nomme : "ipms_icxs_pves_epms_iens_ha_ImportErrors" et la deuxiéme porte le nom : "ipms_icxs_pves_epms_iens_ha". cette dernière table correspond au différent champ mais dans une seule colonne!!
    voila, si tu peux m'aider ce serait gentil!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouvrir un fichier par vba
    Par must04 dans le forum Général VBA
    Réponses: 3
    Dernier message: 28/09/2010, 11h55
  2. [Débutant] Changer l'extension d'un fichier
    Par kariboubou dans le forum MATLAB
    Réponses: 9
    Dernier message: 11/07/2009, 11h26
  3. changer l'extension d'un fichier
    Par sam83 dans le forum Débuter
    Réponses: 13
    Dernier message: 10/02/2009, 09h32
  4. changer l'extension d'un fichier
    Par bidochon dans le forum Delphi
    Réponses: 2
    Dernier message: 05/06/2006, 21h50
  5. Changer l'extension de plusieurs fichiers
    Par Barbu15-95 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/04/2006, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo