Compteur incrémenté à chaque ouverture
Bonjour à toutes et à tous,
étant novice dans excel et encore plus avec vba, je fais appel à vos compétences professionnelles dans ce domaine pour me donner un coup de main.
On me demande de créer un modèle de document excel de type facture ou BL, ayant un Numéro (compteur) qui devra s'incrémenter automatiquement à chaque ouverture.
Et, à chaque fermeture, l'enregistrement devra générer un fichier excel de type XLSX de façon que le Numéro reste fixe lors des prochaines ouvertures.
De plus, je dois faire en sorte que ce fichier ainsi généré, intègre la valeur du compteur dans son nom (ex BL-0012.xlsx).
Je suppose donc qu'il faut créer un doc modèle de type xltm, intégrant une macro qui va gérer le compteur, et l'enregistrement du document xlsx à chaque fermeture.
Je ne sais même pas si c'est possible, mais d'après ce que j'ai pu lire avec excel, tout est possible.
Etant donné que c'est assez urgent, je n'aurais pas le temps de me former aux fonctions avancées d'excel et de vba, c'est pourquoi je fait appel à vous pour m'aider.
Je vous remercie d'avance pour vos retours.
Salut Froggy et bienvenue sur le Forum,
Je ne pensais pas qu'un jour je retournerai à l'école d'une manière un peu détournée, en faisant tes devoirs à ta place
Lorsque tu ouvres le fichier ci-joint, un numéro est incrémenté en B1 (comme j'ai remis le compteur à zéro, tu auras la première fois le numéro de facture 1). Ce fichier est immédiatement enregistré avec ce nouveau numéro. Ainsi, si tu ne le modifies plus avant de le quitter, le prochain numéro incrémenté à la prochaine ouverture sera le 2.
Tu prépares maintenant ta facture 1 et - même si tu n'enregistres jamais entre l'ouverture et la fermeture - lorsque tu veux fermer ce fichier, il est enregistré au format .xlsx sous le nom "Facture 1" dans le même dossier que celui où se trouve le fichier "Froggy.xlsm". Le fichier "Froggy.xlsm" est, quant à lui, refermé sans les modifications qui ont suivi le dernier enregistrement (au minimum l'enregistrement qui a suivit l'incrémentation lors de l'ouverture).
Si jamais, reviens à la charge avec tes questions.
Cordialement
EDIT IMMEDIATE : Ayant fait un essai avec le fichier du Forum, il semble qu'il faut tout d'abord enregistré ce fichier sous un nom quelconque dans un dossier quelconque. Le premier numéro de facture n'est alors peut-être pas le numéro 1. Lorsque tu as enregistré ce fichier chez toi, tu peux inscrire 0 en B1 et lors de la prochaine ouverture, tu auras le numéro 1 désiré.
Entretemps il y aura bien un ou deux fichiers qui se seront enregistrés automatiquement sans que tu ne t'en rendes spécialement compte avec des noms "Facture 2", "Facture 3", etc. Alors, pense premièrement que ces fichiers ne sont pas visibles sous "Documents récents" mais que tu dois ouvrir l'explorateur afin de les trouver . En second pense - si tu remets manuellement le compteur en arrière - que les fichiers déjà enregistrés seront remplacés par des nouveaux sans l'alerte traditionnelle, puisque j'ai neutralisé les alertes dans mon code.
Salut Yvouille, et merci pour le boulot.
Tu viens de m'enlever une" grosse épine du pied.
Je viens de tester le fichier, c'est NIKEL !!!
Je tâcherais de me former rapidement sur excel pour éviter qu'on fasse mes devoirs à ma place.
merci encore pour tout et à bientôt
Salut Froggy,
J'ai bien reçu ton message privé et t'en remercie. Merci à toi de bien vouloir rester sur le Forum afin de continuer la discussion.
Le fichier que tu indiques avoir joint n'est pas passé. Avant d'envoyer un message, effectue un "Aperçu" et tu vois bien s'il y a un problème. Lors du chargement des fichiers, les messages indiquant qu'un document n'a pas été chargé - le plus souvent parce que trop gros - sont peu visibles.
Je n'ai Excel 2003 à disposition que lundi. Je ne pourrais donc pas voir la chose avant, mais apparemment ce n'est pas à un jour près.
A te relire.
Salut Yvouille,
merci de l'intérêt que tu portes à mon problème, si petit soit-il.
Désolé pour le fichier que je n'ai pas réussi à te transmettre, mais j'espère que cela sera corrigé avec ce nouveau message.
Effectivement, je ne suis plus à une journée près
merci de ton retour
Re,
En message privé tu m'as écrit
Je n'ai jamais utilisé de code FileFormat:=xlOpenXMLWorkbook et il n'y en a pas non plus dans le dernier fichier que tu fournis ; je ne vois donc pas de quoi tu veux parler.Ce que tu m'avais trouvé, ça marche super sur Excel 2010, mais malheureusement, mon utilisateur en question a un Excel 2003, et là, vba ne reconnait pas la commande FileFormat:=xlOpenXMLWorkbook
Dans le code du nouveau fichier ci-joint, j'ai par contre - tout comme tu sembles l'avoir aussi essayé - remplacé le format .xlsx par le format .xls afin que ça passe aussi sur Excel 2003.
Sans macro, je ne pense pas. J'ai par contre modifié le code de manière à ce qu'il ne soit plus déclenché si le nom du fichier commence par "Facture" ; ça devrait donc résoudre ton problème.Peut-on faire en sorte que lorsqu'on ferme le classeur, il y ai création d'un nouveau classeur "Facture3.xls" compatible Excel 2003, et sans la macro ?
A te relire.
Salut Yvouille,
merci pour ta réponse rapide, et tes astuces.
Je viens de tester la nouvelle version, et tout fonctionne correctement !!!
pour info, voici la partie du code de la toute première version que tu avais fait dont je te parlais dans mon message précédent :
ActiveWorkbook.SaveAs Filename:= _
Chemin & "\Facture " & Numéro_facture & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Maintenant, je vais essayer d'appliquer le code dans le fichier définitif, en modifiant simplement le format du compteur en y ajoutant avant le compteur, l'année et le mois.
je ne manquerais pas de faire appel à tes services en cas de nouveau pb !!
merci encore pour tout
Froggy39
après mes dernière petites retouches, tout fonctionne à merveille.
Merci encore pour ton aide.
Froggy39
Bonjour,
je voudrais créer un classeur excel 2010 avec une feuille de route sur chaque page (25 pages au total)
Le numéro d'ordre est situé en case F9 et celui-ci doit s'incrémenter de 25 sur chaque feuille à chaque ouverture de ce classeur
le feuille 1 est numeroté 1 en F9
la 2 est numéroté 2 en F9 ....
à la prochaine ouverture la F9 de la feuille 1 sera numérotée 26, la F9 de la feuille 2 sera numérotée 27 ....
dans affichage code j'ai écris ça :
Private Sub Workbook_Open()
Range("F9") = Range("F9") + 25
ActiveWorkbook.Save
End Sub
et ça sur toutes les feuille + le workbook mais ça fonctionne que sur la feuille 1 .....
help me please ....
fred
Salut Fred et bienvenue sur le Forum,
Tu aurais dû ouvrir un nouveau fil pour ta demande, éventuellement en faisant référence à ce fil-ci si nécessaire.
Je ne pense pas que d'autres membres vont intervenir sur ce fil quand même déjà bien ancien et - personnellement - je n'ai pas trop le temps d'étudier ton problème.
Peut-être à une autre fois.
Cordialement.
Bonjour Yvouille, amnohymne
essai comme ceci
Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
Sheets(i).Range("F9") = Sheets(i).Range("F9") + 25
Next i
ActiveWorkbook.Save
End Sub