Somme de différentes valeurs contenues dans une cellule

BChaly

XLDnaute Occasionnel
Bonsoir,

Les cellules contenues dans la colonne "B2:B6" contiennent différentes valeurs.

En jonglant avec des formules contenues dans un tableau séparant les valeurs "D1:F7",
j'obtiens en "B7" la somme souhaitée.

Le problème, est que ceci ne fonctionne pas, si les valeurs sont supérieures à 9. (voir fichier joint)

Est-il possible de faire la somme de ces valeurs sans macro?

Merci pour votre aide.

Cordialement,

BChaly
 

Pièces jointes

  • SommeMultiValeurs.xlsx
    9.9 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Bonsoir à tous

BChaly
Si tu avais utilisé le moteur de recherche du forum, tu aurais trouvé réponse à ta question avant d'ici la poser dans les archives du forum ;)
Voir EVALUER et macro XL4
D'ailleurs récemment R@chid à poster ce type de formule dans une discussion proche de la tienne
 

BChaly

XLDnaute Occasionnel
Re : Somme de différentes valeurs contenues dans une cellule

Bonsoir JM,

Merci pour ta réponse. Cette fonction "EVALUER" que je découvre, est très intéressante,
et je pense que tu fais référence à la discussion du 06/05.

Mais comment l'adapter à ma demande?

Le code suivant dans le gestionnaire des noms:
Code:
=EVALUER("{"&SUBSTITUE(SUBSTITUE(Sheet1!$B2;"a";);" ";";")&"}")

Ainsi que la formule suivante en "D2" (pour la valeur "a"):
=somme(MesValeurs)

me renvoient une erreur.

Que dois-je modifier?

Cordialement,

BChaly
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Bonsoir BChaly, Jean-Marie,

Problème intéressant, voyez le fichier joint et cette fonction macro :

Code:
Function SommeTexte(r As Range, a) As String
'a doit être un vecteur colonne
Dim ub%, t, i&, s, j%
ub = UBound(a)
ReDim t(1 To r.Count, 1 To ub)
For i = 1 To r.Count
  For Each s In Split(r(i)) 'le séparateur est l'espace
    For j = 1 To ub
      If Right(s, Len(a(j, 1))) = a(j, 1) Then t(i, j) = Val(s)
    Next
  Next
Next
For j = 1 To ub
  SommeTexte = SommeTexte & " " & Application.Sum(Application.Index(t, , j)) & a(j, 1)
Next
SommeTexte = Mid(SommeTexte, 2)
End Function
Elle est utilisée en B7 avec cette formule :

Code:
=SommeTexte(B2:B6;{"a";"b";"c"})
Nota : les textes "a" "b" "c" peuvent être des textes quelconques.

A+
 

Pièces jointes

  • SommeMultiValeurs(1).xls
    49 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Re,

Si comme sur l'exemple les textes "a" "b" "c" sont constitués d'une seule lettre et placés dans une cellule (B1) :

Code:
Function SommeTexte$(r As Range, t$)
Dim L%, tablo, i&, s, j%
L = Len(t)
ReDim tablo(1 To r.Count, 1 To L)
For i = 1 To r.Count
  For Each s In Split(r(i)) 'le séparateur est l'espace
    For j = 1 To L
      If Right(s, 1) = Mid(t, j, 1) Then tablo(i, j) = tablo(i, j) + Val(s)
    Next
  Next
Next
For j = 1 To L
  SommeTexte = SommeTexte & " " & Application.Sum(Application.Index(tablo, , j)) & Mid(t, j, 1)
Next
SommeTexte = Mid(SommeTexte, 2)
End Function
Fichier (2).

A+
 

Pièces jointes

  • SommeMultiValeurs(2).xls
    48.5 KB · Affichages: 23

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Bonjour le fil, bonjour R@chid, heureux de te croiser,

Avec un tableau VBA à une seule dimension c'est plus simple et plus rapide :

Code:
Function SommeTexte$(r As Range, t$)
Dim L%, tablo, i&, s, j%
L = Len(t)
ReDim tablo(1 To L)
For i = 1 To r.Count
  For Each s In Split(r(i)) 'le séparateur est l'espace
    For j = 1 To L
      If Right(s, 1) = Mid(t, j, 1) Then tablo(j) = tablo(j) + Val(s)
    Next
  Next
