XL 2013 somme a partir d'une sélection

RomainPOIRET

XLDnaute Occasionnel
Bonjour à tous,

Sur mon tableau de droite j'ai plusieurs références (lait, noisette ...) et sur la colonne de gauche la quantité PAR BARQUETTE,
La BARQUETTE est la zone de droite, je cherche à automatiser la somme de cette zone dans mon tableau en fonction des références (ex : 10 LAIT = 10 référence de LAIT),

1673444305715.png


Dans mon tableau je dois avoir la quantité de LAIT présent dans la zone,

Voici le fichier joint,

Cordialement,

Romain
 

Pièces jointes

  • Plan de remplissage.xlsm
    150.1 KB · Affichages: 12
Solution
Bonjour,
Fonction à mettre dans un module :
Nota, la fonction Find n'a pas été utilisée car ne donne pas le résultat escompté sur des cellules mergées.
VB:
Function Get_Pack(ToFind As String, Plage As Range)
Dim Cell As Range
Dim Dic: Set Dic = CreateObject("Scripting.Dictionary")
    For Each Cell In Plage.Cells
        If InStr(Cell, vbLf) Then
            V = Split(Cell, vbLf)
            If Dic.Exists(V(1)) _
             Then Dic(V(1)) = Dic(V(1)) + Val(V(0)) _
             Else Dic.Add V(1), Val(V(0))
        End If
    Next
    If Dic.Exists(ToFind) Then Get_Pack = Dic(ToFind) Else Get_Pack = ""
End Function
Formule à mettre dans le tableau de droite (DF6) et à tirer vers le bas :
Code:
=Get_Pack($DE6;$D$5:$DB$19)

fanch55

XLDnaute Barbatruc
Bonjour,
Fonction à mettre dans un module :
Nota, la fonction Find n'a pas été utilisée car ne donne pas le résultat escompté sur des cellules mergées.
VB:
Function Get_Pack(ToFind As String, Plage As Range)
Dim Cell As Range
Dim Dic: Set Dic = CreateObject("Scripting.Dictionary")
    For Each Cell In Plage.Cells
        If InStr(Cell, vbLf) Then
            V = Split(Cell, vbLf)
            If Dic.Exists(V(1)) _
             Then Dic(V(1)) = Dic(V(1)) + Val(V(0)) _
             Else Dic.Add V(1), Val(V(0))
        End If
    Next
    If Dic.Exists(ToFind) Then Get_Pack = Dic(ToFind) Else Get_Pack = ""
End Function
Formule à mettre dans le tableau de droite (DF6) et à tirer vers le bas :
Code:
=Get_Pack($DE6;$D$5:$DB$19)
 

Discussions similaires

Réponses
2
Affichages
314
Réponses
20
Affichages
604

Statistiques des forums

Discussions
315 091
Messages
2 116 109
Membres
112 662
dernier inscrit
lou75