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.

4'152froggy.xlsm (12.87 Ko)

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

840froggy.zip (7.99 Ko)

Re,

En message privé tu m'as écrit

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

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.

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.

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 ?

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.

A te relire.

1'268froggy-v1.zip (8.38 Ko)

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
Rechercher des sujets similaires à "compteur incremente chaque ouverture"