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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 37
    Points : 27
    Points
    27

    Par défaut Exporter/importer Code VBA cointenu dans les feuilles

    Bonjour,

    S'il est possible avec Excel 2016 d'exporter le contenu d'un classeur sans ses macros en le sauvegardant avec l'extension .xlsx,
    S'il est possible d'exporter facilement des modules pour les réimporter si besoin,
    Je bute sur l’exportation du code VBA qui se trouve dans les feuilles elles-mêmes ou dans le classeur. Par exemple les taches à effectuer en cas de clic sur un bouton.

    Ma question est la suivante : Est-il possible de sauvegarder les lignes de code des feuilles ou du classeur, indépendamment du contenu et du format des feuilles, sans avoir à faire un copier coller manuel de ces lignes dans l'éditeur VBA puis une sauvegarde dans un fichier texte ?

    D'avance merci à ceux qui pourront m'éclairer.

  2. #2
    Membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    mars 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : mars 2018
    Messages : 41
    Points : 62
    Points
    62

    Par défaut

    Bonjour,

    Il te suffit de cliquer droit sur ton module et de l'exporter. Ton fichier portera l'extension BAS et tu pourras l'importer dans d'autres classeurs.

    Nom : export.jpg
Affichages : 43
Taille : 35,6 Ko

    Bien à toi,

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    11 817
    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 : 11 817
    Points : 23 892
    Points
    23 892

    Par défaut

    Citation Envoyé par Papy33 Voir le message
    Ma question est la suivante : Est-il possible de sauvegarder les lignes de code des feuilles ou du classeur, indépendamment du contenu et du format des feuilles, sans avoir à faire un copier coller manuel de ces lignes dans l'éditeur VBA puis une sauvegarde dans un fichier texte ?
    Tu vides le contenu des feuilles et tu sauvegardes le fichier.

    Comme il est peu probable que le but final soit de conserver ces macros, peux-tu préciser de quelle façon tu veux les utiliser ensuite ?
    Ca permettrait de cogiter plus concrètement sur une solution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 37
    Points : 27
    Points
    27

    Par défaut

    Merci pour vos réponses,

    Guy, je n'ai aucun problème pour sauvegarder les macros et les fonctions des modules en .bas. Ce que je recherche, c'est sauvegarder également le code des objets feuilles et de l'objet Thisworkbook.

    Menhir, Si je cherche à faire ça c'est pour avoir un outil de plus dans ma panoplie pour tester un classeur et sauvegarder l'état zéro du contenu tout en ayant sauvegardé le dernier état de mon code VBA, modules et code des objets, ceci pour plus de facilités dans ma programmation.
    Si je sauve la classeur après avoir testé mes macros, je sauvegarde bien la dernière version du code mais le contenu des feuilles n'est plus celui du départ.
    Si je sauve au format xlsx, je garde le contenu des feuilles mais pas le code vba.
    L'idéal serait que je puisse sauvegarder le code et le réimporter dans le classeur en .xlsx à sauvegarder ensuite en xlsm
    Bien entendu je peux recopier un à un chaque contenu des feuilles d'origine dans celles du classeur de travail mais comme ce classeur en comporte 19 avec des données saisies à la main, je cherche un outil plus rapide.

    Si ça n'existe pas, j'écrirais une macro qui fera la copie, mais avant je voulais savoir si ça n'existait pas déjà.

    Voilà à peu près résumé.

    Bien à vous.

  5. #5
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 310
    Points : 35 567
    Points
    35 567
    Billets dans le blog
    40

    Par défaut

    Salut.

    La solution donnée par Guy fonctionne également pour les modules de feuilles, de classeur ou de userform. Par contre, l'import des fichiers cls issu d'un module de classe pose problème. Je ne vois pas d'autre solution qu'une macro.

    Cela étant dit, je me pose la question de l'utilité de pareille manipulation car je ne comprends pas ce que tu souhaites réalisé. Je n'ai jamais eu devoir exporter du code de modules de feuilles ou de classeur, car des solutions existent pour éviter cela (modèle xltm, fichier xlam, ...). Je suis curieux que tu en dises plus sur le contexte dans lequel tu travailles.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    mars 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : mars 2018
    Messages : 41
    Points : 62
    Points
    62

    Par défaut

    Citation Envoyé par Papy33 Voir le message
    Merci pour vos réponses,

    Guy, je n'ai aucun problème pour sauvegarder les macros et les fonctions des modules en .bas. Ce que je recherche, c'est sauvegarder également le code des objets feuilles et de l'objet Thisworkbook.
    Alors, j'ai mal compris ton message. Désolé pour l'inutilité de mon post

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 37
    Points : 27
    Points
    27

    Par défaut

    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Cela étant dit, je me pose la question de l'utilité de pareille manipulation car je ne comprends pas ce que tu souhaites réalisé.
    Ça m'éloigne un peu de ma question initiale et ma réponse n'intéressera sans doute pas grand monde mais je vais essayer de résumer ce sur quoi je travaille.

    Je suis en train d'organiser un échéancier pour le cabinet d'expertise comptable de ma compagne et ça comprend un certain nombre de fonctionnalités.

    Il y a d'abord une feuille comprenant le tableau des clients avec divers paramètres concernant chacun et ayant une incidence sur les opérations comptables à effectuer.
    Il y a ensuite un tableau des échéances sur une autre feuille, ce tableau reprend la liste nominative et quelques données de la page précédente ainsi qu'un certain nombre d'échéances personnalisées qui ne peuvent pas être calculées automatiquement. Par exemple, untel qui est en SARL a des échéances mensuelles de TVA au 21 du mois alors qu''un autre aura des échéances trimestrielles au 16 octobre, janvier avril et juillet, telle entreprise doit régler l'impôt sur les sociétés à telle date, etc.

    Ensuite il y a 14 feuilles mensuelles (décembre an-1, + janvier à décembre an, + janvier an+1 avec les échéances du mois pour chaque entreprise.
    Là ce sont uniquement des formules Excel SI(ET... avec des références aux dates et parfois à rallonge, qui sont employées pour indiquer pour chaque client les dates d'échéance en fonction des paramètres fixés dans les pages précédentes.
    Et par macro, je coche les opérations réalisées et je grise la date.
    A noter que je n'utilise pas les contrôles "case à cocher" qui sont trop lents quand il sont plusieurs dizaines par page. Je simule les cases cochée carrées par le format des cellules, avec des bordures et des diagonales épaisses.
    Il y a ensuite un autre tableau appelé planning s'activant automatiquement à l'ouverture du classeur et affichant en fonction de la date du jour, l'état de toutes les échéances depuis une semaine en arrière et pour 3 semaines à venir.
    La couleur des échéances varie en fonction du délai qui reste pour les réaliser.
    Ce planning interagit avec les feuilles mensuelles concernées, une opération cochée sur le planning l'est sur la feuille mensuelle correspondante et vice versa. Là, comme il peut y avoir plusieurs échéances à la même date pour un même client, j'utilise un objet Userform qui s'ouvre pour cocher les opérations quand je clique sur une case contenant une ou plusieurs échéances.

    Si le classeur est un classeur d'une année précédente, donc ouvert pour consultation, toutes les saisies sont interdites, le planning reste caché et ses macros ne sont pas appelées.

    Jusque là ça parait simple, mais pour ne pas avoir de plantage, le tri alphabétique ou index se fait par macro, l'ajout ou la suppression de de sociétés aussi, et un certain nombre d'autres fonctionnalités avec divers niveaux de protection des feuilles selon la personne (responsable ou secrétaire) qui y accède.
    Une des fonctions du tableau est le passage d'une année à la suivante car il faut garder les opérations cochées sur les 2 derniers mois (décembre et de janvier) et les copier en début de tableau (décembre an-1 et janvier an) puis réinitialiser et vider le suivi des opérations de toutes les autres feuilles. Il convient alors de proposer la sauvegarde du classeur sous un nouveau nom avec l'année en début de nom.
    Rien de bien compliqué dans tout ça.

    Et comme tout programme où il y a pas mal de lignes de code, il convient pour moi de tester dans toutes les configurations pour apporter des solutions à tous les problèmes qui peuvent apparaitre.

    Mon classeur est maintenant presque finalisé, il a déjà ses fonctions essentielles, je ne trouve plus trop d'erreurs à corriger ou d'améliorations à apporter mais c'est déjà un peu une usine à gaz...

    Et c'est uniquement pour ne pas me planter et corrompre les données saisies que je souhaitais en cas de manip malheureuse corrompant les données, pouvoir repartir à partir des données d'origine tout en conservant mes dernières modifs de code.
    J'ai fait sans ça jusqu'ici, mais je me disais que si une telle possibilité existait, ça pourrait quand même m'être utile.

    Ma question ne portait pas sur la programmation VBA mais sur l'interface et sur la possibilité ou non de sauvegarder à part, le code propre à chaque feuille (du type if commandbutton1_click() then.... ou Private Sub Worksheet_Change : Call autre_macro....

    Voilà, je pense avoir tant bien que mal résumé... et j'espère avoir satisfait ta curiosité.

  8. #8
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    janvier 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2017
    Messages : 348
    Points : 213
    Points
    213

    Par défaut

    Bonjour a vous tous,

    Peut-être ma réponse est simpliste ou ne répond pas au besoin, ce que je ferais ce serais de sauvegarder le fichier en xltm i.e. modele contenant les macros. Le fichier ouvert est temporaire et permet d'exécuté/gardé les macros et lorsqu'il est sauvegardé il y a 2 possibilité 1 si il est sauvegardé en xlsx, il ne garde pas les macro apres sa réouverture et si il est sauvegarde en xlsm, il conserve les macros apres la réouverture.


    Je ne sais pas si cela peux vous aidez, cela vous aiderais a eviter de jouer avec les BAS

  9. #9
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 310
    Points : 35 567
    Points
    35 567
    Billets dans le blog
    40

    Par défaut

    Citation Envoyé par jpvba Voir le message
    [...]
    Ca corrobore et complète ce que je disais dans mon précédent message...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 37
    Points : 27
    Points
    27

    Par défaut

    Je vous remercie pour vos réponses.
    En fait je me suis pris la tête pour pas grand chose puisque les fichiers de module de classe en .cls contiennent bien le code des feuilles.
    Il est donc possible de sauvegarder les modules en . bas (ça je le savais) mais aussi le code des feuilles puisqu'il est contenu dans les sauvegardes de classe .cls
    Si j'avais été plus curieux je n'aurais pas lancé cette discussion.

    Quant à mes sauvegardes, je continuerai à faire comme avant, à savoir faire bien attention à ne pas sauvegarder des données modifiées quand j’enregistrerai le classeur après modification d'une macro.
    Et bien entendu, conserver les données en .xlsx pour pouvoir les récupérer manuellement ou par une macro ad hoc en cas de manip malheureuse.
    Bon week-end à vous.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/02/2018, 10h36
  2. Possibilité de navigation dans les feuilles masquées par code VBA
    Par josharouna dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2017, 15h54
  3. Réponses: 1
    Dernier message: 28/10/2014, 21h48
  4. Exportation & Importation code vba
    Par ninouchfis dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/10/2013, 19h06
  5. Sauver classeur "avec" codes des boutons écrits dans les feuilles
    Par misterben dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/04/2011, 14h45

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