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 :

Copie d'un classeur .xlsm dans un nouveau .xls sans le code VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster, Concepteur Base de données, Développeur SQL
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster, Concepteur Base de données, Développeur SQL

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Par défaut Copie d'un classeur .xlsm dans un nouveau .xls sans le code VBA
    Bonsoir,
    Je cherche à créer un classeur Excel-2007 "C.xls" sans code VBA (avec une extension .xls), à partir d'un classeur "A.xlsm" (dont l'extension est .xlsm) contenant du code VBA.
    Le code du classeur A.xlsm, en pièce jointe, copie le classeur A.xlsm sur le classeur B.xlsm, supprime le code VBA dans le classeur B.xlsm et copie le classeur B sur le classeur C.xls.
    Le passage par le classeur B évite de supprimer le code VBA du classeur A qui est en train de s'exécuter et que je veux conserver intact (ce qui empêche d'utiliser ActiveWorkbook.SaveAs).
    Mais à l'ouverture du classeur C.xls le message suivant s'affiche "le format du fichier que vous tentez d'ouvrir est différent de celui spécifié par l'extension de fichier."
    Si je clique sur "oui" le classeur s'ouvre normalement et le code VBA est bien supprimé, ainsi que le module standard.
    Comment coder pour ne pas avoir ce message ?
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Pourquoi ne pas enregistrer le classeur a.xlsm en un classeur sans macro b.xlsx avant d'enregistrer celui-ci en c.xls ?

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster, Concepteur Base de données, Développeur SQL
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster, Concepteur Base de données, Développeur SQL

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Par défaut Test classeur B.xlsx
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Pourquoi ne pas enregistrer le classeur a.xlsm en un classeur sans macro b.xlsx avant d'enregistrer celui-ci en c.xls ?
    Merci c'est une idée.
    Pourquoi pas !
    Le test n'est pas concluant, il y a un message d'erreur à l'ouverture du classeur B.xlsx, voir en annexe : Excel_sans_VBA2 et VBA3


    "La plupart des gens regardent les choses comme elles sont et se demandent "pourquoi ?" Moi, je regarde les choses comme elles pourraient être et je me demande "pourquoi pas?" "
    (J-F. Kennedy)
    Images attachées Images attachées   

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Il ne faut pas faire un "savecopy" parce que le type du classeur créé est le même que celui sauvegardé, donc xlsm. Il faut faire un "saveas" en utilisant "xlOpenXMLWorkbook" dans le paramètre "fileformat".

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster, Concepteur Base de données, Développeur SQL
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster, Concepteur Base de données, Développeur SQL

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Par défaut aveAs à la place de SaveCopyAs
    Message d'erreur sur le SaveAs, voir en annexe.
    De plus, si l'extension du fichier B est xlsm ou xls, la conséquence du SaveAs est que le fichier actif n'est plus le classeur A mais le classeur B (que l'on vient de sauver) et ainsi la suppression du code VBA se fait sur le fichier B (actif). On se tire une balle dans le pied puisque le code VBA (en exécution) est supprimé. On ne peut pas utiliser le SaveAs autrement qu'avec ActiveWorbook (qui contient le code en exécution).
    Images attachées Images attachées  

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Relis mon message, ce que je t'ai dit à propos du fileformat.

    De plus, si l'extension du fichier B est xlsm ou xls, la conséquence du SaveAs est que le fichier actif n'est plus le classeur A mais le classeur B (que l'on vient de sauver) et ainsi la suppression du code VBA se fait sur le fichier B (actif). On se tire une balle dans le pied puisque le code VBA (en exécution) est supprimé. On ne peut pas utiliser le SaveAs autrement qu'avec ActiveWorbook (qui contient le code en exécution).
    Fichier d'origine a.xlsm
    => savecopyas b.xlsm
    =>open b.xlsm
    => saveas c.xlsx
    => save as d.xls

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

Discussions similaires

  1. [XL-2010] Lien hypertexte dans un mail envoyé automatiquement par code vba
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/11/2012, 17h11
  2. Réponses: 1
    Dernier message: 13/04/2011, 20h47
  3. Copies de feuilles dans un nouveau classeur
    Par malkkom dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2007, 10h45
  4. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38
  5. Réponses: 2
    Dernier message: 15/05/2006, 08h46

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