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

Macros et VBA Excel Discussion :

[E-07] modifier extension


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut [E-07] modifier extension
    Bonjour tt le monde
    j'ouvre successivement les fichiers d'un repertoire en utilisant cette méthode qui fonctionne tres bien avec des fichiers excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub test()
    Dim chemin As String, FirsWk As String
        Application.Dialogs(xlDialogOpen).Show
    '''ici démarre l'assistant
            chemin = ActiveWorkbook.Path & "\"
        NomFich = Dir(chemin & "\*.xls", vbNormal)
        Do While NomFich <> ""    ' Commence la boucle.
                Workbooks.Open chemin & NomFich
    MsgBox ActiveWorkbook.Name ' code
            ActiveWorkbook.Close True
            NomFich = Dir
        Loop
    End Sub
    mais les fichiers que je cherche a ouvrir , meme s'il ont l'extention .xls, ne sont pas du .xls. ils ont cette extention en sortant du logiciel SAP. donc, quand je les ouvre, cela déclenche l'assistant d'importation de texte. je souhaiterais donc , avant de les ouvrir, transformer leur extension en .csv qui ne déclenche pas cet assistant.
    je ne sais pas comment faire et je ne trouve rien par la recherche. quelqu'un peut m'aider ? merci d'avance

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Pas sûr d'avoir vraiment compris ce que tu cherches à faire...
    S'il ne s'agit pour toi que de "rebaptiser" (sans modification de sa structure) un nom de fichier en transformant uniquement son extension :
    - cherche la position du dernier signe . (le point) . InstrRev te le permet
    - reconstitue en concaténant la partie du nom se trouvant jusqu'à cette position (utilise Left) avec le nom que tu souhaite ajouter pour l'extension (par exemple, donc "csv")...
    Mais ceci, bien évidemment, ne fera que "rebaptiser"
    donne ce nouveau nom à ton fichier (utilise Name)

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonjour,

    pourquoi ne pas utiliser OpenText ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Workbooks.OpenText Filename:=chemin & NomFich, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    merci pour votre célérité
    je n'arrive pas a utiliser opentext dans le cadre de ma boucle puisque l'assistant se déclenche avec la boite
    Application.Dialogs(xlDialogOpen).Show
    et je tiens a garder cette boite pour permettre de pointer sur le bon repertoire.
    pour ce qui est d'utiliser name, cela ne doit modifier le nom du fichier qu'au niveau du code, or il faudrait que je modifie son nom sur le disque avant de faire ma boucle d'ouverture, c'est a dire faire une premiere boucle qui modifie les noms de fichier du repertoire . a la limite, je pense que je saurais faire la boucle mais je n'ai aucune idée de comment modifier le nom d'un fichier sur le disque

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Et pourquoi donc ...? remplace juste ta ligne Workbooks.open par workbooks.openText..

    ton code :
    Citation Envoyé par alsimbad Voir le message
    ...
    Application.Dialogs(xlDialogOpen).Show
    te permet seulement de récupérer le nom de fichier à ouvrir..!

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Si tu veux changer l'extension de tous les fichiers .xls qui se trouvent dans le même répertoire que ton application, avec la bibliothèque IWSH (Windows script host object model), tu peux faire
    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
    Sub subChangeExtensXLSEnCSV()
    Dim fso As IWshRuntimeLibrary.FileSystemObject
    Dim fld As IWshRuntimeLibrary.Folder
    Dim fle As IWshRuntimeLibrary.File
     
    Set fso = New IWshRuntimeLibrary.FileSystemObject
    Set fld = fso.GetFolder(Application.ThisWorkbook.Path)
     
    For Each fle In fld.Files
        If fle.Name <> Application.ThisWorkbook.Name Then fso.MoveFile fle.Path, Replace(fle.Path, ".xls", ".csv")
    Next fle
     
    Set fle = Nothing
    Set fld = Nothing
    Set fso = Nothing
     
    End Sub
    Pour l'idée. A adapter à ton besoin.

    Bon courage,

    PGZ

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par alsimbad Voir le message
    Bonjour tt le monde
    mais les fichiers que je cherche a ouvrir , meme s'il ont l'extention .xls, ne sont pas du .xls. ils ont cette extention en sortant du logiciel SAP. donc, quand je les ouvre, cela déclenche l'assistant d'importation de texte. je souhaiterais donc , avant de les ouvrir, transformer leur extension en .csv qui ne déclenche pas cet assistant.
    je ne sais pas comment faire et je ne trouve rien par la recherche. quelqu'un peut m'aider ? merci d'avance
    Idée alternative mais je n'ai pas testé:

    1) Tu crées un repertoire de travail (pas nécessaire mais plus propre).
    2) Tu scannes ton répertoire après les fichiers XLS. DIR
    3) Pour Chaque fichier trouvé tu utilises FileCopy pour le copier avec l'extension .CSV dans ton répertoire de travail
    4) Tu traites ensuite ton répertoire de travail ou tes fichiers sont CSV
    5) Tu conserves ou pas tes .CSV et .XLS selon tes besoins.

    Ok ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ça y est, je pense que j'ai trouvé un savant mélange entre vos reflexions, celles d'ouskel'nor et un tuto de thierry Aim
    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
     
    Public Function ExtractFilePath(ByVal sFullPath As String) As String
    If Right(sFullPath, 1) = "\" Then
        ExtractFilePath = sFullPath
    Else
        ExtractFilePath = Left(sFullPath, InStrRev(sFullPath, "\"))
    End If
    End Function
     
    Sub test()
    Dim chemin As String, FirsWk As String
        chemin = ExtractFilePath(Application.GetOpenFilename)
        NomFich = Dir(chemin & "\*.xls", vbNormal)
        Do While NomFich <> ""    ' Commence la boucle.
                Workbooks.Opentext chemin & NomFich
    MsgBox ActiveWorkbook.Name ' code
            ActiveWorkbook.Close True
            NomFich = Dir
        Loop
    End Sub
    en reprenant getopenfilename, je ne prend que l'adresse du fichier et extractfilepath me done le repertoire. de la sorte opentext m'ouvre les fichier sans déclencher l'assistant.
    merci a tous

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

Discussions similaires

  1. modifier extension d'un fichier en asp
    Par midosd dans le forum ASP
    Réponses: 1
    Dernier message: 06/06/2009, 18h00
  2. Modifier extension fichier
    Par kheduch dans le forum Unix
    Réponses: 1
    Dernier message: 24/02/2009, 09h41
  3. Modifier extension, mais garder icone
    Par Invité dans le forum Windows XP
    Réponses: 3
    Dernier message: 25/11/2008, 13h57
  4. Modifier extension
    Par frmaniako dans le forum Linux
    Réponses: 5
    Dernier message: 15/03/2004, 03h41

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