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 :

Sauvegarder un onglet en tant que nouveau fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Sauvegarder un onglet en tant que nouveau fichier Excel
    Bonjour,

    J'utilise un fichier Excel qui me permet d'agréger des données multi-clients puis à générer, par client, des fichiers pdf.

    Or, mes clients souhaitent que je leur envoie ces données par fichier Excel. J'aimerai donc pouvoir trouver une formule qui filtre mon tableau par client puis, pour chaque client, en génère un tableau Excel propre.

    On m'a transmis une macro mais celle-ci suit le cheminement suivant :
    * Filtre données pour le client i,
    * Transfère les données vers un onglet "vierge",
    * Sauvegarde le tout (tout le fichier) sous la forme "Données client i.xls".

    Or, mon fichier de base est un fichier xlsm qui contient bon nombre d'onglets préparatoires, qui permettent de mettre en forme mon tableau final. Et j'ai plus de 80 clients différents. La méthode que l'on m'a indiquée (et que je retrouve sur le net) m'oblige donc, pour chacun des fichiers "Données client i.xls" à supprimer l'ensemble des onglets qu'il est inutile de transférer aux clients...

    Est-il possible de générer un fichier à partir d'un unique onglet, ou une méthode permettant d'ajouter à un fichier excel externe modèle (que je préparerais alors en amont) le contenu filtré ?

    Ci-joint la méthode transmise :

    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
    35
    36
    37
    38
    39
    Sub edition()
     
    For i = 2 To 83
     
        Sheets("INVAENVOY").Range("$A$3:$S$70000").AutoFilter Field:=3, Criteria1:=Sheets("Feuil3").Range("A" & i), Operator:=xlOr, Criteria2:="=X"
     
        ChDir "\\lurs\_partage\Maint\CIM\MEM\02 - Equipements\02 - Inventaires\01 - MEM\Inventaires 2019\test"
        Range("A1").Select
     
        DernLigne = Sheets("INVAENVOY").Range("A65536").End(xlUp).Row
        Sheets("INVAENVOY").Range("A1:R" & DernLigne).Copy
     
        'Workbooks.Add
        Sheets("Feuil1").Select
        Rows("1:1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
        Sheets("Feuil1").Select
     
        Rows("1:1").Select
        Selection.AutoFilter
        Cells.Select
        Cells.EntireColumn.AutoFit
     
        'ActiveSheet.Protect Password:="cimbat", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
     
        ActiveWorkbook.SaveAs Filename:="\\lurs\_partage\Maint\CIM\MEM\02 - Equipements\02 - Inventaires\01 - MEM\Inventaires 2019\test\IGS 0" & Sheets("Feuil1").Range("C2") & " - Inventaire MEM 2019.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        'ActiveWorkbook.Close
     
        Sheets("Feuil1").Select
        Sheets("Feuil1").Range("A1:R" & DernLigne).Delete
     
    Next
     
    End Sub
    D'avance, merci pour vos retours toujours éclairants !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une petite procédure qui utilise les filtres avancés d'excel pour exporter les données suivant critères et la méthode Copy pour copier la feuille contenant les données exportées. Il reste
    Les données sources se trouvent dans un tableau structuré seul présent (ListObjects(1)) dans la feuille nommée db et dont le CodeName est shtdb
    shtdb est la propriété CodeName de la feuille contenant les données source
    Les cellules nommées
    areaCriteria =db!$O$1:$O$2
    areaTarget =Cible!$A$1:$G$1
    Il reste a sauver le nouveau classeur.
    Pour cela j'utilise une cellule nommée se trouvant dans une feuille paramètre contenant le chemin et le nom à donner au nouveau classeur soit une ligne de code qui n'est pas présente dans l'exemple donné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub t()
      Dim rngSource As Range
      Set rngSource = shtDb.ListObjects(1).Range
      rngSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("areaCriteria"), CopyToRange:=Range("areaTarget")
      Range("areaTarget").Worksheet.Copy
      ' Code pour sauver le classeur actif qui contient la feuille copiée
      ' .....
      Set rngSource = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Merci pour ces éléments. Je suis néanmoins trop néophyte pour comprendre de quoi il en retourne !
    J'essayerai de voir avec un collègue plus aguerri !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,

    Citation Envoyé par YanLeFlan Voir le message
    Est-il possible de générer un fichier à partir d'un unique onglet,
    Je pense que ce que tu demandes est très simple avec ce code par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("Feuil1").Copy
        ActiveWorkbook.SaveAs "C:\test\mon_classeur.xlsx"
        ActiveWorkbook.Close
    Tu remplaces "Feuil1" par la feuille que tu as choisie et tu mets le chemin complet du nouveau classeur qui n'aura qu'un unique onglet.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/09/2017, 16h41
  2. Réponses: 2
    Dernier message: 13/08/2014, 12h28
  3. [michetrab] Présentation en tant que nouveau
    Par michetrab dans le forum Présentations
    Réponses: 1
    Dernier message: 12/05/2011, 23h08
  4. Réponses: 2
    Dernier message: 18/02/2011, 09h58
  5. Création nouveau fichier excel depuis vba
    Par bossLINDROS dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/04/2008, 15h31

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