Gestion bon de commande

Rappelez vous que je vous ai dit ne pas avoir prévu l'année derrière le bon de commande puisque vous avez la date en G8.

Je ne pense pas que vous allez repartir à 0 chaque année. Le mieux est de continuer votre numérotation quelque soit l'année. En tout cas c'est ce que je vous conseille

J'apprécie fortement votre conseil, mais mon chef préfère avoir l'année après chaque numéro. dommage.

Merci pour votre aide Dan et votre temps. Merci beaucoup

Ah ces chefs...
Bon je vais revoir le code en question.
Est-ce qu'il veut le / après ou un tiret suffit ? Donc soit Ti002/2021 ou Ti002-2021.
Je vous conseille le tiret

Si ok, je vous reposterai le code Nouveau BC plus tard

J'aurais préférer avoir un chef comme vous. Merci

Bonjour

Essayez avec ce code

Sub NouveauBC()

Sheets("BON DE COMMANDE").Copy After:=Sheets(Sheets.Count)

With ActiveSheet
    If .Range("G8") = "" Then .Range("G8") = Date
    'Numero du bon
    .Range("F6") = "TI" & _
        Format(Right(Sheets("Recap").Range("A" & Sheets("Recap").Range("A" & Rows.Count).End(xlUp).Row), 4) + 1, "000") & _
        "-" & Year(.Range("G8"))
    'Nom du bon de commande
    .Name = .Range("F6")
    'Supprimer Bouton Nouveau BC
    .Buttons(1).Delete
End With
End Sub

Le code fait ceci :
- Crée votre bon de commande à compléter depuis la feuille Bon de commande Modèle.
- Ajoute les numéro en F6 et la date du jour en G8
- Renomme la feuille Créée selon l'info dans la cellule F6
- Supprime le bouton Nouveau BC pour vous éviter de crée un nouveau BC (le nouveau BC se crée toujours depuis le bon de commande Modèle

Dites moi si ok, avant d'aller plus loin

Bonjour Cher Dan

je viens de tester votre travail et ça marche sauf que dans la feuille RECAP des données n'ont pas été copiées telles que : NUMERO DU BON & LE MONTANT

sauf que dans la feuille RECAP des données n'ont pas été copiées telles que : NUMERO DU BON & LE MONTANT

Oui c'est normal car j'ai dû adapter le code en fonction de nos échanges de courriers. Fais ceci :

1. Remplacez le code Imprimer par celui-ci

Sub Imprimer()
Dim Dlg As Long

With Sheets("Recap")
    Dlg = .Range("A" & Rows.Count).End(xlUp).Row
    If ActiveSheet.Range("F6") = "" Or ActiveSheet.Range("G8") = "" Or ActiveSheet.Range("C9") = "" Then
        MsgBox "Informations de Date, Numero ou Fournisseur manquantes !"
        Exit Sub
    End If
    .Range("A" & Dlg + 1) = Left(ActiveSheet.Range("F6").Value, 6)
    .Range("B" & Dlg + 1) = ActiveSheet.Range("G8").Value
    .Range("C" & Dlg + 1) = ActiveSheet.Range("C9").Value
    .Range("D" & Dlg + 1) = ActiveSheet.Range("G28").Value
End With

With ActiveSheet
    .PrintOut
    .DrawingObjects.Delete
End With
End Sub

Le code fait ceci :
- enregistre les données en feuille Recap
- Imprime le bon
- Supprime le bon Impression pour vous éviter de cliquer une deuxième fois dessus et d'aller ajouter deux fois la référence du bon en feuille recap

Faites un test et si ok, je vous donne la suite

Edit :

1. Attention j'ai modifié cette ligne -->

.Range("A" & Dlg + 1) = Left(ActiveSheet.Range("F6").Value, 6)

2. dans le code Nouveau BC, à la ligne Range(F6)=..., à la fin, il est mentionné "000". Ajoutez un 0; donc vous devez avoir ceci --> "0000"

J'apprécie votre patience et votre effort. il y a toujours un bug au niveau de des numéros de bons RECAP.

Merci de voir où est le problème.

capture d ecran 2021 06 02 091424

J'apprécie votre patience et votre effort. il y a toujours un bug au niveau de des numéros de bons RECAP.

Merci de voir où est le problème.

capture d ecran 2021 06 02 091424

Non le bug est dû au fait que vous n'avez pas changé les deux points que je vous ai donnés dans mon dernier post à --> EDIT

Pour avoir le cœur net voici ce que j'ai :

capture d ecran 2021 06 02 092927

et j'ai toujours ça :(

capture d ecran 2021 06 02 092947

Ok mais en A2 vous avez TI0001-2021. Or vous ne pouvez avoir en colonne A que le numéro TI0001 sans l'année

Sinon je dois revoir le fichier.

Dites moi

Le problème c'est que mon chef insiste sur l'année, sinon tout le reste est bon pour moi. Merci de rectifier le tir.

.Range("A" & Dlg + 1) = Left(ActiveSheet.Range("F6").Value, 6)

je l'ai remplacé par ceci :)

.Range("A" & Dlg + 1) = Left(ActiveSheet.Range("F6").Value, 11)

en côtoyant les pros je deviens aussi connaisseur :)

Dommage ça n'a pas marché :(

capture d ecran 2021 06 02 095017

.Range("A" & Dlg + 1) = Left(ActiveSheet.Range("F6").Value, 11)

Non ce n'est pas juste. vous devez conserver le 6.

En colonne A, vous ne devez avoir que TI0001 --> donc 6 caractères. Si vous preniez la valeur dans F6, plus besoin de l'instruction LEFT

Le plus simple est que vous donne le fichier je pense

6gestion-bc1.xlsm (37.00 Ko)

Pour contourner ça, peut on utiliser la fonction concaténer. en A nous aurons TI0001 en E nous aurons 2021 et en F les deux séparés par -. que pensez-vous

Pour contourner ça, peut on utiliser la fonction concaténer. en A nous aurons TI0001 en E nous aurons 2021 et en F les deux séparés par -. que pensez-vous

Nul besoin, cela serait plus compliqué. On peut arranger cela avec le code.

A noter que dans le dernier fichier et considérant que la colonne A contient uniquement les valeur TI sans l'année, j'ai ajouté un code qui par double click sur le BC concerné vous permet d'afficher directement le Bon de commande.

Nul besoin, cela serait plus compliqué. On peut arranger cela avec le code.

Ok. ça serait gentil de votre part, et je suis ouvert à toutes vos propositions.

Rechercher des sujets similaires à "gestion bon commande"