Création Bon de Commande

Dan a écrit :

Pourquoi ne pas mettre un seul bouton sur la feuille devis. Le fait de cliquer dessus exécuterait le code qui irait controler si des quantités existent dans les feuille A à V et compléter le devis.

Oui bonne idée je ne l'avais pas vu comme ceux-ci.

Je ne peux pas faire un devis modèle car des fois il peut y avoir un devis avec 50 pièces à l'interieur.

ça par contre je sais pas si c'est possible d'ajouter le nombre de ligne en fonction du nombre de produit qui à la case quantité remplie.

Cordialement

Re

Votre fichier en retour avec l'adaptation du code et le bouton déplacé sur la feuille Devis.

Une fois les quantités complétée dans chacune des feuilles A à V, cliquez sur le bouton pour faire votre devis

Un message informe que les 15 lignes sont complétées et on sort de la macro.

Cordialement

C'est genial !

Par contre :

  • Est-ce que c'est possible de débloquer à 15 lignes car defois il pourra avoir plus de 50 produits sur le DEVIS ?
  • Et si je rajoute des feuilles à quel endroit je dois faire la modification pour l'ajouter ?

Sub Panier()

Dim plageProd As Range, cell As Range

Dim i As Integer, dlg As Integer, x As Integer

Dim a As String

With Sheets("DEVIS FR")

dlg = .Range("A" & .Rows.Count).End(xlUp).Row

If dlg >= 18 Then

a = MsgBox("Des modifications vont être apportées sur le bon de commande. Voulez-vous continuer ?", vbYesNo + vbQuestion + vbDefaultButton2)

If a = vbNo Then Exit Sub

If a = vbYes Then

On Error Resume Next

.Range("A18:A" & dlg).EntireRow.Delete

.Range("A18:E18").ClearContents: dlg = 18 'efface le contenu du Bon de Commande précédent

On Error GoTo 0

Else: dlg = dlg + 1

End If

ElseIf dlg < 18 Then dlg = 18

End If

End With

For i = 2 To Sheets.Count

With Sheets(i)

Set plageProd = .Range("A9:A" & .Range("A" & .Rows.Count).End(xlUp).Row) 'repère les cellules non-vides de la colonne A

End With

'nbArt = WorksheetFunction.CountIf(plageProd.Offset(, 3), ">0") 'combien de qté renseignées?

'compteur = 9 'puisque bon de Cmde démarre en ligne 9

With Sheets("DEVIS FR")

For Each cell In plageProd

If .Range("A" & .Rows.Count).End(xlUp).Row = 32 Then MsgBox "Vous avez atteint le maximum de lignes complétée": Exit Sub

On Error Resume Next

x = WorksheetFunction.Match(Sheets(i).Range("A" & cell.Row), .Columns("A").EntireColumn, 0)

If Err = 0 And cell.Offset(, 3) > 0 Then

.Range("A" & x).Resize(1, 3) = cell.Resize(1, 3).Value

.Range("E" & x) = .Range("C" & x) * .Range("D" & x)

ElseIf x > 0 And cell.Offset(, 3) = 0 Then

.Range("A" & x & ":E" & x).Delete Shift:=xlUp

If dlg > 18 Then dlg = dlg - 1

ElseIf Err > 0 And cell.Offset(, 3) > 0 Then

If .Range("A18") > 0 Then

.Range("A18").EntireRow.Insert

.Range("A19:E19").Copy

.Range("A18:E18").PasteSpecial Paste:=xlPasteFormats

Application.CutCopyMode = False

End If

.Range("A18").Resize(1, 5) = cell.Resize(1, 5).Value

.Range("E18") = .Range("C" & dlg) * .Range("D" & dlg)

dlg = dlg + 1

Else

End If

x = 0

Next cell

End With

Next

'With Sheets("DEVIS FR")

'dlg = .Range("A" & .Rows.Count).End(xlUp).Row

'.Range("E" & dlg + 1) = WorksheetFunction.Sum(Range(.Cells(18, 3), .Cells(dlg, 3)))

