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 :

vba excel : macro qui crée un nouveau classeur et qui permet de sauver quelques feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : septembre 2017
    Messages : 68
    Points : 37
    Points
    37
    Par défaut vba excel : macro qui crée un nouveau classeur et qui permet de sauver quelques feuilles
    Bonjour,

    J'ai réalisé un mega programme (comme toujours ). Le problème est que je veux que ce fichier reste identique à l'originale (pas question de sauver quoi que ce soit). Alors l'idée est de créer une macro (au travers d'un bouton) qui permet à l’utilisateur de sauver son travail. En gros, c'est une macro qui doit créer un nouveau classeur, avec 3 feuilles respectivement nommées Consommation, Resume et Comparaison, et doit prendre dans les feuilles qui portent les mêmes noms et les calquer respectivement dans les feuilles du nouveau classeur. L'utilisateur aura la liberté de l'enregistré où il vaudra.

    J'ai trouvé un code, mais qui ne repond pas vraiment à ce que je vais :

    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
     
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
     
        'On créer l'objet Excel
        Set xlApp = CreateObject("Excel.Application")
        'On défini le nombre d'onglets (ici 5)
        xlApp.SheetsInNewWorkbook = 5
        'On ajoute un classeur
        Set xlBook = xlApp.Workbooks.Add
        'On donne un nom au classeur
        xlBook.SaveAs ("Mon Classeur.xls")
        'On rend le classeur visible
        xlApp.Visible = True
        'On créer l'objet onglet dans le nouveau classeur créé
        Set xlSheet = xlBook.Worksheets(1)
        'On affecte un nom aux l'onglets
        xlSheet.Name = "Janvier"
        'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
        Set xlSheet = Nothing
        '
        '
        Set xlSheet = xlBook.Worksheets(2)
        xlSheet.Name = "Février"
        '
        '....... On donne un nom à chaque onglets
        '
        '
        'On remet la propriété de l'application à 3 (par défaut)
        xlApp.SheetsInNewWorkbook = 3
        'On ferme l'application
        xlApp.Quit
    Quelqu'un sait m'aider?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur VBA
    Inscrit en
    avril 2017
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : avril 2017
    Messages : 101
    Points : 164
    Points
    164
    Par défaut
    aider oui, faire à votre place non.



    "En gros, c'est une macro qui doit créer un nouveau classeur, avec 3 feuilles respectivement nommées Consommation, Resume et Comparaison, et doit prendre dans les feuilles qui portent les mêmes noms et les calquer respectivement dans les feuilles du nouveau classeur. L'utilisateur aura la liberté de l'enregistré où il vaudra."

    Cela se découpe en
    1/ créer un nouveau classeur
    2/ avec 3 feuilles respectivement nommées Consommation, Resume et Comparaison
    3/ doit prendre dans les feuilles qui portent les mêmes noms et les calquer respectivement dans les feuilles du nouveau classeur.
    4/ L'utilisateur aura la liberté de l'enregistré où il vaudra.

    Donc le 1/
    Quel code pour faire le 1 ?


    pour anticiper sur les 2 et 3, dans le nouveau classeur il ne doit y avoir que les valeurs ? les formules doivent être conservées ? si les valeurs du premier classeur changent, vous souhaitez que le second soit mis à jour ?
    Je ne teste quasi jamais le code que je propose. il s'agit juste d'indication sur comment je m'y prendrais, comment faire, des lignes d'intention.
    Il y a donc souvent des erreurs, le déboggage existe pour cela.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    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 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Citation Envoyé par Vbajon Voir le message
    Le problème est que je veux que ce fichier reste identique à l'originale (pas question de sauver quoi que ce soit). Alors l'idée est de créer une macro (au travers d'un bouton) qui permet à l’utilisateur de sauver son travail. En gros, c'est une macro qui doit créer un nouveau classeur, avec 3 feuilles respectivement nommées Consommation, Resume et Comparaison, et doit prendre dans les feuilles qui portent les mêmes noms et les calquer respectivement dans les feuilles du nouveau classeur. L'utilisateur aura la liberté de l'enregistré où il vaudra.
    Si je comprends bien, tu veux juste sauvegarder le classeur en cours avec un autre nom, c'est ça ?

    Dans ce cas, il serait bien plus simple d'utiliser la méthode SaveCopyAs.
    https://msdn.microsoft.com/fr-fr/vba...s-method-excel
    Pour demander le nom de fichier à l'utilisateur, tu as le choix entre un simple InputBox ou un joli GetSaveAsFilename ou même de piocher dans les Dialogs.
    https://msdn.microsoft.com/library/d...ice.15%29.aspx
    https://msdn.microsoft.com/library/2...ice.15%29.aspx
    https://msdn.microsoft.com/library/0...ice.15%29.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set xlApp = CreateObject("Excel.Application")
    Passer par un CreateObject pour créer un nouveau classeur dans Excel alors qu'on est dans Excel, c'est un peu comme opérer des amygdales en passant par l'anus.
    Un simple WorkBooks.Add est bien plus simple.
    Cela dit, à mon avis, créer un classeur vide n'est pas le bon moyen pour atteindre le but fixé (voir début du message).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 15 379
    Points : 12 509
    Points
    12 509
    Billets dans le blog
    8
    Par défaut re
    bonjour
    heu... sérieux???
    je repete donc ce que j'ai compris
    tu a 3 sheets(Consommation,Resume,Comparaison) que tu veux sauver dans un nouveau classeur a fin de ne pas sauver l'initial pour le garder intacte
    rien de plus simple
    mais avant tout sache que dans ton app excel ,menu développer tu a un bouton pour enregistrer une macro qui enregistre tout ce que tu fait et te donne un code quasi tout fait sur un plateau

    et que tu peux arranger a ta sauce très facilement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Dim chemin$, newname$
        chemin = "C:\Users\polux\Desktop\"
        newname = "classeurcopié.xls"
        Sheets(Array("Comparaison", "Consommation", "Resume")).Copy
        ActiveWorkbook.SaveAs Filename:=chemin & newname, _
                              FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
                              ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWindow.Close
    End Sub
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Une macro qui crée un nouveau classeur.
    Par stradic4000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/08/2017, 12h59
  2. [XL-2013] Compiler un classeur qui crée un nouveau classeur en .exe
    Par Maair dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/02/2015, 13h09
  3. [VBA Excel] macro création de feuille
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/06/2006, 12h13
  4. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 16h42
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 14h09

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