Création d'un formulaire

Ah oui d'accord, en effet je n'avait pas vu.

C'est bon c'est niquel !

Merci beaucoup

Dan, j'ai rencontré un autre problème lors du trie des pièces dans les fiches de relance.

Dans ma BDD j'avais des pièces en "NAUT 2 FACES DECOR ALPI" épaisseur 15. Ensuite j'avais "NAUT 2 FACES DECOR ALPI" épaisseur 18 puis une autre pièce de "NAUT 2 FACES DECOR ALPI" épaisseur 15. Ca a créé 3 fiches de relance pour cette matière, dont 2 pour "NAUT 2 FACES DECOR ALPI" épaisseur 15

image

Dans ma BDD j'avais des pièces en "NAUT 2 FACES DECOR ALPI" épaisseur 15. Ensuite j'avais "NAUT 2 FACES DECOR ALPI" épaisseur 18 puis une autre pièce de "NAUT 2 FACES DECOR ALPI" épaisseur 15. Ca a créé 3 fiches de relance pour cette matière, dont 2 pour "NAUT 2 FACES DECOR ALPI" épaisseur 15

Dans la macro Sub Trier(), rajoutez cette ligne juste au dessus du END WITH

.Add Key:=Range("T_Bdd[Ep]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Dites moi

Crdlt

Bonjour Dan,

Ca ne fonctionne pas, ca trie par matière mais ca bloque au moment de retrier par date. Les fiches de relance ne se font donc pas.

Cordialement

Cela n'a pas de sens.

Les fiches relances sont faites avant de retrier par date.
SI les fiches relance ne se font pas c'est que les cellules comportant un Oui sont en rouge.

Vous avez bien mis la ligne dans la macro Trier ??

En effet je m'étais trompé, je l'avais pas mis au dessus le bon End with.

Je me suis rendu compte que mon calcul de coût n'était pas bon, j'ai essayé de le modifier mais ça ne fonctionne pas. J'ai rajouté une colonne "coût fixe/pièce" a côté du coût de revient. Ci dessous mon calcul.

 If WSListe.Range(c.Address).Offset(0, 1) = Materiau And WSListe.Range(c.Address).Offset(0, 2) = Epaisseur Then
                With WSBdd.ListObjects("T_Bdd").DataBodyRange
                    '((((longueur x largeur)/1000000) x Coût de revient/m²) x Qte) + (Coût fixe/pièce x Qté)
                    .item(Lig, 21) = ((((.item(Lig, 12) * .item(Lig, 13)) / 1000000) * WSListe.Range(c.Address).Offset(0, 4)) * .item(Lig, 9)) + (WSListe.Range(c.Address).Offset(0, 5) * .item(Lig, 9))

Heu vous avez encore ajouté une colonne ? Laquelle

Edit : je vois c'est dans la feuille Liste . Mais dans votre formule je ne vois pas d'erreur
Votre colonne Cout fixe est bien en colonne N ?

Si oui, donnez moi le titre de la colonne et les 3 premières valeurs (cout fixe/pièce) N1, N2 et N3. Je ferai un test

Oui dans la feuille Liste, et elle est bien en colonne N

FluxMatièreEpaisseurUnitéCoût de revient /m²Coût fixe/pièceCommentaire
A1NAUT 2 FACES DECOR ALPI15 89 € 34 € Usiné / Prémontage / vernis
A2NAUT 2 FACES DECOR ALPI18 92 € 22 € Usiné / vernis
B0NAUT 2 FACES DECOR ALPI15 89 € 34 € Usiné / Prémontage chant / vernis

Bon j'ai pris la donnée ci-dessous. le cout de production est de 23,132592

presse papier01

En prenant la même donnée, je tombe à 55.56€. Vous avez copier le code que je vous ai envoyé ou vous trouvez 23€ avec l'ancien code ?

Edit : C'est car le coût de revient à changé, en fait mon code était bon je ne l'avait surement pas testé avec la bonne matière.

Y'a t-il moyen de créer une formule pour compléter les coûts de revient des lignes déjà enregistrées ? j'ai testé des trucs mais c'était pas concluant

Y'a t-il moyen de créer une formule pour compléter les coûts de revient des lignes déjà enregistrées ? j'ai testé des trucs mais c'était pas concluant

C'est pour pouvoir remettre toute la base de données à jour à cause de l'ajout de votre colonne ?

Exactement !

Dans le code que j'ai préparé j'ai fait un test sur les données suivantes

Pouvez-vous me dire si les 3 calculs sont corrects ?

presse papier02

Bizarre bizarre, je n'ai pas exactement les mêmes résultats. Avez vous fait attention que les valeurs des colonnes "coûts de revient" avaient changées dans le tableau que je vous ai envoyé à 11h28 ? C'est surement dû à ça

image

Juste ! Désolé les couts au M2 n'étaient pas ceux que vous aviez postés ici --> https://forum.excel-pratique.com/s/goto/988536
Là j'ai ce que vous venez de me poster

Voici le code à tester

Sub Maj()
Dim cel As Range, c As Range
Dim Lig As Integer
Dim Prem
Dim WSListe As Worksheet, WSBdd As Worksheet

Set WSListe = Worksheets("Listes")
Set WSBdd = Worksheets("Bdd")

For Each cel In WSListe.ListObjects("T_Matiere").ListColumns(1).DataBodyRange

    With WSBdd.ListObjects("T_Bdd").ListColumns(14).DataBodyRange
        Set c = .Find(cel, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Prem = c.Address
            Do
                If Range(c.Address).Offset(0, -4) = cel.Offset(0, 1) And Range(c.Address).Offset(0, -3) = cel.Offset(0, 2) Then
                    Lig = c.Row - 1
                    With WSBdd.ListObjects("T_Bdd").DataBodyRange
                    '(((longueur x largeur)/1000000) x coût de revient)x Qte
                        .item(Lig, 21) = ((((.item(Lig, 12) * .item(Lig, 13)) / 1000000) * WSListe.Range(cel.Address).Offset(0, 4)) * .item(Lig, 9)) + (WSListe.Range(cel.Address).Offset(0, 5) * .item(Lig, 9))
                    End With
                End If
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> Prem
        End If
    End With

Next cel
End Sub

Le code balaye sur base des données présentes dans la feuille Listes

Vous pouvez mettre cela dans un nouveau Module. le code pourras servir à remettre tout à jour

Je ne comprends pas, ce code sert à quoi ? Faut-il supprimer l'ancien code de calcul de coût de revient ?

Faut-il supprimer l'ancien code de calcul de coût de revient ?

Non !

Heu ... C'est ce que vous demandé non ? --> https://forum.excel-pratique.com/s/goto/988561

Le code vous met tous les couts de production la colonne U de la feuille BDD
Vous devez l'exécuter séparément bien entendu. Il n'a pas de lien avec le reste des codes

Ahhh oui okay c'est bon je l'ai exécuté.

Par contre il y a des lignes sur lesquels le coût ne se met pas alors qu'il y a toutes les informations nécessaires dans le tableau en feuille Liste. Exemple la ligne 29; 30; 31; 32. C'est du CP CTBX en D2 épaisseur 6 & 15. Lorsque j'exécute la macro rien ne se passe dans la colonne coût de revient

Exemple la ligne 29; 30; 31; 32. C'est du CP CTBX en D2 épaisseur 6 & 15.

Logique puisque dans la colonne Flux de la feuille BDD vous avez 4 flux (D3, D4, D5 et D6) qui ne sont pas repris dans votre feuille Listes

Oui, je viens de m'en rendre compte, je vais compléter le tableau. Merci !

Rechercher des sujets similaires à "creation formulaire"