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 :

Sauvegarde en XLSB sans Macro [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut Sauvegarde en XLSB sans Macro
    Bonjour,

    Tous le monde connait les avantages du format "XLSB" qui permet de compresser au mieux les données que le XLSM...

    Simplement je souhaiterai enregistrer un classeur en XLSB SANS MACRO, comment m'y prendre ?

    Pour le moment j'utilise ceci pour enregistrer en XLSX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlOpenXMLWorkbook
    Et moi j'aimerai enregistrer en XLSB SANS MACRO.

    CODE POUR ENREGISTRER EN XLSB AVEC MACRO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlExcel12
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=50
    Merci de votre aide.

    Cdlt.

    GK

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Enregistrer d'abord en .xlsx pour faire sauter les codes puis en .xlsb et enfin supprimer le .xlsx …

    Voilà, voilà !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    Et si j'exportai les feuilles dans un autre classeur, ça ne serait pas plus simple que de faire cette manipulation ? (le nouveau classeur ne devrait pas contenir les codes VBA je pense ?)

  4. #4
    Expert confirmé
    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
    Par défaut
    Salut, la plus alambiquée ( à titre de curiosité ) : Supprimer les macros par une macro

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, la plus alambiquée ( à titre de curiosité ) : Supprimer les macros par une macro
    J'ai essayé avec ce code pour supprimer mon module avant d'enregistrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub supprimerUnModule()
        With ThisWorkbook.VBProject.VBComponents
            .Remove .Item("Module2")
        End With
    End Sub
    Le problème c'est que j'effectue la suppression avant d'enregistrer ... donc cela ne fonctionne pas...

    Je vais essayé d'enregistrer en xlsx puis ensuite en xslb...

    Merci.

    GK

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Enregistrement en xlsx
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlOpenXMLWorkbook
     
    'Enregistrement en xlsb
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlExcel12
    Mais même avec ça , cela ne fonctionne pas...
    J'ai toujours mon module 1 dans mon XLSB

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Ghost0000 Voir le message
    Bonjour,

    Tous le monde connait les avantages du format "XLSB" qui permet de compresser au mieux les données que le XLSM...
    Pas si sûr que cela que le gain soit énorme. Le format xlsx/xslm est déjà un fichier zip. Et puis les macros sont déjà sous un format binaire dans le zip déguisé. Il faudrait une quantité astronomique de classeurs pour que le gain éventuel soit significatif.

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Pas si sûr que cela que le gain soit énorme. Le format xlsx/xslm est déjà un fichier zip. Et puis les macros sont déjà sous un format binaire dans le zip déguisé. Il faudrait une quantité astronomique de classeurs pour que le gain éventuel soit significatif.
    Bonjour,

    je confirme le contraire, le gain peut être conséquent sur un seul classeur.
    le fait de ne plus stocker les données sous format xml permet un gain proportionnel à la quantité de données stockées.

    dernier exemple en date : on me balance un fichier en indiquant "il marche plus".
    le fichier contenait une feuille avec un ListObject de 750 000 lignes de données (sur 25 colonnes parfois)
    taille du fichier : 50Mo !!

    je l'ai passé en xlsb, on est tombé à 8Mo, le fichier ne plante plus (même bien sûr, il est lent) ... et je ne désespère pas qu'ils comprennent que c'est un pansement temporaire... un tel fichier ne devrait jamais exister ainsi


    Jp a fait un bon tuto sur les format de fichiers, et notamment un comparatif du poids en fonction du format
    http://jpcheck.developpez.com/tutori...s-xlsb/#LIII-A

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    je confirme également, mon fichier de 11Mo se transforme en fichier de 5.7Mo ... donc c'est un avantage, surtout que mon fichier doit être envoyé par mail au final...

    Une idée de solution pour mon problème ?

    Cdlt.

    GK

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    J'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    '***ETAPE 1***
    'Enregistrement en XLSX TEMP
    ThisWorkbook.SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlOpenXMLWorkbook
     
    '***ETAPE 2***
    'Enregistrement en XLSB
    Workbooks(INI_DestFichier & ExcelFile_Name & ".xlsx").SaveAs Filename:=INI_DestFichier & ExcelFile_Name, FileFormat:=xlExcel12
     
    '***ETAPE 3***
    'Suppression du fichier XLSX TEMP
    Kill INI_DestFichier & ExcelFile_Name & ".xlsx"
    ça ne marche pas ... une idée ?

    Merci d'avance.

    Gk.

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    C'est juste une question de logique !

    • Enregistrer d'abord une copie du classeur via la méthode SaveCopyAs en modifiant le nom.
    • Ouvrir la copie puis la sauvegarder en .xlsx via SaveAs.
    • Sauvegarder ensuite en .xlsb toujours via SaveAs.
    • Fermer puis supprimer du disque tous les classeurs intermédiaires …

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

Discussions similaires

  1. sauvegarder sans macro
    Par dalo02 dans le forum VBA Word
    Réponses: 5
    Dernier message: 04/03/2014, 22h33
  2. [XL-2010] Sauvegarde d'un fichier sans macro
    Par illight dans le forum Conception
    Réponses: 6
    Dernier message: 02/12/2013, 22h13
  3. [PPT-2007] Sauvegarder une presentation sans les macros
    Par Akxn0008 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 08/07/2009, 18h06
  4. Fermer sans sauvegarde un fichier par macro
    Par blobnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2008, 16h59
  5. Enregistrer fichier .xls sans macro ni code vb
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/11/2005, 17h48

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