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 :

Macro à améliorer [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Dealer en trésorerie
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dealer en trésorerie
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut Macro à améliorer
    Bonjour à tous,

    Je me permets de faire appel à vous car je bloque sur 1 macro.

    En effet, je désire développer un fichier pour que celui-ci me crée une série de fichiers en version "final" pour chacun de mes clients.

    explication du besoin :
    Dans 1 fichier .xslm (summary des données client), j'ai une liste de client avec des données pour chacuns (1 ligne = 1 client avec 6 colonnes de données le concernant). En colonne A, le nom du client.
    J'aimerais que la macro me sauve un fichier .xlsx par client en fonction d'un template spécifique.

    Pour l'instant ce template est rempli via formules et j'y ai mis une macro qui le sauve dans le format désiré mais, comme ma liste de clients est longue, je perds bcp de temps à ouvrir chaque fichier et lancer la macro.

    Mon idée serait donc de mettre dans mon fichier "summary des données client" mon template par client dans des onglets différents et de lancer ma macro pour que les fichiers "final" soient générés en 1 click.

    Voici ma macro actuelle

    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
    Sub File_save_as_value() 
    ' File_save_as_value Macro 
        Cells.Select 
        Selection.Copy 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
            :=False, Transpose:=False 
        ChDir "C:\blablabla" 
        Application.DisplayAlerts = False 
        ActiveWorkbook.SaveAs Filename:= _ 
            "C:\blablabla.xlsx" _ 
            , FileFormat:=xlWorkbookDefault, CreateBackup:=False 
            Application.DisplayAlerts = True 
        Cells.Select 
        Selection.Copy 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
        Application.CutCopyMode = False 
        ActiveWorkbook.Save 
        ActiveWorkbook.Close 
    End Sub
    Merci pour l'aide que vous voudrez bien m'apporter
    Cordialement
    Doladonf

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Le fichier transmis au client doit-il forcement être de type excel?
    Si la réponse est non, le mieux serait d'utiliser la fonction publipostage de Word, c'est exactement ce que tu souhaites reproduire sur excel.
    Dans le cas de Word (j'ai utilisé il y a longtemps mais ça doit toujours être d'actualité...)
    Tu réalises ta trame avec des parties variables (nom client, code facture,....) correspondant aux différentes entête de ta base de données
    Tu transmets à Word ta base de données
    Word se charge de faire autant de page que de ligne dans ta base. En personnalisant les zones variables en fonction du contenu de la base.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Dealer en trésorerie
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dealer en trésorerie
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut
    Bonjour Qwazerty,

    Malheureusement, je suis obligé d'envoyer 1 fichier Excel (.xlsx) sinon le publipostage aurait été parfait, en effet.

  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
    13 171
    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 : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour l'instant ce template est rempli via formules et j'y ai mis une macro qui le sauve dans le format désiré mais, comme ma liste de clients est longue, je perds bcp de temps à ouvrir chaque fichier et lancer la macro.
    Si vous avez réussi à le faire avec formule cela devrait être très simple de l'automatiser avec VBA.

    Les étapes

    1. Créer un modèle contenant la formule qui ferait référence à une ligne quelconque contenant les renseignements d'un client.
    2. Dès que votre modèle correspond à ce que vous cherchez, il suffit d'effectuer une boucle parcourant chaque ligne de la liste des clients et remplissant la ligne unique alimentant le modèle (cette opération peut se faire également à l'aide du filtre avancé d'excel (une ligne de code), à l'aide de Power Query
    3. Copier la feuille modèle vers un nouveau classeur
    4. Copier/collage spécial-Valeur pour éliminer les formules
    5. Sauver le nouveau classeur

    Pensez à Comment le faire manuellement à l'aide d'Excel et ensuite le traduire en code

    Le point 2, pourrait même être simplifié en utilisant dans la ligne unique, une formule utilisant INDEX et EQUIV où le numéro de la ligne de la liste des clients ferait référence à un n° présent sur la même ligne contenant la formule. Ce numéro serait alimenté par la boucle.

    Bonjour,
    Pour l'instant ce template est rempli via formules et j'y ai mis une macro qui le sauve dans le format désiré mais, comme ma liste de clients est longue, je perds bcp de temps à ouvrir chaque fichier et lancer la macro.
    Si vous avez réussi à le faire avec formule cela devrait être très simple de l'automatiser avec VBA.

    Les étapes

    1. Créer un modèle contenant la formule qui ferait référence à une ligne quelconque contenant les renseignements d'un client.
    2. Dès que votre modèle correspond à ce que vous cherchez, il suffit d'effectuer une boucle parcourant chaque ligne de la liste des clients et remplissant la ligne unique alimentant le modèle (cette opération peut se faire également à l'aide du filtre avancé d'excel (une ligne de code), à l'aide de Power Query
    3. Copier la feuille modèle vers un nouveau classeur
    4. Copier/collage spécial-Valeur pour éliminer les formules
    5. Sauver le nouveau classeur

    Pensez à Comment le faire manuellement à l'aide d'Excel et ensuite le traduire en code

    Le point 2, pourrait même être simplifié en utilisant dans la ligne unique, une formule utilisant INDEX et EQUIV où le numéro de la ligne de la liste des clients ferait référence à un n° présent sur la même ligne contenant la formule. Ce numéro serait alimenté par la boucle.

    [EDIT]
    Une image étant toujours plus parlante qu'une longue explication, voici en illustration
    • la liste des clients (en bleu) tableau nommé t_Customer
    • la ligne contenant les informations pour le modèle (en orange). Tableau nommé t_Formula
    • l'une des formules pour renvoyer les informations du client en fonction du numéro de ligne (colonne Id)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      =INDEX(t_Customer;[@Id];EQUIV(t_Formula[[#En-têtes];[Ref]];t_Customer[#En-têtes];0))


    Il suffit donc à l'aide d'une boucle d'insérer le numéro de ligne correspondant au client à publier dans le modèle.

    Nom : 220201 dvp Template - Boucle.png
Affichages : 71
Taille : 28,5 Ko
    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
    Futur Membre du Club
    Homme Profil pro
    Dealer en trésorerie
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dealer en trésorerie
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut
    Merci pour votre réponse très détaillée et claire.

    J’ai su mettre en place ma macro et j’en suis fier !!!

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

Discussions similaires

  1. [OpenOffice][Tableur] Macro améliorable et manque de vocabulaire
    Par Ghuron dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 29/09/2015, 12h09
  2. Macro à améliorer
    Par lovely2604 dans le forum VBA Word
    Réponses: 7
    Dernier message: 24/02/2015, 12h15
  3. [XL-2003] Macro à améliorer
    Par midge dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/05/2012, 16h19
  4. améliorer une macro
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2007, 06h02
  5. Améliorer une macro
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/05/2007, 22h33

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