'End With

Range("A18").Select

End Sub

J'ai trouvé pour ajourner le nombre de ligne s'il y a n'a plus.

Juste 2 questions :

Si je rajoute une feuille, comment l'intégrer dans la macro ?

Est-ce que c'est possible de trier les quantité dans le DEVIS par ordre croissant ?

Est-ce que c'est possible de mettre un bouton qui efface ou remette à zéro le devis/ et les quantités ? (exemple s'il veut reprendre à zéeo)

Merci

re

Si je rajoute une feuille, comment l'intégrer dans la macro ?

La macro prévoyait déjà ce cas. Donc c'est ok

Est-ce que c'est possible de trier les quantité dans le DEVIS par ordre croissant ?

Est-ce que c'est possible de mettre un bouton qui efface ou remette à zéro le devis/ et les quantités ? (exemple s'il veut reprendre à zéeo)

Voyez le fichier joint qui fait ce que vous demandiez Tri (automatique à chaque génération de bon de commande) et remise zéro via un bouton orange

Cordialement

GENIAL DAN !!!!!! On tient le bon bout

Par contre une macro qui permette de remettre les quantités à 0 sur tout les catalogues c'est possible ?

Ou faut que je fasse une macro par page avec un bouton par page avec cette fonction ? (suppression des quantités)

Quand j'efface avec le bouton orange le bilan du DEVIS ne reviens pas à zéro (cf doc)

Cordialement

re

Quand j'efface avec le bouton orange le bilan du DEVIS ne reviens pas à zéro (cf doc)

Je n'ai pas compris ... si vous cliquez sur le bouton orange, tout les données sur bon de commande sont effacées et de cette sorte le devis revient à 0.

Par contre une macro qui permette de remettre les quantités à 0 sur tout les catalogues c'est possible ?

Oui tout à fait

Par contre je vois que vous avez ajouté une feuille Modele, cela impose de modifier le code. Veillez à avoir le bon fichier sans quoi cela peut poser souci dans le code

d'autre part vous parliez de limiter à 15 lignes, ici vous en mettez 600 ?? Qu'en est-il ?

Cordialement

Dan a écrit :

Je n'ai pas compris ... si vous cliquez sur le bouton orange, tout les données sur bon de commande sont effacées et de cette sorte le devis revient à 0.

Oui tout s'efface mais pas la partie

TOTAL HT

TOTAL REMISE

MONTANT TV

TOTAL TTC

Dan a écrit :

Par contre je vois que vous avez ajouté une feuille Modele, cela impose de modifier le code. Veillez à avoir le bon fichier sans quoi cela peut poser souci dans le code

C'est possible de partir du modèle et de créer un devis et garder le modèle sans modif ?

Dan a écrit :

d'autre part vous parliez de limiter à 15 lignes, ici vous en mettez 600 ?? Qu'en est-il ?

J'ai mit 600 pour pas que ça bloque si j'ai plus de 15 produits dans ma liste. ça fonctionne bien.

re

Oui tout s'efface mais pas la partie TOTAL HT...

Ce sont des formules qui se trouve là. Pourquoi effacer cette zone ??

C'est possible de partir du modèle et de créer un devis et garder le modèle sans modif ?

Tout est toujours possible mais cela oblige à revoir de nouveau le code car le fait que vous avez ajouté une feuille Modele oblige à modifier aussi. Dites ce que vous souhaitez faire exactement afin que l'on puisse figer le code final. désolé mais si vous décidez de passer par le VBA, il faut savoir ce qui est à faire au final. Chaque changement désiré oblige à revoir tout ou en partie.

J'ai mit 600 pour pas que ça bloque si j'ai plus de 15 produits dans ma liste. ça fonctionne bien.

Précédemment vous demandiez de limiter à 15 ? Je ne comprends pas la logique car si vous mettez à 600, à quoi bon mettre une limite.

Pour ce qui concerne la remise à 0 des quantités, mettez ce code dans un module et associer le à un bouton sur votre feuille devis

