XL 2016 vba-code

Hamza21

XLDnaute Nouveau
Bonjour
je suis coincé aidez moi stp
j'ai un fichier Excel qui peut très bien m'aider sur mon travail .
j'ai met un fichier de saisie et de calcul mes données, j'ai réussie de mètre le Button saisie comme il faut et comme je veut, mais j'ai rien a comprendre pour le Button CALCUL, j'aime bien quand je clic sur calcul le fichier me calculer la quantité produite par client et la quantité non conforme, peut quelqu'un m'aider sur le code de ''CALCUL''

Merci d'avance
 

Pièces jointes

  • Controle Moulage 2023.xlsm
    382.7 KB · Affichages: 8

cp4

XLDnaute Barbatruc
C'est ma dernière intervention.
1- tu ajoutes une feuille que tu renommes CommeTCD.
2 - tu ajoutes les entetes de colonnes comme l'image ci-dessous
1676572463635.png


3 - tu copies et colles ce code dans un module standard
Code:
Option Explicit
Sub FiltreSimple()
   Dim Fs As Worksheet, Fc As Worksheet, dico As Object, c, i As Long, Tb()
   Dim X As Long, Y As Long, Z As Double

   Set Fs = ThisWorkbook.Worksheets("saisie")
   Set Fc = ThisWorkbook.Worksheets("CommeTCD")
   Set dico = CreateObject("scripting.dictionary")
   Application.ScreenUpdating = False

   'on affiche toutes les données s'il y a un filtre actif
   ThisWorkbook.Worksheets("saisie").ListObjects("TbSaisie").AutoFilter.ShowAllData
   'on efface toutes les lignes de la nouvelle feuille nommée commetcd
   Fc.Range("A1").CurrentRegion.Offset(1).Clear
   'on récupère toutes les données dans un tableau
   Tb = [Tbsaisie].Value
   'Avec un dictionnaire on récupre tous les cilents sans doublons
   For i = 1 To UBound(Tb)
      If Tb(i, 2) <> "" Then
         dico(Tb(i, 2)) = ""
      End If
   Next i

   If dico.Count > 0 Then

      i = 2
      With Worksheets("saisie")
         'on fait une boucle pour filtrer les lignes sur chaque client
         For Each c In dico.keys
            .ListObjects("Tbsaisie").Range.AutoFilter Field:=2, Criteria1:=c
            X = Range("Tbsaisie").ListObject.ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible).Count
            Y = WorksheetFunction.Subtotal(103, [Tbsaisie[Rebut ]])
            Z = (Y / X)
            With Fc
               .Cells(i, 1) = c
               .Cells(i, 2) = X
               .Cells(i, 3) = Y
               .Cells(i, 4) = Z
               .Cells(i, 4).NumberFormat = "0.00%"
               i = i + 1
            End With

         Next
      End With
   End If

   ThisWorkbook.Worksheets("saisie").ListObjects("TbSaisie").AutoFilter.ShowAllData

   MsgBox "Traitement terminé!"
   Application.ScreenUpdating = True

   Set Fs = Nothing
   Set Fc = Nothing
   Set dico = Nothing

End Sub
4- tu exécutes le code
 

cp4

XLDnaute Barbatruc
Merci et désolé pour votre temps ,cela m'a aidé beaucoup.
De rien. je t'ai envoyé un message privé dans boite que n'a surement pas consulté.
D'après ce que j'ai vu dans ton fichier, je dois te dire que tu auras de très mauvaise surprises.
Comme tu n'as pas été très explicite, j'ai préféré m'en tenir à ce que j'ai compris c'est à dire au même résultat qu'avec un TCD.

Bonne continuation.
 

Discussions similaires

Réponses
3
Affichages
262
Réponses
93
Affichages
2 K
Réponses
17
Affichages
625

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972