additionner les nombres d une meme cellule

ivan972

XLDnaute Occasionnel
Bonjour a tous et a chacun,

ma demande est la suivante :

je souhaite additionner les chiffres d une même cellule [/U]en sachant qu elle se presente sous la forme :

distribution : 2750 457 90

l objectif est le suivant : je souhaite creer une nouvelle cellule dans laquelle

- le mot distribution n apparaisse plus
-que la somme des chiffres apparaisse quelque soit les montant affichés ()

PS : la fonction STXT ne fonctionne que si les series presentes le même nombre de caractères donc ca ne convient pas)

Je remercie par avance d une participation enrichissante

ivan
 

job75

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonsoir ivan972,

Voyez le fichier joint avec cette fonction macro :

Code:
Function SommeCel(t)
Dim s
s = Split(Replace(t, ",", "."))
For Each t In s
  SommeCel = SommeCel + Val(t)
Next
End Function
A+
 

Pièces jointes

  • SommeCel(1).xls
    35 KB · Affichages: 90
Dernière édition:

pascal_bidouille

XLDnaute Junior
Re : additionner les nombres d une meme cellule

Salut,

tu peux essayer cela :
Code:
=SIERREUR(CNUM(STXT(A3;1;1));0)+SIERREUR(CNUM(STXT(A3;2;1));0)+SIERREUR(CNUM(STXT(A3;3;1));0)+SIERREUR(CNUM(STXT(A3;4;1));0)+SIERREUR(CNUM(STXT(A3;5;1));0)+SIERREUR(CNUM(STXT(A3;6;1));0)+SIERREUR(CNUM(STXT(A3;7;1));0)+SIERREUR(CNUM(STXT(A3;8;1));0)+SIERREUR(CNUM(STXT(A3;9;1));0)+SIERREUR(CNUM(STXT(A3;10;1));0)+SIERREUR(CNUM(STXT(A3;11;1));0)+SIERREUR(CNUM(STXT(A3;12;1));0)+SIERREUR(CNUM(STXT(A3;13;1));0)+SIERREUR(CNUM(STXT(A3;14;1));0)+SIERREUR(CNUM(STXT(A3;15;1));0)+SIERREUR(CNUM(STXT(A3;16;1));0)+SIERREUR(CNUM(STXT(A3;17;1));0)+SIERREUR(CNUM(STXT(A3;18;1));0)+SIERREUR(CNUM(STXT(A3;19;1));0)+SIERREUR(CNUM(STXT(A3;20;1));0)+SIERREUR(CNUM(STXT(A3;21;1));0)+SIERREUR(CNUM(STXT(A3;22;1));0)+SIERREUR(CNUM(STXT(A3;23;1));0)+SIERREUR(CNUM(STXT(A3;24;1));0)+SIERREUR(CNUM(STXT(A3;25;1));0)+SIERREUR(CNUM(STXT(A3;26;1));0)+SIERREUR(CNUM(STXT(A3;27;1));0)+SIERREUR(CNUM(STXT(A3;28;1));0)+SIERREUR(CNUM(STXT(A3;29;1));0)

Si ta valeur est en A3.
C'est un peu laborieux et cela impose tout de même de connaitre le nombre max de caractères
 

R@chid

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonsoir @ tous,
Avec la macro XL4 : EVALUER()
Voir PJ
@ + +
 

Pièces jointes

  • ivan972.xlsm
    27.4 KB · Affichages: 97
  • ivan972.xlsm
    27.4 KB · Affichages: 83
  • ivan972.xlsm
    27.4 KB · Affichages: 93

Staple1600

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonsoir à tous

Une méthode utilisant EVALUER (MacroXL4)
Avec l'exemple: En A1, on a : distribution : 2750 457 90
1) Nommer ADDITION : =EVALUER(A1) avec le gestionnaire de noms
2) en B1 mettre cette formule :
Code:
=SUBSTITUE(STXT(A1;CHERCHE(": ";A1)+2;9^9);" ";"+")
3) en C1, saisir =ADDITION
on obtient bien 3297

EDITION: Désolé, R@chid , je n'avais pas rafraichi la page.
Je suppose que ta PJ contient peu ou prou la même chose ?
tu peux confirmer ? Comme cela j'irai me coucher direct sans ouvrir ta PJ ;)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : additionner les nombres d une meme cellule

Bonjour ivan972,

(...) PS : la fonction STXT ne fonctionne que si les series presentes le même nombre de caractères donc ca ne convient pas) (...)
Pas si sûr... On pourrait utiliser NBCAR() pour déterminer le nombre de caractères. Je propose plutôt de borner le nombre de caractères pour simplifier la formule :rolleyes:.

Une formule matricielle sans macro XL4. Elle autorise des espaces multiples entre les nombres. Si la chaine de caractères des nombres est vraiment très longue (supérieure à 97 caractères) il faut augmenter dans la formule les expressions $99 et $100.

La formule matricielle en B2 à tirer vers le bas:
VB:
=SOMME(SIERREUR(CNUM(STXT(SUBSTITUE(A2;"distribution :";"");PETITE.VALEUR(SI(STXT(" " & SUBSTITUE(A2;"distribution :";"") & " ";LIGNE($1:$99);1)=" ";LIGNE($1:$99);"");LIGNE($1:$99));  PETITE.VALEUR(SI(STXT(" " & SUBSTITUE(A2;"distribution :";"") & " ";LIGNE($1:$99);1)=" ";LIGNE($1:$99);"");LIGNE($2:$100))  - PETITE.VALEUR(SI(STXT(" " & SUBSTITUE(A2;"distribution :";"") & " ";LIGNE($1:$99);1)=" ";LIGNE($1:$99);"");LIGNE($1:$99)) ));0))

