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 :

Convertir fichier xlsm en xlsx et enregistrer une copie [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Liban

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Convertir fichier xlsm en xlsx et enregistrer une copie
    Bonjour,

    Je suis débutante en VBA. J'ai un fichier file.xlsm auquel l'utilisateur a accès. J'aimerai que lorsqu'il clique sur un bouton du fichier, il y ait une macro qui convertisse le fichier en .xlsx et l'enregistre dans le meme dossier initial avec le meme nom, à savoir file.xlsx.
    J'ai essayé de voir à quoi ressemblait le code avec l'enregistreur de macro mais le problème c'est que ca ne conserve pas le file.xlsm initial dans le dossier.

    Merci d'avance!

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, affecter un bouton à la procédure "SelFichier"

    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
    41
    42
    43
    44
    45
    Option Explicit
     
    Private Sub Renommer(ByVal sFichier As String)
    Dim Wkb As Workbook
    Dim FSO As Object, sExt As String, sOut As String
     
        Application.ScreenUpdating = False
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        sExt = FSO.GetExtensionName(sFichier)
        sOut = Left$(sFichier, Len(sFichier) - Len(sExt)) & "xlsx"
        Set FSO = Nothing
     
        Application.DisplayAlerts = False
     
        Set Wkb = Workbooks.Open(sFichier)
        With Wkb
            .SaveAs Filename:=sOut, FileFormat:=xlOpenXMLWorkbook
            .Close
        End With
        Set Wkb = Nothing
     
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
     
    Sub SelFichier()
    Dim FD As FileDialog
     
        ChDir ThisWorkbook.Path
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = "*.xlsm"
            .AllowMultiSelect = False
            .ButtonName = "Sélection fichier"
            .Title = "Sélectionner un fichier"
        End With
     
        If FD.Show = True Then
            DoEvents
            Renommer FD.SelectedItems(1)
        End If
     
        Set FD = Nothing
    End Sub

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par yaya.gaga Voir le message
    il y ait une macro qui convertisse le fichier en .xlsx et l'enregistre dans le meme dossier initial avec le meme nom, à savoir file.xlsx.
    Je ne vois pas trop la différence entre :
    - convertir le fichier en xlsx
    - enregistrer dans le même dossier initial avec le même nom, à savoir file.xlsx

    Si tu souhaites enregistrer ton fichier xlsm en xlsx, la ligne suivante devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path&"\"&ActiveWorkbook.Name, FileFormat:= xlOpenXMLWorkbook
    Le problème, c'est que ton fichier contient une macro (celle que tu souhaites utiliser pour faire cet enregistrement) et que les fichier au format xlsx ne peuvent pas contenir de macro.

    Je pense donc que mettre la macro (et le bouton) dans le fichier que tu veux enregistrer n'est pas une bonne idée.
    Il vaudrait mieux que tu mettes la macro dans un fichier xlam qui s'ouvre automatiquement avec Excel (regarde le gestionnaire de projet de ton éditeur VBA, tu devrais en voir un) et déclencher la macro depuis un bouton se trouvant dans ta barre d'outils à accès rapide.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Liban

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci à vous deux pour ces réponses rapides mais malheureusement ce n'est pas le résultat que j'attends.

    kiki29, j'ai essayé ton morceau de code et il me fait apparaitre une fenetre où l'utilisateur doit enregistrer dans un format imposé qui n'est pas xlsx. Ceci nécessite une action manuelle de la part de l'utilisateur alors que moi, je souhaiterai que par exemple pour un fichier tata.xlsm lorsqu'il clique sur le bouton, ceci enregistre en tata.xlsx mais garde le tata.xlsm.

    Menhir, j'ai également essayé ton code et ceci m'indique erreur de syntaxe :/

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par yaya.gaga Voir le message
    Menhir, j'ai également essayé ton code et ceci m'indique erreur de syntaxe :/
    Remplace les & par des +.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Liban

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Ouiii, ca fonctionne! Merci

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

Discussions similaires

  1. Convertir fichier CSV en XLSX
    Par neogunnm dans le forum VBScript
    Réponses: 3
    Dernier message: 10/01/2016, 08h34
  2. Enregistrer une copie d'un fichier dans le même répertoire
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/08/2013, 23h05
  3. Réponses: 4
    Dernier message: 03/07/2008, 16h46
  4. Enregistrer une copie d'un workbook
    Par PiliSql dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2008, 13h44
  5. Réponses: 8
    Dernier message: 30/10/2007, 10h20

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