Somme dans une seule cellule (VBA)

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
Comment créer une somme des éléments
Somme_une_cellule.jpg
contenus dans une cellule !
Merci à l'avance et bonne journée !
 

Paf

XLDnaute Barbatruc
Bonjour JBARBE,

il y sans doute une solution formule...., mais, une proposition fonction personnalisée:

S'il s'agit de dénombrer les valeurs contenues dans une cellule:
VB:
Function NbCel(Cell)
Dim T1
T1 = Split(Cell, vbLf)
NbCel = UBound(T1) + 1
End Function

et en B1: =NbCel(A1)

S'il s'agit d'effectuer la somme des numériques de la cellule:
VB:
Function SommeCel(Cell)
Dim T1, i As Byte, S As Integer
T1 = Split(Cell, vbLf)
For i = LBound(T1) To UBound(T1)
    SommeCel = SommeCel + CDbl(T1(i))
Next
End Function

et en B1 : =SommeCel(A1)

A+
 

Paf

XLDnaute Barbatruc
Re,

Effectivement, pas pris en compte les retours à la ligne finaux qui rajoutent 1 élément dans le tableau:

VB:
Function SommeCel(Cell)
Dim T1, i As Byte, S As Integer
T1 = Split(Cell, vbLf)
For i = LBound(T1) To UBound(T1)
    If T1(i) <> "" Then SommeCel = SommeCel + CDbl(T1(i))
Next
End Function

Function NbCel(Cell)
Dim T1
T1 = Split(Cell, vbLf)
For i = LBound(T1) To UBound(T1)
    If T1(i) <> "" Then NbCel = NbCel + 1
Next
End Function

Pas prévu de détection d'erreur si un élément non numérique se glisse dans la cellule.

A+
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re,

la prise en compte de la remarque précédente:

VB:
Function SommeCel(Cell)
Dim T1, i As Byte, S As Integer
T1 = Split(Cell, vbLf)
For i = LBound(T1) To UBound(T1)
    If IsNumeric(T1(i)) Then SommeCel = SommeCel + CDbl(T1(i))
Next
End Function

A+