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-E] Enregistrer la feuille d'un template dans un nouveau doc


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut [VBA-E] Enregistrer la feuille d'un template dans un nouveau doc
    Hello,

    Tout est dans le titre

    J'ai un document Excel nommé "modele.xlt". c'est un "template" contenant X feuilles, chacune correspondant à un modèle de document utilisable.

    Selon certaines conditions, je dois choisir un parmi ces modèles et y injecter des données. J'aimerai ensuite pouvoir "extraire" cette feuille "modifiée" et l'enregistrer dans un nouveau classeur...

    Actuellement, j'utilise (je bosse sous Access, c'est pour ça le "Excel.") :


    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
     
        Dim wb As Excel.Workbook
     
        Dim path As String
        path = "E:\testVBA\"
     
        Set wb = Excel.Workbooks.Open _
            (Filename:=path + "modele.xlt", UpdateLinks:=False, AddToMRU:=False, Editable:=True)
     
        'edition du contenu
        'edition du contenu
        'edition du contenu
        '...
     
        wb.Close True, path + "generated.xls"
    Mais là, il m'enregistre tout le document, en incluant toutes les feuilles du classeur. J'aimerai ne récupérer que la feuille que j'ai traitée...

    Est-ce que vous avez une tite idée ? D'avance merci pour vos suggestions

  2. #2
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    peut être comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.Move Before:=Sheets(1) 'pour mettre le document en position 1
      For t = 2 To Sheets.Count  'supprimer les autres feuilles a partir de la 2
      Sheets(t).Delete
      Next
    il nereste plus qu'à enregistrer
    Cordialement
    Daranc

  3. #3
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut
    Ah ben tiens... j'avais pas du tout pensé à ça... en fait c'est vrai, j'ai pas besoin d'exporter ma feuille dans un autre classeur... je supprime tout ce dont je n'ai pas besoin avant l'enregistrement et c'est bon... ça c'est vraiment pas bête dis donc

    Merci beaucoup, je teste dès que possible.

  4. #4
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut
    Hello,

    Alors j'ai testé tout ça, mais malheureusement, je n'arrive pas à supprimer les feuilles...

    Le déplacement en première positon est ok, mais la suppression ne fonctionne pas... j'ai essayé différentes manières et différentes syntaxes, mais rien n'y fait, ça ne veut pas...

    J'ai tenté de supprimer via les indexes numériques, et également via les indexes alphanumériques (nom de la feuille) mais ça ne change rien...

    J'ai tenté de passer par wb.Sheets(index), wb.Worksheets(index), de récupérer directement un objet Sheet et de lui appliquer sa méthode Delete, mais non...

    Est-ce que ça pourrait venir du fait que je travaille avec un document xlt par hasard ?? je ne comprend pas

    D'avance merci pour une quelconque piste

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour


    Alors j'ai testé tout ça, mais malheureusement, je n'arrive pas à supprimer les feuilles...

    Le déplacement en première positon est ok, mais la suppression ne fonctionne pas... j'ai essayé différentes manières et différentes syntaxes, mais rien n'y fait, ça ne veut pas...
    Il ne se passe rien?
    Tu as un message d'erreur?
    Si oui lequel?
    Peux tu montrer ta procédure?



    Sinon tu peux tester cette autre possiblité:


    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
        Dim Wb As Excel.Workbook, WbCopie As Excel.Workbook
        Dim Path As String, NomFeuille As String
     
        Path = "C:\"
        NomFeuille = "Feuil2" 'Nom de la feuille à extraire
     
        'Excel.Application.Visible = True
        Set Wb = Excel.Workbooks.Open _
            (FileName:=Path + "modele.xlt", UpdateLinks:=False, _
            AddToMRU:=False, Editable:=True)
     
        'Copie de la feuille cible dans un nouveau classeur
        Wb.Worksheets(NomFeuille).Copy
        Set WbCopie = Excel.ActiveWorkbook
     
        '
        'écriture dans le nouveau classeur
        WbCopie.Worksheets(NomFeuille).Range("A1") = "Essai"
        '
        '
     
        'Sauvegarde du nouveau classeur
        WbCopie.SaveAs Path & "generated.xls"
        'Puis fermeture
        WbCopie.Close True
     
        'Fermeture du modèle
        Wb.Close False
     
        'Fermeture application Excel
        Excel.Application.Quit


    michel

Discussions similaires

  1. enregistrer certaines feuilles d'un fichier dans un nouveau
    Par nouha_79 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 17/08/2007, 11h54
  2. [VBA-E][2k7] Enregistrer une feuille d'un classeur dans un autre document
    Par tazamorte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2007, 18h15
  3. [VBA-Word]Modifier la police d'un mot dans tout le doc
    Par conconbrr dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/07/2006, 14h17
  4. copier une feuille dans un nouveau doc excel
    Par alkmehd dans le forum Access
    Réponses: 1
    Dernier message: 24/09/2005, 11h01
  5. [VBA-E] enregistrer et fermer en un clic
    Par christouffes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2005, 18h52

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