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 :

Lancer la création d'un fichier complété depuis un bouton excel [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 17
    Par défaut Lancer la création d'un fichier complété depuis un bouton excel
    Bonjour,

    a des fins professionnels,
    j'essaie de créer un fichier Excel source (dans lequel je met toutes mes données "standard")
    qui me permettra de créer, en cliquant sur un bouton "Créer", un rapport d'erreur.

    J'ai réussi a faire en sorte de créer la feuille lorsque j'appuie sur le bouton :

    cependant, je n'arrive pas à faire évoluer la chose ...
    => il me créé toujours le même rapport.

    Dans mon module1, je lui dit de quel fichier partir et quoi créer
    Dans ma feuille1 (NC Client), je lui donne le format d'écriture
    => je pense que ces deux sont en conflit, mais je ne trouve pas l'erreur :s

    pouvez-vous m'aider svp ?
    En pièce jointe, vous trouverez un fichier xlsm test
    __TEST_NICO_Tableau animation NC.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Le bouton déclenche la macro "Tableau_NC_Creer_8D" qui, effectivement, ne fait qu'ouvrir, enregistrer et fermer le même fichier. La macro "Creer_Click" n'est, elle, pas exécutée.

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Nicolas,
    La Sub Tableau_NC_Creer_8D() ne fait selon moi qu'ouvrir un fichier, sélectionner des cellules et rien d'autre puis sauvegarder le fichier sous un autre nom et comme le disait Daniel ne demande pas le lancement d'une autre macro ou toute autre action.
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 17
    Par défaut
    arf oui :s
    Merci Daniel, Eric

    Par contre, du coup j'ai un autre soucis (le dernier),
    A chaque fois il veut me créer la NC201500009.
    Il me crée bien les valeurs suivantes, mais la 09, il la recrée a chaque fois.

    C'est certainement parce qu'a chaque fois que je fais "créer", il relance également la routine ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveWorkbook.SaveAs Filename:= _
            "\\192.168.0.253\services\indus en cours\_NC en cours\TEST MACRO\NC201500009.xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    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 128
    Par défaut
    Salut

    Voila une proposition qui utilise un tableau.
    Les avantages
    • Le tableau s'étend au fur et à mesure qu'on lui ajoute des données,
    • le formatage et automatique
    • ainsi que la mise en place des formules dans une nouvelle ligne.
    • La plage des Mise en forme se met à jour toute seule
    • je trouve que ça facilite l'écriture du code
    • ...


    Je te laisse regarder le code, je ne l'ai pas testé par contre (pas de fichier compatible), si tu as des soucis ou des questions n'hésite pas.

    ++
    Qwaz
    Fichiers attachés Fichiers attachés

    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

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 17
    Par défaut
    Effectivement sous forme de tableau ca fait plus propre et plus pro

    L'écriture du code plus facile, ne maitrisant pas les macros,
    je n'en suis pas encore convaincu, mais je vais y plancher

    Par contre, j'ai tout de même une question :
    Pour le remplissage des champs, tu marques :
    'Il serait préférable de pointer la feuille en précisant son nom plutôt que d'utiliser ActiveSheet
    => par contre j'avoue ne pas savoir comment faire :s

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    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 128
    Par défaut
    Salut

    C'est tout simple.

    Imaginons que tes données soient sur un onglet (feuille) nommé "Données".

    Pour y faire référence dans un code tu as plusieurs solutions :

    En précisant, le classeur et la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.sheets("Données")
    Dans ce style d'écriture, il vaut mieux préciser le classeur, ici ThisWorkbook représente le classeur qui contient la macro en cours.
    Si tu ne le précise pas et que durant le déroulement de la macro (imaginons un traitement de plusieurs 10ène de seconde ou de quelques minutes) tu ailles cliquer dans un autre classeur, alors ton code continuera à s'exécuter et cherchera à modifier un feuille "Données", donc soit elle n'existe pas dans le nouveau classeur actif et ça plante, soit elle existe et ça te saccage le contenu de ta feuille...
    Un autre inconvénient, si l'utilisateur change le nom de l'onglet... la macro plante.

    Donc lorsque tu utilises ActiveSheet ou sa petite soeur ActiveCell, c'est le même problème en pire, puisque la si tu changes la feuille (ou cellule dans le cas de ActiveCell) active involontairement, peut importe son nom, la macro modifiera son contenu... bonjour les dégâts.
    C'est pour cette raison que je dis qu'il vaut mieux réserver l'utilisation de ActiveSheet aux cas où c'est impossible de faire autrement.

    Il existe une autre écriture, qui utilise le CodeName, c'est le nom de la feuille qui apparait dans les propriétés sous VBE (raccourci F4 pour afficher les propriétés), le CodeName apparait sous l'intitulé (Name).
    Le CodeName peut-être utilisé tel quel dans le code, lorsque tu l'utilises, même si la feuille active change, ça n'a aucune importance.
    Si l'utilisateur modifie le nom de l'onglet, le CodeName lui reste inchangé, donc le code sera toujours opérationnel.

    ++
    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

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

Discussions similaires

  1. Création d'un fichier xls depuis fichier xlsm : pb de format
    Par MyJero dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2015, 11h36
  2. Création d'un programme disponible depuis le menu Excel
    Par khroutchev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/07/2013, 16h34
  3. Réponses: 0
    Dernier message: 27/10/2010, 14h34
  4. Création d'un fichier txt depuis autres fichier
    Par PuMa|Yas dans le forum VBScript
    Réponses: 20
    Dernier message: 28/05/2009, 09h29
  5. [VBA-E]Créer un fichier txt depuis une feuille Excel
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/02/2006, 17h36

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