Additionner et compter chiffres dans une seule cellule séparés par des tirets

Caninge

XLDnaute Accro
Bonsoir à tous,

j'ai un petit problème à résoudre, j'ai cherché et ne trouve pas.

Comme à mon habitude je vous envoie un fichier.

C'est mieux pour se faire comprendre.

Merci d'avance
 

Pièces jointes

  • Addition de nombres dans une seule cellule.xlsm
    8.1 KB · Affichages: 67
  • Addition de nombres dans une seule cellule.xlsm
    8.1 KB · Affichages: 60

CISCO

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour

Et une version très proche, mais ne faisant pas toujours les tests avec autant de nombres. Dans les fichiers précédents, si on a un nombre à 3 chiffres, par ex 450, on fait les tests avec des nombres de 1 à 999. Dans le nouveau fichier ci-dessous, on fait les tests avec les nombres de 1 à 450.
Maintenant, sur mon ordi, avec Excel 2007, cela fonction pour tout nombre < 1048576. On ne gagne pas grand chose de ce coté là.

@ plus

P.S : Je viens de modifier la définition de MAX car il y manquait un $
 

Pièces jointes

  • Addition de nombres dans une seule celluleter.xlsm
    10 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonsoir à tous,

Voyez le fichier joint (sans VBA) et les noms définis deb et nb.

Formule matricielle en C3, à valider par Ctrl+Maj+Entrée :

Code:
=SOMME(SI(ESTNUM(-STXT(B3;deb;nb));--STXT(B3;deb;nb)))
En D3 et E3 formules classiques.

Bonne soirée.
 

Pièces jointes

  • Addition de nombres dans une seule cellule(1).xlsx
    16.7 KB · Affichages: 57

job75

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Re,

Pour ceci :

Colonne E : Faire la moyenne de la colonne B (en une seule fois sur une seule formule)

Si vous voulez vous passer des colonnes C et D entrez en E3 cette formule matricielle :

Code:
=MOYENNE(SI(ESTNUM(-STXT(B3;deb;nb));--STXT(B3;deb;nb)))
J'en profite pour définir deb sans la fonction SI, la formule est un peu plus légère.

Edit : j'ai aussi retiré les + 1 dans cette formule, ils n'étaient pas nécessaires.

Fichier (2).

A+
 

Pièces jointes

  • Addition de nombres dans une seule cellule(2).xlsx
    16.9 KB · Affichages: 41
Dernière édition:

job75

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour Caninge, le fil, le forum,

Avec le nom défini matrice plus besoin de validation matricielle, en B3:B6 et E3:E6 :

Code:
=SOMME(matrice)
=MOYENNE(matrice)
Fichier (3).

Edit : la formule de matrice peut être simplifiée :

Code:
=SI(deb;--STXT(Feuil1!$B3;deb;nb))
Bonne journée.
 

Pièces jointes

  • Addition de nombres dans une seule cellule(3).xlsx
    16.7 KB · Affichages: 42
Dernière édition:

job75

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Re,

Ce nom défini matrice est puissant.

On peut aussi s'en servir pour lister les nombres, voyez le fichier joint.

Ici il faut le nom deb défini avec la fonction SI comme au post #17.

A+
 

Pièces jointes

  • Liste de nombres dans une seule cellule(1).xlsx
    17 KB · Affichages: 43
Dernière édition:

Caninge

XLDnaute Accro
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour à tous,

je vois qu'il y a pléthores de réponses.

Il y a bien longtemps que je n'étais pas venu sur le site.

Toujours aussi actif et disponible, toujours une personne pour vous dépanner.

je vous remercie.
 

CISCO

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour à tous

@ job75 : Bien vu tout cela, comme d'hab. Moi aussi, j'avais commencé avec un
Code:
SI(STXT("-"&Feuil1!$B3;LIGNE(INDIRECT("1:"&NBCAR(Feuil1!$B3)));1)="-")
puis après, j'ai vu que je n'en avais pas besoin, mais je n'avais pas trouvé l'astuce pour obtenir la liste des nombres
Code:
--STXT(Feuil1!$B3;deb;nb)

@ plus
 

PMO2

XLDnaute Accro
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour,

Une autre approche avec des fonctions personnalisées.
Au choix, une fonction matricielle OU une fonction dont le second argument fourni le total (1), le nombre (2), la moyenne (3).

Copiez le code suivant dans un module Standard
Code:
''' AU CHOIX '''

'### Fonction matricielle (retourne un tableau dans un Variant) ###
Function zaza(Cellule As Range) As Variant
Dim var
Dim i&
Dim x#
Dim cpt&
Dim T(1 To 3)
'---
var = Split(Cellule, "-")
For i& = LBound(var) To UBound(var)
  If IsNumeric(var(i&)) Then
    x# = x# + var(i&)
    cpt& = cpt& + 1
  End If
Next i&
T(1) = x#
T(2) = cpt&
T(3) = x# / cpt&
zaza = T
End Function

'### Fonction simple (retourne un numérique dans un Double) ###
Function toto(Cellule As Range, Total_Nombre_Moyenne) As Double
Dim var
Dim i&
Dim x#
Dim cpt&
Dim T(1 To 3)
'---
var = Split(Cellule, "-")
For i& = LBound(var) To UBound(var)
  If IsNumeric(var(i&)) Then
    x# = x# + var(i&)
    cpt& = cpt& + 1
  End If
Next i&
T(1) = x#
T(2) = cpt&
T(3) = x# / cpt&
toto = T(Total_Nombre_Moyenne)
End Function

Voir la pièce jointe pour l'utilisation.
 

Pièces jointes

  • Addition de nombres dans une seule cellule_pmo.xlsm
    20 KB · Affichages: 13

job75

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonjour Patrick (PMO2),

Il me semble que dans cette affaire le seul problème est d'obtenir une matrice des nombres.

En VBA il suffit d'une ligne de code :

Code:
Function matrice(t$)
matrice = Evaluate("{" & Replace(t, "-", ";") & "}")
End Function
Fichier joint avec les 3 formules.

A+
 

Pièces jointes

  • Addition de nombres dans une seule cellule VBA(1).xlsm
    22 KB · Affichages: 29

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonsoir,

>En conjuguant les 2 formules serait-il possible d'avoir aussi la moyenne directement.(#6)

S'il s'agit de faire directement la moyenne avec une fonction perso.

Code:
Function Moy(c)
  Moy = Evaluate("sum(" & Replace(c, "-", "+") & ")") / (UBound(Split(c, "-")) + 1)
End Function

jb
 

Pièces jointes

  • Addition de nombres dans une seule cellule-2.xls
    29 KB · Affichages: 13
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Additionner et compter chiffres dans une seule cellule séparés par des tirets

Bonsoir

Hello CISCO,

L'astuce dans tout cela c'est surtout la formule =TROUVE("-";Feuil1!$B3&"-";deb)-deb

A+

Et puis, l'astuce, c'est aussi, une fois, de travailler avec "-"&B3, et l'autre, avec B3&"-", histoire de trouver le nombre de caractères de chaque nombre dans le contenu des cellules (pour B3="4-10-5-4-6-10", avec 2-1, 5-3, 7-6 et ainsi de suite (2= position du 1er - dans B3&"-", 1 = position du 1er - dans "-"&B3, 5= position du 2nd - dans B3&"-", 3 = position du 2nd - dans "-"&B3)).

@ plus
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 313
Messages
2 087 166
Membres
103 486
dernier inscrit
mss.santana