Formule matricielle: Elle doit être validée par la combinaison des touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée comme une formule classique.
Si la validation matricielle est correcte, alors Excel entoure la formule d'accolades {=.......}.
Chaque fois que cette formule sera modifiée, la validation devra se faire par Ctrl+Maj+Entrée. Les accolades apparaissent à la validation et ne doivent pas être saisies au clavier.
 

Pièces jointes

  • ivan972- Somme contenu une cellule v1.xlsx
    9.8 KB · Affichages: 54
Dernière édition:

job75

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonjour le fil, le forum,

Juste pour préciser qu'on peut encore simplifier la fonction VBA :

Code:
Function SommeCel(t)
For Each t In Split(Replace(t, ",", "."))
  SommeCel = SommeCel + Val(t)
Next
End Function
En effet dans une boucle For...Next la ligne du For n'est exécutée qu'une fois.

Fichier (2).

A+
 

Pièces jointes

  • SommeCel(2).xls
    35.5 KB · Affichages: 54

job75

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Re,

Pour compléter la solution de R@chid :

Code:
=SOMME(SI(ESTNUM(-MesValeurs);--MesValeurs))
Formule matricielle à valider par Ctrl+Maj+Entrée.

A+
 

Pièces jointes

  • R@chid(1).xls
    24.5 KB · Affichages: 64

R@chid

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonjour @ tous,
j'ai pas fait attention au mot "distribution :"
on peut faire sans matricielle Job75,

MesValeurs :
Code:
=EVALUER("{"&SUBSTITUE(SUBSTITUE(Feuil1!$A2;"distribution : ";);" ";";")&"}")

et puis en B2,
Code:
=SOMME(MesValeurs)

voir pj

@ + +
 

Pièces jointes

  • ivan972.xlsm
    10.3 KB · Affichages: 53
  • ivan972.xlsm
    10.3 KB · Affichages: 63
  • ivan972.xlsm
    10.3 KB · Affichages: 60

ivan972

XLDnaute Occasionnel
Re : additionner les nombres d une meme cellule

Et bien pour une participation enrichissante je suis servi.
Merci a job75, a P.bidouille, a rachid, a staple1600, a mapomme.
je vais tester chacune de proposition faite. Si je ne reviens pas vers vous pour cette question soit c est parfait soit quelqun peut appeler les secours. Merci encore a tous et bonne continuation
ivan
 

ROGER2327

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonjour à tous.


Une autre :
Code:
Σ désigne
Code:
=SI(Feuil1!$A1="";"";EVALUER("="&SUBSTITUE(SIERREUR(DROITE(Feuil1!$A1;1+NBCAR(Feuil1!$A1)-CHERCHE(":";":"&Feuil1!$A1&":";2));Feuil1!$A1);" ";"+")&"+0"))


Bonne journée.


ℝOGER2327
#7322


Mercredi 18 Palotin 141 (Canotage - Vacuation)
18 Floréal An CCXXII, 1,3261h - corbeille-d'or
2014-W19-3T03:10:58Z
 

Pièces jointes

  • Somme bizarre.xlsm
    11 KB · Affichages: 41
Dernière édition:

KenDev

XLDnaute Impliqué
Re : additionner les nombres d une meme cellule

Bonjour à tous,

Une possibilité universelle par fonction personalisée si il s'agit d'additionner des naturel, (quoique inclure des décimaux ne serait pas beaucoup plus compliqué.

- 2750 457 90 renvoie 3297

- "mon grand père possédait 3 fermes totalisant 47,58 hectares ainsi que 17 vaches et 453 canards renvoie 578

Cordialement

KD

VB:
Function SumIntern#(ByVal Txt$)
    Dim i&, a$, d As Byte, n$
    For i = 1 To Len(Txt)
        a = Right(Left(Txt, i), 1): d = Asc(a)
        If Not (d > 47) * (d < 58) = 1 Then
            If n <> "" Then SumIntern = SumIntern + CDbl(n)
            n = ""
        Else
            n = n & a
        End If
    Next i
    If n <> "" Then SumIntern = SumIntern + CDbl(n)
End Function
 

Staple1600

XLDnaute Barbatruc
Re : additionner les nombres d une meme cellule

Bonsoir à tous


Il manquait une solution avec RegExp, la voici ;)
Code:
Sub Test()
[A1] = "distribution : 2750 457 90"
MsgBox SOMMECHIFFRE([A1])
[B1].FormulaLocal = "=SOMMECHIFFRE(A1)"
End Sub
Code:
Function SOMMECHIFFRE(ByVal x As Range) As Double
Dim rex As Object 'credit: Doug Glancy/25612
Dim xMh As Object
Dim xMhs As Object, NOMBRES As Double
Set rex = CreateObject("vbScript.RegExp")
With rex
    .Global = True: .Pattern = "\d+"
If .Test(x.Text) Then
    Set xMhs = .Execute(x)
    For Each xMh In xMhs
        If IsNumeric(Replace(xMh, ",", "")) Then
        NOMBRES = NOMBRES + Replace(xMh, ",", "")
        End If
    Next xMh
    End If
End With
SOMMECHIFFRE = NOMBRES
End Function
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T