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

  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

  8. #8
    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 je suis perdu sous se format :s
    Je n'arrive plus a faire fonctionner le remplissage du fichier créé :'(

    Avec cette fonction, je continu à remplir les cellules de la même manière qu'avant avec .Activesheet ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    With ThisWorkbook.Sheets("Synthèse")
                        .Cells(3, 2) = DateCode
                        .Cells(4, 4) = Date
                        .Cells(6, 8) = Fournisseur
                        .Cells(8, 4) = Reference
                        .Cells(10, 4) = Designation
                        .Cells(13, 4) = Effet
                        '.Cells(6, 4) = Zone
                        '.Cells(7, 12) = Pilote
                    End With

  9. #9
    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, maintenant il m'est impossible d'exécuter la macro :s
    J'ai traficoté pour le remplissage, et plus moyen de retomber sur mes pieds.

    Excel me dit :
    impossible d'exécuter la macro "_Tableau animation NC.xlm'!Création_8d'.
    Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.

  10. #10
    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

    Attention ThisWorkbook represente la classeur qui contient ta macro, ici il faut faire référence au nouveau classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    With NouveauRapport.Sheet("Synthèse")
                        .Cells(3, 2) = DateCode
                        .Cells(4, 4) = Date
                        .Cells(6, 8) = Fournisseur
                        .Cells(8, 4) = Reference
                        .Cells(10, 4) = Designation
                        .Cells(13, 4) = Effet
                        '.Cells(6, 4) = Zone
                        '.Cells(7, 12) = Pilote
                    End With
    Si ça ne fonctionne pas, place ton nouveau fichier en pièce jointe.

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

  11. #11
    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
    Ca ne marche toujours pas :s

    En fait, j'ai renommé et déplacé le fichier pour le mettre à ca place définitive.
    En même temps, j'ai supprimé les macros test que j'avais fait et la j'ai l'impression, qu'il n'arrive plus a pointer sur la bonne macro.
    Sinon, j'ai l'impression que le reste fonctionne, mais j'ai pas pu testé du coup :s

    Voila le fichier :
    Fichiers attachés Fichiers attachés

  12. #12
    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

    Probablement parce que ton bouton n'a plus de macro qui lui est attribué.
    Fait un clique droit sur ton bouton et sélectionne la macro qu'il doit exécuter.

    Par contre ce bout de code qui traine au début de ta macro ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Workbooks.Open Filename:= _
            "\\192.168.0.253\services\indus en cours\_NC en cours\__FQxx - NC20xxxxxxx Rapport 8D ALTRICS.xlsx"
        Range("A7:B7").Select
        ActiveWorkbook.Save
        ActiveWorkbook.SaveAs Filename:= _
            "\\192.168.0.253\services\indus en cours\_NC en cours\NC201500009.xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close
    C'est quoi le but, parce que c'est pas très propre.

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

  13. #13
    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
    Exacte,
    j'ai réassigné la bonne macro au bouton, et il la relance maintenant.

    Bah en fait, ma première partie, c'est celle que j'avais écris pour ouvrir mon fichier standard et sauvegarder mon fichier à partir de mon standard.
    Et la je ne peux pas m'en passer. Dès que je le met en commentaire, il ne me lance pas la macro.
    Par contre actif, il me créé bien mes docs, mais me re-créé aussi a chaque fois le rapport 0009

  14. #14
    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

    Je ne vois pas la raison d'un tel comportement, as-tu refait des testes dernièrement en supprimant ces lignes?

    Met un point d'arrêt (du clique sur une ligne et ensuite tu appuis sur F9) sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Repertoire = ActiveWorkbook.Path
    Puis utilise F8 pour exécuter ligne après ligne et essai de suivre le contenu de tes variables pour voir ce qui cloche (tu survol les variable avec ta souris).

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

  15. #15
    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
    Ok en faisant step by step,
    il me pointe une erreur sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'On pointe sur le tableau pour simplifier les écritures
        With Feuil1.ListObjects("Tab_Traitement")
    erreur d'exécution 9 :
    L'indice n'appartient pas à la sélection

  16. #16
    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

    Donc de deux choses l'une

    1. Soit Feuil1 n'est pas le nom du bon onglet, attention on parle ici du CodeName de la feuille pas du nom de l'onglet sous Excel. Donc du coup il ne trouve pas le Tableau Tab_Traitement.
      Nom : 2015-01-18_134906.png
Affichages : 457
Taille : 14,2 Ko
      Ici le CodeName de la feuille sélectionnée est "Feuil3", pour le modifier et le rendre plus explicite, il faut le modifier dasn la fenêtre du bas, propriété (Name)
    2. Soit c'est Tab_Traitement qui n'existe pas dans la feuille


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

  17. #17
    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
    Bah je prends bien les données du tableau "NC Client" qui est bien la feuil1(NC Client) quand je regarde le CodeName
    Nom : CodeName Feuil1.jpg
Affichages : 422
Taille : 22,9 Ko

    Effectivement le tableau a changé de nom dans mes copier/coller.
    Il s'appelle maintenant Tableau2
    Il s'appelle Nom : TabName.jpg
Affichages : 453
Taille : 22,0 Ko

    En faisant step by step,
    maintenant il bloque à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With NouveauRapport.Sheet("Synthèse")
    Run-time error 438:
    Object doesn't support this property or method

  18. #18
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    il manque un s à sheet...

  19. #19
    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 :S
    désolé à force de lire, relire, j'avais pas vérifier ca ... :s

    Merci ca fonctionne

+ 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