Créer Un Fichier Excel Macro Vba [Résolu] - CCM

Informatique Mobile Applis & Sites Image & Son Maison Securité Téléchargement Forum Bureautique Développement Internet Jeux vidéo Matériel Réseau Vidéo/TV Virus/Sécurité Emploi
  • Forum
  • Applis & Sites
  • Bureautique
  • Excel
Sujet Précédent Sujet Suivant Bonjour, actuellement je suis en stage où je dispose d'un document excel qui génère les stats individuelles des employés . Or il faut que je crée un fichier excel généré automatiquement en cliquant sur un bouton, qui devrait contenir autant de pages de statistiques que d'employés (environ 30) et il faut que je fasse ça sous forme de macro vba. Aidez moi s'il vous plaît, je suis débutante en vba. SOS Afficher la suite Répondre (10) Partager
  • Copier
A voir également:
  • Créer un nouveau fichier excel vba
  • Creer un fichier .bat - Guide
  • Fichier bin - Guide
  • Comment créer un groupe whatsapp - Guide
  • Comment ouvrir un fichier epub ? - Guide
  • Comment réduire la taille d'un fichier - Guide
Réponse 1 / 10 Meilleure réponse La meilleure réponse est la réponse qui a été validée par nos équipes. Bonjour, Peux-tu en dire plus sur le contenu des fichiers à créer ? En principe il suffit d'ajouter un bouton sur la page excel qui doit fabriquer le fichier et lui affecter une macro dans laquelle tu définis ce qu'il y a à faire ! Pour créer un bouton sur une feuille : Affichage/Barre d'outils/Formulaires C'est le deuxième icône de la deuxième ligne appelé "bouton". Tu cliques dessus, il te donne un curseur qui sera le coin supérieur gauche de ton bouton, et il te demande d'affecter directement une macro (tu peux le faire plus tard si la macro n'est pas faîtes : cliques droit sur le haut du bouton, et puis "affecter une macro")! à plus ! Réponse 2 / 10 D'accord, On va donc procéder par étape... déjà faire un fichier à partir d'un bouton et créer une feuille par employée. On ajoutera d'autre choses au code par la suite. Mais, c'est une première étape. Option Base 1 Sub Macro1() Dim table_employes(100) As String 'On prévoit large Dim nombre_employes As Integer nombre_employes = 0 Do nombre_employes = nombre_employes + 1 table_employes(nombre_employes) = Cells(nombre_employes, NUMERO DE COLONNE DES EMPLOYES).Value Loop While Cells(nombre_employes, NUMERO DE COLONNE DES EMPLOYES) <> "" nombre_employes = nombre_employes - 1 'Cela nous donne le nombre d'employés, et note leur nom dans une table Workbooks.Add 'on ajoute un classeur Sheets("Sheet3").Select 'il y a trois feuilles de base dans le classeur, on crée les suivantes For i = 4 To nombre_employes Sheets.Add Next i For j = 1 To nombre_employes Dim nom_feuille As Variant nom_feuille = "Sheet" & j Sheets(nom_feuille).Name = table_employes(j) Next j End Sub bonne chance ;) Salut merci infiniment pour ton aide ça a marché. Mais apparemment il fallait plutôt créer un classeur par employé C'est ce que j'ai fait ça ne nécessite qu'une boucle je crois. Mais voilà les classeurs sont créés j'y colle les stats je sauvegarde et je ferme et en fin de compte je me rends compte que tous les classeurs ont le même contenu les stats du dernier agents de la liste. Voici le bout de code qui je pense contient le problème Il s'agit du code qui colle la page sauvegarde la classeur et le ferme: ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="XXXXX.xls" ActiveWorkbook.Saved = True ActiveWorkbook.Close Je ne comprends pas où est l'erreur Help Réponse 3 / 10 Salut merci de m'avoir répondu En fait, à la base j'ai un classeur contenant des données et qui génère dans l'une de une page les stats pour un seul employé car on ne peut entrer qu'un seul nom dans le champs. Et moi en principe je dois écrire en vba une macro qui permettrait grâce à un simple clic de générer un autre classeur dont chaque feuille correspondrait aux stats d'un employé. En fait, ils ne veulent pas avoir à créer à chaque fois les stats de chaque employé, ils veulent tout d'un seul coup. PS: Dans le classeur source je dispose d'un tableau contenant les noms des employés Réponse 4 / 10 moi non plus, j'aimerais bien avoir le code entier pour te répondre, à la limite tu peux peut-être m'envoyer un "fichier-exemple" que je puisse t'aider ;) ! D'autre part, s'ils ont tous les mêmes stats, cela signifie que tu as oubliés de faire une action à chaque fois que tu recommences ta boucle... Par ailleurs, oui une boucle suffit pour faire un fichier différent par employé (quand on a plus ce satané pb de nom de feuille *$#@!! ^^) A ++

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question Réponse 5 / 10 Salut Voici le code : Sub macro5 () 'on se positionne dans le classeur source sur la feuille qui contient la liste 'des employés et les graphes à copier. Sheets("Résultat individuel").Select 'Déclaration des variable Dim Nb_agents As Integer 'indice Dim Tab_Nom_agents(200) As String Dim Tab_Prénom_agents(200) As String Nb_agents = 0 Do ' permet de copier la taille de la table Nb_agents = Nb_agents + 1 Tab_Nom_agents(Nb_agents) = Cells(Nb_agents, 6) Tab_Prénom_agents(Nb_agents) = Cells(Nb_agents,7 ) ' Range("A1") = Tab_Nom_agents(Nb_agents) Range("B1") = Tab_Prénom_agents(Nb_agents) Call StatsDesAgents 'macro qui génère les stats pour un employés Range("A1:O100").Select Selection.Copy Workbooks.Add Sheets("Feuil1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="XXXXXX.xls" 'Le classeur est nommé d'après le nom de l'agent ActiveWorkbook.Saved = True ActiveWorkbook.Close 'J'ai Windows("ClasseurSource.xls").Activate Loop While Cells(Nb_agents, 6) <> "" End Sub Mais je crois que le problème vient des liaisons entre classeur car excel met à jour automatiquement leur contenu. Quand on modifie le classeur source les autres sont automatiquement modifié et je ne trouve pas un moyen de supprimer ces liaison avec du code vba. Voilà le problème en gros. Réponse 6 / 10 Pour moi le code fonctionne bien, en tout cas le copier coller s'effectue bien, dans la mesure où je n'ai pas trop tenu compte de cette partie du code en gras Range("A1") = Tab_Nom_agents(Nb_agents) Range("B1") = Tab_Prénom_agents(Nb_agents) Call StatsDesAgents 'j Range("A1:O100").Select Je suppose que l'erreur vient de cette autre macro qui ne doit pas copier les bonnes choses. Sinon pour déboguer, je vous conseille de ne faire que deux fichiers et voir s'ils sont différents... Par ailleurs, quelles genres de liaisons sont établies ? PS: astuce : encadrer le code qui vient de la macro par les balises <code> ... </ code> (sans espace) pour que le code reste propre ;) + Réponse 7 / 10 Salut En fait la macro qui affiche les stats marche très bien . J'ai regardé sur internet il semble que les liaisons entre calseeurs soient en cause. En fait d'après ce que j'ai compris quand on fait un copier\coller d'un classeur A vers un classeur B, si on modifie le classeur A leclasseur B est lui aussi automatiquement modifié quand on l'ouvre. Il faut supprimer ces liaisons (on peut les voir dans l'onglet Edition/Liaisons) mais je ne trouve pas de code vba pour le faire. Voilà Merci pour ton aide Réponse 8 / 10 Je te conseille de le faire une fois manuellement en t'enregistrant avec l'enregistreur et voir s'il te donne un code que tu pourrais mettre avant d'enregistrer dans ta boucle qui fonctionne par ailleurs merveilleusement bien :) ! Réponse 9 / 10 Apparemment cette version manuelle marche: - Sélectionne toutes tes feuilles - Menu Edition/Rechercher - Tape *[ - puis clique sur Suivant Tu peux la traduire en VBA facilement ;) non testé Réponse 10 / 10 Salut j'ai déjà essayé ça mais ça ne marche pas car j'ai des graphes et si je le fais à la main ils disparaissent. Merci en tout cas pour ton aide. La seule option qui s'offre à moi est d'effectuer un collage spécial en format bitmap mais j'ai pas le code vba. Voilà Merci infiniment. A+ Afficher toute la discussion

Votre réponse

Discussions similaires

Fonction shell VBA VBA numéro de ligne d'une cellule [Access] Forcée Arret boucle infini Connexion SQL Server Via VBA EXCEL VBA - recherche d'une valeur Excel : faire un fichier par onglet Devenez membre en quelques clics
  • Connectez-vous simplement avec ceux qui partagent vos intérêts
  • Suivez vos discussions facilement et obtenez plus de réponses
  • Mettez en avant votre expertise et aidez les autres membres
  • Profitez de nombreuses fonctionnalités supplémentaires en vous inscrivant

Questions et réponses sur Excel

Newsletters

Newsletters Actu du jour Voir un exemple

Les informations recueillies sont destinées à CCM BENCHMARK GROUP pour vous assurer l'envoi de votre newsletter.

De plus, lors de votre inscription sur ce formulaire, des données personnelles (dont votre adresse email sous forme hachée et pseudonymisée) peuvent être partagées avec nos partenaires Data à des fins de personnalisation de la publicité et des contenus qui vous sont proposés. Vous trouverez le détail de ces informations et pouvez vous y opposer à tout moment.

Plus généralement, vous bénéficiez d'un droit d'accès et de rectification de vos données personnelles, ainsi que celui d'en demander l'effacement dans les limites prévues par la loi.

Vous pouvez également à tout moment revoir vos options en matière de prospection commerciale et ciblage. En savoir plus sur notre politique de confidentialité ou notre politique Cookies.

Tag » Code Vba Pour Créer Un Fichier Excel