Macro pour copier une feuille
Bonjour,
Je sais que le sujet à été déjà traiter plusieurs fois mais étant débutant avec vba je n'ai pas encore pu adapter sur mon projet les différentes solution proposer. Vous trouverez en pièces jointe un fichier excel je voudrais dans un premier temps par le biais d'une macro copier a partir du sommaire la feuille facture vente personnel et la renommer sur l'onglet au nom du client et avec la date afin de garder une trace de chaque client.
Dans un deuxième temps j'aimerais également créer un userform afin de remplir la feuille facture vente aux personnels en grande partie ex nom prénom adresse. Merci de regarder les commentaire sur las pages excel.
Merci par avance de votre aide.
Fred85
Salut et bienvenue sur le Forum,
Voici un fichier qui devrait répondre à ton attente. A voir comment l'affiner.
En enregistrant tes nouvelles factures directement dans ce fichier, ça va vite devenir ingérable. Il faudra probablement enregistrer les nouvelles factures dans d'autres fichiers (1 fichier par client ? 1 fichier par année ? A voir selon tes besoins).
Cordialement.
Ok je vais regarder merci je vous tiens au courant
Vous aviez raison cela va être vite galère, pouvez vous m'aider afin de copier la feuille dans un classeur à part (un nouveau tous les mois)
Je vais améliorer ce soir le modèle (base de la facture)
afin de pouvoir dans chaque fichier mois avoir en plus une page synthétisant plusieurs informations concernant toutes les factures.
Merci par avance de votre aide.
Cela va me permettre d'avancer dans l'apprentissage des macros par rapport à un sujet que je connais bien.
Salut,
Je te présente un fichier assez peu élaboré mais qui a l’avantage de voir si l’on part dans la bonne direction.
Tu le places dans un dossier quelconque de ton arborescence et lorsque tu lances la macro, une copie de ta feuille « Facture Vente personnels » est enregistrée dans un nouveau fichier au nom du client avec la date de facturation dans son titre.
Si le (sous-)dossier d’archivage des factures du mois n’existe pas encore, il est créé automatiquement dans le même dossier que celui où tu as placé le présent fichier de base. S’il existe déjà, la nouvelle facture est simplement enregistrée au bon endroit.
Alors, c’est déjà un début ? Si oui, à toi de dire les améliorations encore nécessaires.
A te relire.
Merci pour ton travail, l'idée d'ouvrir un dossier mois et enregistrer un classeur et une feuille pour chaque client me convient seulement es-t'il possible d'enregistrer tous les clients dans le même classeur et es-qu'a chaque changement de mois un nouveau dossier s'ouvrira ce serai le top.
Je te parlerai de la synthèse de toutes ces feuilles sur un autre tableau un peu plus tard procedons par étape car je d'ébute à ce niveau et j'essaie d'analysé ta procédure.
Je te remerci pour ton aide et espère avoir été clair dans mes propos.
Si tu désires toutes tes factures concernant le même mois dans un seul fichier, il est peut-être inutile d'avoir en plus un dossier par mois, non ? Sinon tu auras 12 dossiers contenant chacun un fichier par année
Alors, on créé un fichier par mois dans le même dossier que le fichier de base ou tu désires vraiment 12 dossiers annuels ou est-ce que tu désires 12 fichiers annuels dans un sous-dossier "Archive", placé dans le même dossier que le fichier de base ?
A te relire.
C'est pas faux je crois que je m'embrouille un peu ont peux partir sur un fichier regroupant tous les clients pour un mois tous ça archiver dans un seul dossier annuelle.
Il y a encore une idée qui me passe par la tête avant que je me lance : Apparemment tu désires 1 seul fichier mensuel avec toutes tes factures afin d'effectuer des totaux mensuels ou je ne sais quoi.
Mais alors tu auras x factures dans un fichier et rechercher tes clients dans tous ces onglets ne sera peut-être pas évident.
Par contre si tu crées un fichier par facture et que tous ces fichiers se trouvent dans un dossier mensuel, tout d'abord ils seront classés selon le nom du client et ensuite tu peux malgré tout effectuer des totaux mensuels ou je ne sais quoi sur la base d'une autre macro qu'on t'aiderait à écrire.
Alors réfléchis encore quelque minutes calmement et dis-moi dans quelle direction partir (mais de toute façon plus avant demain
A te relire.
Encore merci pour ton aide et ton implication voici ci-dessous le copier coller de ce qui me conviendrais.
(Par contre si tu crées un fichier par facture et que tous ces fichiers se trouvent dans un dossier mensuel, tout d'abord ils seront classés selon le nom du client et ensuite tu peux malgré tout effectuer des totaux mensuels ou je ne sais quoi sur la base d'une autre macro qu'on t'aiderait à écrire.)
Bonne soirée et encore merci, il n'y a pas d'urgence .
Je te joint le fichier avec modif des cases à cocher pour le règlement sur la facture et le modèle de synthèse que j'aimerais générer à chaque facture et par mois
Re-bonjour,
J’ai pu avancer avec ton fichier. En l’état, si tu crées de nouvelles factures avec le bouton « Nouvelle facture », elles seront archivées individuellement dans un fichier placé dans un sous-dossier portant le nom du mois au format aaaa-mm (Exemple Facturation 2013-02).
Avec le bouton « Synthèse du mois », tu peux créer ….. une synthèse mensuelle. Tout d’abord une InputBox te demande quel est le mois que tu désires traiter. Tu dois y indiquer la date au format précis aaaa-mm. Un nouveau fichier appelé « Synthèse xxxx-yy » sera alors créé et placé lui aussi dans le sous-dossier « Facturation xxxx-yy ». Une partie des données désirées est reportée dans ce fichier récapitulatif. Je n’ai toutefois pas compris ce que tu désirais dans les colonnes H et I de ta feuille « Synthèse du mois ». Merci de me donner plus de précision à ce sujet.
Pour l’instant, si un fichier commençant par « Synthèse » se trouve déjà dans le sous-dossier « Facturation xxxx-yy », il est tout simplement supprimé définitivement. Si tu désires garder plusieurs fichiers de synthèse par mois (par exemple des fichiers intermédiaires), il faudra me le faire savoir.
Il ne faudrait pas qu’il y ait d’autres fichiers que les factures mensuelles ou que ce fichier de synthèse dans un sous-dossier mensuel. Autrement il faudra modifier la macro en conséquence.
Il y a très peu de garde-fou dans mes macros pour l’instant, alors si tu commets certaines erreurs ou si tout ne joue pas comme ça devrait, il se peut que mes macros coincent. A voir à l’usage ce qui est nécessaire d’introduire comme garde-fou. Par exemple si tu indiques que tu veux traiter le mois de xxxx-yy et que le fichier « Facturation xxxx-yy » n’existe pas, je n’ai encore rien prévu comme parade.
Si la macro coince en cours de route et que tu dois debugger comme tu peux, contrôle bien qu’il n’y ait pas des feuilles provisoires qui aient été créées dans le fichier de base et qui pourraient créer de futurs problèmes. Le cas échéant, efface toutes les feuilles qui ne sont pas actuellement dans ce fichier de base. Eventuellement garde une sauvegarde du fichier de base à disposition quelque part.
A toi de faire des essais et de me dire ce qui est encore nécessaire.
Amicalement.
Merci, pour tous ça,
Je vois que tu n'as pas le dernier modèle de facture vente aux personnels voila pourquoi tu ne comprend pas les colonnes G, H, I et J
en effet sur le fichier que j'ai posté hier soir tu remarqueras que j'ai intégré des cases à cocher (formulaire) en face le mode de règlement et en face consigne, il y a également la date de règlement et la date retour consigne.
J'aimerais en cochant ces cases déterminer sur synthèse le mode de règlement ex:
" si case chèque bancaire cocher, alors dans tableau synthèse colonne H inscrire chèque bancaire et dans colonnes G mettre la date du règlement en effet il faudra que je revienne sur ces feuilles pour ceux qui ne paye pas aussitôt plus tard"
autre exemple:
" si case consigne coché alors mettre en colonne I chèque bancaire et si case décocher mettre dans colonne j la date de retour consigne"
Idem pour les cases Espèces.
Serait-il possible également de nommer à chaque création de facture le classeur au nom et aux N° de facture et non pas classeur 1 classeur 2 classeur 3....etc afin de retrouver dans le dossier mensuel les différentes factures sans avoir à ouvrir les classeurs.
Encore une petite chose sur l'icone du classeur généré à chaque nouvelle facture serait t'il possible de mettre un témoin ou une couleur afin de savoir lesquelles sont payer et lesquelles ne le sont pas.
Sinon tous cela me convient tous fonctionne, nous verrons un peu plus tard pour les gardes fou
J'espère ne pas trop t'en demander merci pour ton travail sur un cas concret il m'est plus facile de suivre les procédure.
Je te joint de nouveau le fichier avec le modèle de facture modifier.
attention il s'agit du V2, je sauvegarde précieusement ta V3.
Salut,
Tu dis que j’ai un problème avec les colonnes G, H, I et J alors que je prétends n’avoir un problème qu’avec les colonnes H et I !
Pour les colonnes G et J, tu avais indiqué dans ton modèle de feuille « Synthèse du mois » que tu désirais reporter respectivement les cellules C44 et C52 de chaque facture (ton envoi du 9 octobre à 21 heures 42). Dans ma macro fournie avec le fichier « Base Facturation_V3 », c’est exactement ce qui se passe.
Toujours lors de ton envoi du 9 courant à 21 heures 42, tu avais simplement indiqué « macro case à cocher » dans les colonnes H et I, d’où ma demande d’informations complémentaires.
Maintenant que tu m’as indiqué clairement tes souhaits au sujet des colonnes H et I, j’ai modifié ta feuille «Facture Vente personnels» de la manière suivante : Si tu coches la case à cocher présente dans la cellule C45 (Règlement par chèque bancaire), la cellule H45 de cette même feuille va prendre la valeur VRAI ou FAUX. Tu ne vois pas de prime abord de texte dans cette cellule, puisque la couleur du texte est (presque) la même que la couleur de fonds, mais si tu sélectionnes cette cellule, tu en vois le contenu dans la barre de formule. Ceci me permet d’indiquer dans la macro : « Si la valeur de la cellule H45 est VRAI, faire ceci, sinon faire cela ». J’en ai fait de même pour la case à cocher de la cellule C49 reliée maintenant à la cellule H49. Donc, lors de la récapitulation mensuelle, tu as maintenant l’information désirée au sujet du mode de paiement.
J’ai dû effacer tes formules des colonnes D et G de la feuille « Facture Vente personnels » qui créaient des interférences. A remettre le moment voulu.
Fred85 a écrit :Serait-il possible également de nommer à chaque création de facture le classeur au nom et aux N° de facture et non pas classeur 1 classeur 2 classeur 3....etc afin de retrouver dans le dossier mensuel les différentes factures sans avoir à ouvrir les classeurs.
Je ne comprends pas très bien ce que tu veux dire. Si tu utilises le bouton « Nouvelle facture » afin de créer tes nouvelles factures, celles-ci porteront les noms, prénoms et date de création inscrits dans le formulaire UserForm1.
Ensuite, lorsque tu effectues un récapitulatif par l’intermédiaire du bouton « Synthèse du mois », tu as les renseignements désirés dans le nouveau fichier créé, à l’instar de celui que je joins à ce message. Si ces deux étapes ne fonctionnent pas ainsi, tu vas devoir m’expliquer exactement ce que tu fais.
Dans l’image jointe, tu vois mon sous-dossier pour la facturation janvier 2000 après la synthèse.
Il est bien entendu que si tu désires le numéro de facture plutôt que la date - ou les deux - dans le titre du fichier individuel créé à chaque facture, c'est possible. Merci de me dire avec précision ce que tu désires finalement.
Cordialement.
Bonjour
et encore merci pour ta patiente, c'est que moi quand je crée une nouvelle facture en voulant fermer il me demande ou je veux l'enregistrer mais le nom du classeur n'est pas le nom de l'userform mais classeur 1.
à chaque nouvelle facture j'ai un message d'erreur erreur d'exécution 13 incompatibilité de type et au débogage voici ci dessous ce qui est surligner:
dossier = "Facturation " & Year(Date_avec_points) & "-" & Application.WorksheetFunction.Text(Month(Date_avec_points), "00") 'Text(Month(Date_avec_points ), "00").
Pour simplifier si en créant une nouvelle facture le classeur prend le nom de ce qui est marqué en nom et prénom de l'userform cela me va très bien (comme dans tes exemples) mais jusque la ce n'est pas le cas simplement la feuille est noté. et si en enregistrant il va directe dans le dossier 2013-10 (toujours comme dans ton exemple) c'est parfait pour moi.
Pour info la V4 Ne fonctionne pas le fichier de destination ne ce crée plus.
encore Merci et à bientôt
Re,
Rassure-moi : tu as placé le fichier « Base Facturation_V4 » dans un dossier de ton arborescence (et non pas avec les fichiers provisoires) et tu cliques sur le bouton « Nouvelle Facture » sur la feuille « Sommaire » afin de créer une nouvelle facture ?
Dans le formulaire qui s’ouvre, tu remplis bien les champs comme ci-dessous et tu cliques sur « OK » ?
A ce moment-là, tu devrais avoir à l’écran un nouveau fichier ouvert et portant le nom du client et la date de facturation (ci-dessous dans le cadre vert). Sur la feuille, ces données devraient également être reprises, tel que sur l’image ci-dessous (cadres rouges). Si tu ne modifies plus ce fichier, il est déjà enregistré dans le bon sous-dossier et peut être refermé sans autre confirmation d'enregistrement.
Si tu effectues bien les étapes indiquées ci-dessus mais que la macro n’arrive pas au bout, il serait peut-être intéressant que tu me dises quelle est la valeur de la variable « Date_avec_point » au moment où ta ligne de code se met en jaune. Pour ce faire tu passes avec le pointeur sur le nom « Date_avec_point » sur cette ligne jaune et la valeur doit apparaître dans un petit rectangle en dessous. Dans l’image ci-dessous, la valeur de ma variable « Date_avec_point » est par exemple « 31.12.2010 ». Si la valeur est vide (dans ce cadre, tu aurait le texte Date_avec_points = ""), ce n’est pas bon.
Tu auras peut-être remarqué qu’en Suisse on utilise le point comme séparateur de date (par exemple dans l’image de mon formulaire ci-dessus. Comme dans certains pays exotiques, comme le Mali, le Canada, la France, la Belgique, la Roumanie, le Sénégal, etc., on utilise d’autres signes de séparation de dates, ça crée parfois des problèmes car certains signes ne sont pas acceptés dans les noms des fichiers. J’avais essayé de prévoir ce problème en transformant dans mon code une date quelconque saisie dans le formulaire en date avec points, mais il se peut que ça ne passe pas comme voulu. Alors il est très important, lorsque tu m’indiques la valeur qu’aurait la variable « Date_avec_point » dans cette ligne en jaune, que tu indiques précisément le signe de séparation de la date. Il serait également intéressant que tu essaies toi-même de saisir des dates avec des points comme séparation dans le formulaire, mais peut-être que ça ne passe pas, si tes réglages régionaux ne prévoient pas des points dans les dates.
Si le code est interrompu après que la ligne était en jaune, c’est normal que ton fichier ne porte pas le nouveau nom qu’il devrait et qu’il n’est pas enregistré dans le bon sous-dossier.
Tu me redis quoi ?
NB : C’est qui c’te Séverine
J'ai bien placer le fichier V4 dans mon arborescence dans un dossier vide.
et je procède bien comme tu le d'écrit.
Je pense que le problème viens bien de la saisie de date car dans l'userform je ne peut pas utiliser les points comme séparateur un message me met de saisir une date.
J'ai également essayer avec la virgule cela bloque le code, idem avec / et -
tu trouveras ci dessous les photos du code dans le formulaire en passant le pointeur pour les 2 premiers pas de problème mais pour le troisième rien ne s'affiche es-ce normal?
Pour saisir la date peux-tu faire en sorte d'utiliser le signe / (couramment utiliser chez nous).
NB: It's m'y wife
Je viens de remarquer que sur la version 3 le problème ne viens pas de la date mais un peu plus loin dans le code voir photos ci dessous.
J'en conclu donc que dans la version 3 ta façon de prévoir la saisie de la date fonctionne.
Par contre le fichier ne prend pas non plus le nom et prénom informer dans l'userform1.
on avance et je te remercie pour ton aide.
Bonsoir,
Ce n’est pas évident à expliquer, mais je vais le tenter quand-même.
Chacun sur son PC doit définir les paramètres régionaux. Alors si tu indiques par exemple que tu veux les dates au format 01/01/2001 et que j’indique dans mon formulaire que le TextBox5 ne doit accepter que des dates, il ne va pas accepter que tu inscrives des dates du genre 01.01.2001. Il me semblait bien que c’était ainsi, mais je t’ai quand même demandé d’essayer d’utiliser le format 01.01.2001 dans le formulaire, à tout hasard.
Maintenant, comme je pensais dès le début que tu allais devoir saisir des dates dans le formulaire à un autre format que le format suisse, j’ai placé dans mon code un « traducteur » qui transforme par exemple ta date 01/01/2001 en 01.01.2001 car il est impossible d’utiliser le signe / dans le nom d’un fichier. Ce n’est donc pas pour le plaisir de « suissiser » ta date que je l’ai fait, mais uniquement afin de rendre possible l’enregistrement d’une pseudo-date dans le nom d’un fichier.
En ce qui concerne mon code, tu saisis ta date dans le TextBox5 et j’utilise cette valeur (ou cette date) TextBox5 afin de créer ma variable Date_avec_points (du point de vue Excel, ce n'est alors plus une date, mais un texte), de manière à pouvoir enregistrer le nom d’un fichier avec cette information (sous la forme d'un texte correspondant à une date suisse, tu me suis ?) au sujet de la date.
Suite à ton tout dernier message, je me suis maintenant rendu compte que je t’ai demandé de m’indiquer les valeurs qu’avait la variable « Date_avec_point » sur la ligne servant à créer la variable « Nom_nouveau_dossier » (la ligne Nom_nouveau_dossier = ……….) mais que le problème vient très certainement d’ailleurs.
Je me rends compte effectivement actuellement qu’au niveau de la ligne ActiveWorkbook.SaveAs …….., j’ai laissé trainer par erreur une valeur TextBox5, alors que j’aurais dû utiliser la valeur Date_avec_points (AIE !). Le fichier version 4 essaie donc toujours d'enregistrer un fichier avec un texte comportant des signes impossibles ou interdits
Je te propose alors de faire encore une fois de nouveaux essais avec les deux fichiers ci-joints : Le premier enregistre les nouveaux fichiers contenant les nouvelles factures uniquement sous le nom du client (on verrait ainsi si le problème vient d'ailleurs que de la date) alors que le deuxième devrait être corrigé de manière à enregistrer ces fichiers sous le nom du client avec une date au format suisse (la ligne ActiveWorkbook.SaveAs …….. n’a plus la variable Textbox5, mais la variable Date_avec_points). Si ni l’un ni l’autre de ces fichiers ne fonctionne, il y a un sérieux problème. Si par contre l’un ou l’autre fonctionne, indique-moi, tel que déjà demandé, comment tu veux finalement enregistrer ces fichiers (avec le nom du client, avec la date de la facture au format 01.01.2001, avec le numéro de la facture, etc.).
L’un des problèmes que j’ai afin de préparer ce code, c’est que chez moi, que j’utilise la variable TextBox5 (du point de vue Excel, une date au format suisse) ou que j’utilise la variable Date_avec_points (du point de vue Excel un texte quelconque avec des points), les fichiers désirés sont dans les deux cas créés sans soucis
A te relire.
Mes amitiés à Madame
NB : Concernant ton compte rendu, lorsque tu indiques "Troisième code, rien ne s'inscrit", c'est probablement car tu passes ton curseur sur le troisième texte "Date_avec_points", mais comme il s'agit d'un texte mis "en commentaire" (donc écrit après une apostrophe, donc écrit en vert dans le code), ça ne fait pas vraiment partie du code, c'est juste une information.




