RE,
Le fichier comporte 2 procédures VBA exécutées à partir des boutons Calculs et RAZ..
Pour les visualiser : ALT F11 pour ouvrir l'éditeur VBE.
Les procédures sont placées dans les modules Feuil1(Données) et Feuil2(Calculs), en haut à gauche de ton écran.
On utilise l'objet "Dictionary" pour établir la liste sans doublons des articles dans le tableau de la feuille Données.
Cette liste sans doublons est restituée dans le tableau de la feuille Calculs.
A partir de cette liste, on calcule (par formules), la moyenne des stocks et la somme des Besoins...
Seul le tableau en feuille Données doit être modifié.
Fais des essais, en ajoutant ou supprimant des éléments en feuille Données puis en cliquant sur le bouton Calculs.
A te relire, peut-être.
Cdlt.
Private Sub cmdCalcul_Click()
'Déclaration des variables
Dim lo As ListObject, lo2 As ListObject
Dim rCell As Range, Cell As Range
Dim Dict As Object
Dim Arr() As Variant
'Optimisation code (gel affichage)
Application.ScreenUpdating = False
'Initialisation des variables
Set lo = Me.ListObjects(1)
Set lo2 = Worksheets("Calculs").ListObjects(1)
Set Dict = CreateObject("Scripting.Dictionary")
'Réinitialisation tableau
With lo2
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
Set rCell = .InsertRowRange.Cells(1)
End With
For Each Cell In lo.ListColumns(1).DataBodyRange
Dict(Cell.Value) = ""
Next Cell
'Restitution liste sans doublons
rCell.Resize(Dict.Count, 1).Value = Application.Transpose(Dict.keys)
'Activation feuille Calculs
With Worksheets("Calculs")
.Activate
.Cells(1).Select
End With
'RAZ variables
Set rCell = Nothing
Set Dict = Nothing
Set lo2 = Nothing: Set lo = Nothing
End Sub
Private Sub cmdRaz_Click()
'Réinitialisation tableau en conservant les formules et sa mise en forme
With ActiveSheet.ListObjects(1)
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
End With
End Sub