Next
For j = 1 To L
  SommeTexte = SommeTexte & " " & tablo(j) & Mid(t, j, 1)
Next
SommeTexte = Mid(SommeTexte, 2)
End Function
Avec cette manière de faire on gagne 40% sur la durée d'exécution pour le fichier (2).

A+
 

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Re,

Une autre solution par formule matricielle, à valider par Ctrl+Maj+Entrée :

Code:
=SOMME(SI(ESTNUM(CHERCHE("a";" "&B3:B7));--STXT(" "&B3:B7;CHERCHE("a";" "&B3:B7)-2;2)))&"a "&SOMME(SI(ESTNUM(CHERCHE("b";" "&B3:B7));--STXT(" "&B3:B7;CHERCHE("b";" "&B3:B7)-2;2)))&"b "&SOMME(SI(ESTNUM(CHERCHE("c";" "&B3:B7));--STXT(" "&B3:B7;CHERCHE("c";" "&B3:B7)-2;2)))&"c"
Bémol : elle ne fonctionne qu'avec 1 ou 2 chiffres devant les lettres.

Pour aller jusqu'à 3 chiffres il faut d'abord remplacer chaque espace par 2 espaces :

Code:
=SOMME(SI(ESTNUM(CHERCHE("a";"  "&SUBSTITUE(D3:D7;" ";"  ")  ));--STXT("  "&SUBSTITUE(D3:D7;" ";"  ");CHERCHE("a";"  "&SUBSTITUE(D3:D7;" ";"  ")  )-3;3)))&"a "&SOMME(SI(ESTNUM(CHERCHE("b";"  "&SUBSTITUE(D3:D7;" ";"  ")  ));--STXT("  "&SUBSTITUE(D3:D7;" ";"  ");CHERCHE("b";"  "&SUBSTITUE(D3:D7;" ";"  ")  )-3;3)))&"b "&SOMME(SI(ESTNUM(CHERCHE("c";"  "&SUBSTITUE(D3:D7;" ";"  ")  ));--STXT("  "&SUBSTITUE(D3:D7;" ";"  ");CHERCHE("c";"  "&SUBSTITUE(D3:D7;" ";"  ")  )-3;3)))&"c"
Fichier joint.

A+
 

Pièces jointes

  • SommeMultiValeurs par formule(1).xls
    48 KB · Affichages: 21
Dernière édition:

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Re,

Avec cette solution on peut utiliser SOMMEPROD et éviter la validation matricielle.

Avex un maximum de 10 chiffres :

Code:
=SOMMEPROD(--STXT(SUBSTITUE(" "&B3:B7&" 0a";" ";"         ");CHERCHE("a";SUBSTITUE(" "&B3:B7&" 0a";" ";"         "))-10;10))&"a "&SOMMEPROD(--STXT(SUBSTITUE(" "&B3:B7&" 0b";" ";"         ");CHERCHE("b";SUBSTITUE(" "&B3:B7&" 0b";" ";"         "))-10;10))&"b "&SOMMEPROD(--STXT(SUBSTITUE(" "&B3:B7&" 0c";" ";"         ");CHERCHE("c";SUBSTITUE(" "&B3:B7&" 0c";" ";"         "))-10;10))&"c"
Fichier (2).

A+
 

Pièces jointes

  • SommeMultiValeurs par formule(2).xls
    37 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : Somme de différentes valeurs contenues dans une cellule

Re,

En passant par une cascade de 3 noms définis on obtient des formules "simples".

Voyez ce fichier (3).

Bien noter que mat est un vecteur ligne.

A+
 

Pièces jointes

  • SommeMultiValeurs par formule(3).xls
    37.5 KB · Affichages: 21

BChaly

XLDnaute Occasionnel
Re : Somme de différentes valeurs contenues dans une cellule

Bonsoir R@chid, Bonsoir job75,

De retour, je vois que la discussion s'est prolongée.

Vous êtes vraiment plus que très fort, et certainement des extraterrestres :)

Bravo à tous les deux, et Mille Merci pour ces suggestions.

Cordialement,

BChaly
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 072
Membres
103 110
dernier inscrit
Privé