Numérotation automatique d'un bon commande avec code VBA

Bonjour à tous.
Je suis présentement entrain de finaliser un bon de commande automatisé pour l'entreprise,
J'aimerais avoir un code VBA qui me permet d'avoir une suite automatique pour les n° de bons de commandes sous format "27-04-2022-149" (en jaune) ?

- "27-04-2022" (Date de début)
- "149" (numéro pour commencer)

D'avancer merci pour votre aide.
51test-example.xlsm (100.52 Ko)

Bonjour,

C'est possible, mais il faut disposer d'une base de données des commandes passées, pour éviter tout doublon dans les numéros. La date correspond à la date de commande j'imagine. Les 3 chiffres qui suivent sont à remettre à 0 chaque jour (149 = 149ème commande du 27 avril ?) ou simplement lorsque l'on arrive à 999 ?

Quelques éléments utiles si vous souhaitez vous lancer :

MaDateTxt = Format(Date, "DD-MM-YYYY") 'Date du jour au format JJ-MM-AAAA
MonNumCommande = Application.Max(Range("A:A")) + 1 'Pour chercher le numéro de commande le plus élevé en colonne A et ajouter 1
MonNumCommande = Application.CountIf(Range("B:B"), Date) + 1 'Pour chercher le nombre de commandes du jour et ajouter 1 pour générer un numéro de commande unique

Bonjour Pedro22,

Merci pour votre réponse.

"C'est possible, mais il faut disposer d'une base de données des commandes passées, pour éviter tout doublon dans les numéros"

- Impossible d'en avoir, j'ai commencé par "27-04-2022-149" car c'est le c'est le dernier numéro saisi manuellement.

" Les 3 chiffres qui suivent sont à remettre à 0 chaque jour (149 = 149ème commande du 27 avril ?) ou simplement lorsque l'on arrive à 999 ?

Non, les trois chiffres doivent suivre jusqu'à 999... A propos pour une meilleure et grande marge de numéros, il est préférable de passer à 04 chiffres soit "0149" pour le début.

Ok, mais sans base de données des commandes, on ne peut faire de numérotation automatique valide... Sinon comment éviter de faire plusieurs fois le même numéro de commande ?

Ok et si on faisait plus simple sous format : "Date du jour - Num_commande" .

Une base de données des bons de commandes déjà établis avec une suite d'onglets comme le fichier test précise cette fois ci.

Est ce possible SVP ?

D'avance merci pour votre aide.

52test-example.xlsm (176.46 Ko)

J'ai l'impression qu'on ne se comprend pas...

L'idée n'est pas de stocker tous les bons de commande dans un fichier, c'est vite ingérable et de toute façon le nombre d'onglets est limité. La problème n'est pas non plus la complexité du numéro de commande au format JJ-MM-AAAA-XXXX, ça c'est gérable. Le problème, c'est que la clé de voute d'une numérotation automatique, c'est de disposer d'un historique des tous les numéros de commande déjà édités. Il s'agit donc de créer, dans un fichier dédié, un listing des commandes. Chaque génération d'un bon de commande doit également venir actualiser ce listing, qui permet ainsi de générer des numéros de commande uniques.

Soyons clair, je ne ferais pas ce travail à votre place. Néanmoins, le forum peut vous aider lors de la construction de la ou les macro(s) nécessaire(s) si vous n'y parvenez pas seul.

C'est bon M. Pedro,

J'ai pu trouver la solution avec ça.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [J5]) Is Nothing Then
        Application.EnableEvents = False
        [J5] = Format(Date, "dd-mm-yyyy-") & Val(Split(Target, "-")(3)) + 1
        [K5].Select
    End If
    Application.EnableEvents = True
End Sub

Encore merci pour votre tentative d'aide.

C'est une possibilité (le code est simple et efficace), mais du coup on a toujours le risque de créer des numéros en doublon ou de sauter des numéros. Et il n'y a pas non plus de gestion automatisée de la remise à 0.

L'important est que cela vous convienne, et c'est bien d'avoir pensé à mettre votre solution sur le forum, si ça peut servir à d'autres...

Rechercher des sujets similaires à "numerotation automatique bon commande code vba"