Sub reinit()
Dim i As Byte
For i = 3 To Sheets.Count
If Sheets(i).Name <> "MODELE" And Sheets(i).Name <> "DEVIS FR" Then
    With Sheets(i)
        .Range("D9:D" & .Range("D" & .Rows.Count).End(xlUp).Row).ClearContents
    End With
End If
Next
End Sub

Cordialement

Dan a écrit :

Ce sont des formules qui se trouve là. Pourquoi effacer cette zone ??

En cliquant sur le bouton bleu pour supprimer correctement au final.

En gros pour terminer, faudrait que le modèle soit copier créer le devis et copie colle les données dans le devis.

Je pense que je m'étais mal exprimé je pense, car je cherchais sans limite mais en mettant 600 j'ai plus de limite.

Merci la macro fonctionne parfait.

Re

En cliquant sur le bouton bleu pour supprimer correctement au final.

Je pense que l'on ne se comprend pas. Je vois pas ce que vous voulez supprimer.

Précédemment vous parliez du bouton Orange et ici du bouton bleu ?

La suppression concerne quelle feuille et quelle colonne et quelle cellule ?

En gros pour terminer, faudrait que le modèle soit copier créer le devis et copie colle les données dans le devis.

Pas compris non plus sachant que les deux feuilles sont identiques. Lorsque vous cliquez sur le bouton Orange, cela vide la feuille Devis FR et elle devient identique à la feuille Modele.

Quand j'utilise le bouton orange => cela supprime tout les LIGNES du devis.

sauf que les lignes concernant les TOTAUX HT/TVA/TTC resté malgré tout remplie malgré les lignes vident du devis.

Mais le problème est réglé car avec la macro bleu (supprimer les quantités dans les catalogues) celle-ci permet de remettre à zéro les catalogue + remettre à zéro les lignes concernant les TOTAUX HT/TVA/TTC

PROBLEME 1 = OK

Le deuxième point cétait d'avoir un modèle de devis qui soit la base de mon document. C'est à dire des qu'on clique sur le bouton noir on puisse avoir un devis complété avec les informations des catalogues.

ET qu'il est toujours un modèle de devis.

Exemple en situation : je veux faire deux commande mais pas avec les mêmes produits je veux comparer, le fait d'avoir deux devis c'est plus simple.

Cordialement

Re

Quand j'utilise le bouton orange => cela supprime tout les LIGNES du devis.

sauf que les lignes concernant les TOTAUX HT/TVA/TTC resté malgré tout remplie malgré les lignes vident du devis.

??? là j'arrive pas à comprendre comment vous avez des totaux alors qu'il s'agit de formules qui calculent en fonction des données allant de H18 à Hxxx. D'où je repose ma question de quelles feuilles parlez vous TOTAUX HT/TVA/TTC ? C'est sur la feuille Devis ou les autres.

Si ce sont les feuilles A à V, vous n'aviez jamais demandé que les quantité se vident si l'on vide les lignes dans devis FR et cela vaut mieux de les vider par un autre boutons sachant que vous avez aussi parlé de pouvoir modifier une quantité dans une des feuilles et qu cela se répercute sur la feuille Devis FR.

Exemple en situation : je veux faire deux commande mais pas avec les mêmes produits je veux comparer, le fait d'avoir deux devis c'est plus simple.

Attention que si vous ajoutez une feuille DEVIS en plus de celle existante, le code ne va plus fonctionner correctement. A ce stade, vous ne pouvez dans votre fichier avoir que deux feuilles (MODELE et DEVIS FR)

A ce sujet dans la macro SUB PANIER, si vous laissez la feuille MODELE dans votre fichier, veuillez modifier la ligne de code

For i = 2 To Sheets.Count

par

For i = 3 To Sheets.Count

Si vous laissez uniquement la feuille DEVIS FR comme je le vois dans le fichier V7, la modification n'est pas à faire

Cordialement

Rechercher des sujets similaires à "creation bon commande"