Additionner les 2 chiffres d'un nombre

Résolu
killox -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je voudrais une formule qui me permette d'additionner les 2 chiffres d'une meme cellule si le total est superieur a 10.Exemple 18= 1+8 soit un total de 9

12 réponses

Résumé de la discussion

La discussion porte sur une formule Excel destinée à additionner les chiffres d'une cellule, comme transformer 18 en 1+8 et obtenir 9, afin d'évaluer rapidement la somme numérique d'un nombre. Plusieurs répondants proposent des approches variées, notamment une solution simple avec D5 = ENT(D5/10) + MOD(D5;10), et une autre formule matricielle utilisant SOMME, STXT et INDIRECT. Des échanges portent sur l'intérêt des accolades et sur la nécessité éventuelle de valider par CTRL+SHIFT+ENTREE dans certaines versions, certains précisant que le comportement varie selon que l'on utilise une formule matricielle. En cas de version ancienne d'Excel, les résultats peuvent diverger et nécessiter une décomposition pas à pas, tandis que des contributions convergent vers une approche fiable et compatible avec les versions récentes.

Bobot (l'IA à votre service)
  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    si le nb est en D5

    =ENT(D5/10)+MOD(D5;10)

    bonne suite
    1
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Bonjour,

      et si jamais il fallait faire la somme de tous les chiffres d'un nombre, quel que soit le nombre de caractères, jusqu'à ce que cette somme soit comprise entre 1 et 9, il faudrait absolument passer par une macro non ?
      0
    2. antipolis a Messages postés 17152 Statut Membre 2 917
       
      => chossette9
      Faut pas nous torturer comme cela.
      On ne vous a rien fait.
      ;=)
      0
    3. ccm81 Messages postés 11033 Statut Membre 2 434
       
      bonjour chossette9

      je pense, et avec quelque chose comme ça

      Public Function SommeChiffres(n As Long) As Long
      If n < 10 Then
        SommeChiffres = n
      Else
        SommeChiffres = SommeChiffres(n \ 10) + (n Mod 10)
      End If
      End Function

      bonne journée
      0
  2. antipolis a Messages postés 17152 Statut Membre 2 917
     
    Le nombre entier entre 0 et 99 est entré en "A1".

    =SI(ENT(A1/10)+MOD(A1;10)>10;ENT(A1/10)+MOD(A1;10);"")
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Ou alors :
    =SI(NBCAR(A1)=2;CNUM(GAUCHE(A1;1))+CNUM(DROITE(A1;1));"Valeur erronnée en A1")
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour à la foule,

    Et un autre début de piste somme des chiffres d'une cellule sans condition
    matricielle
    =SOMME(1*STXT(A2;LIGNE(INDIRECT("1:"&ENT(LOG(A2))+1));1))
    ce n'est pas de moi (pas encore bien compris d'ailleurs)
    :o)

    et pour le seuil de 9 ou autre
    =MIN(9;SOMME(1*STXT(A2;LIGNE(INDIRECT("1:"&ENT(LOG(A2))+1));1))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut le fil,

    pour faire la somme des chiffre d'une cellule quel que soit le nombre je propose cette formule

    =SOMME(1*STXT(A2;LIGNE(INDIRECT("1:"&ENT(LOG(A2))+1));1))

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    salut michel_n

    ce n'est pas un début de piste mais carrément la solution finale !!!
    quant à la logique de la bête, je vais la garder pour les longues soirées d'hiver ...

    bonne journée
    0
  8. antipolis a Messages postés 17152 Statut Membre 2 917
     
    Oh moi, je ne dis plus rien.
    Vous êtes tous trop forts.
    0
  9. antipolis a Messages postés 17152 Statut Membre 2 917
     
    Ça ne fonctionne pas.

    Ce n'est pas LIGNE(), mais LIGNES() qu'il faut utiliser.

    Alors, je retire ce que j'ai écrit à 14:54.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Non c'est LIGNE comme indiqué.
      Michel_m a précisé matricielle.
      Donc au lieu de valider par un simple "Entrée", tu dois la valider par CTRL+MAJ (Shift) + Entrée.
      Donc retape ta formule, tape F2 et CTRL+SHIFT+ENTREE
      0
  10. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut tout le monde,

    Me suis penché sur la formule proposée par Michel_m et Mike31.
    C'est très bien vu...

    Je tente ici une petite explication, non pas pour les deux protagonistes sus-cités, mais si jamais quelqu'un venait à passer par ici (et par hasard) et se poserait la même question : KessKeC'est KeCetteFormule???

    Décortiquons la, par l'exemple, en A2 saisir 1664 (qui constitue un assez beau nombre...) :
    En A3 saisir la formule magique :
    =SOMME(1*STXT(A2;LIGNE(INDIRECT("1:"&ENT(LOG(A2))+1));1))

    1- LOG(A2) ou comment faire de l'esbrouffe dans les formules Excel...
    Une propriété de LOG nous dit que :
    Puisque 1664 = 1,664x10^3 alors :
    LOG(1664) = LOG(1,664) + LOG(10^3) = LOG(1,664) + 3
    Or LOG(1,664) < 1 (toujours!!!! Sisi j'vous assure! La preuve : on sait que LOG(1,664) < LOG(10) et LOG(10) = 1 CQFD... S'il reste des sceptiques, révisez vos Maths...)
    Donc ENT(LOG(1664)) = 3
    Si on lui ajoute 1 comme dans la formule (ENT(LOG(A2))+1) on obtient systématiquement le nombre de caractères contenus dans la cellule A2. D'ou l'esbrouffe de la-dite formule....
    On peux effectivement simplifier en remplaçant : ENT(LOG(A2))+1 par : NBCAR(A2).

    Bon on en est donc, dans l'exemple 1664, à ENT(LOG(A2))+1 = 4

    2- LIGNE(INDIRECT("1:4")) simule un tableau de chiffres consécutifs de 1 à 4, soit ici la matrice {1,2,3,4}
    Ce tableau, puisque l'on valide la formule en "Matricielle" va donc être utilisé valeur après valeur : 1 puis 2 puis 3 puis 4 selon la matrice obtenue.

    3- STXT(texte;N° du caractère dans le texte;nombre de caractères)
    Dans l'exemple 1664, STXT(1664;1;1) = 1, STXT(1664;2;1) = 6, STXT(1664;3;1) = 6, STXT(1664;4;1) = 4.
    C'est ce que fait (et à quoi sert LIGNE(INDIRECT)) :
    STXT(A2;LIGNE(INDIRECT("1:"&ENT(LOG(A2))+1));1)

    4- le 1* dans : 1*STXT
    Si je ne m'abuse sert à convertir les données de STXT en nombre pour pouvoir les utiliser dans la fonction SOMME
    Le *1 dans les formules matricielles est utilisé pour pour convertir les Vrai/Faux en 1/0 ou --

    5- SOMME Est ce utile de développer...

    C'est tout bon?
    Interrogation écrite la semaine prochaine...

    Bonne journée à toutes et tous!

    EDIT : Ajout dans l'explication du 1* (4)
    Cordialement,
    Franck P
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Salut Pijaku,

      As tu de l'aspirine à me passer, log(xx) c'est terrible pour ma t^te ?
      :-)
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Michel,
      Désolé, pas d'aspirine... Dans la fonction publique l'armoire à pharmacie ne doit pas contenir ce genre de produits... On a juste droit au sparadrap!!!
      Par contre, l'apéro si tu repasses à 12h00...
      Bonne journée.

      Ps : te tracasse pas trop avec LOG, remplace le par NBCAR...
      0
  11. antipolis a Messages postés 17152 Statut Membre 2 917
     
    Ça fonctionne bien de 1 à 9 en entrée, ensuite j'ai toujours 1 comme résultat. Malgré le respect de la séquence de touches.
    Peut-être que Excel 2002 ne sait pas faire ?
    j'ai tenté de décomposer la formule, mais ça me donne vraiment des résultats bizarroïdes.
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      J'ai testé sous Excel 2007, aucun problème.

      Peut être qu'effectivement ta version est trop ancienne.
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      ensuite j'ai toujours 1 comme résultat Boudiou!!! As tu validé ta formule par CTRL+SHIFT+Entréé???
      Non.
      Donc suis la démarche ici présentée
      0
    3. antipolis a Messages postés 17152 Statut Membre 2 917
       
      Si, si.
      0
  12. antipolis a Messages postés 17152 Statut Membre 2 917
     
    Et pourtant les fonctions utilisées sont bien dans Excel 2002.
    Mais ...

    J'ai déjà installé l'Office 2007, mais je n'aime pas du tout la nouvelle ergonomie.
    Et malheureusement, je n'ai pas pu mettre les deux versions en parallèle, le temps de m'y mettre, car il y avait des conflits.
    Je suis donc resté avec l'Office 2002.
    Mais je pense qu'un de ces jours, je vais devoir passer à la version 2007 tout de même.

    Je viens de voir que "pijaku" avait posé une longue explication sur le fonctionnement de la formule.
    Je vais lire cela avec attention.

    Cordialement.
    0
    1. Lentz
       
      Chez mwa non plus ça marche pas et j'ai office 2003 !!
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      0
    3. Lentz
       
      Je veux bien te croire mais quand je vais sur ton fichier ou c'est écris 17 suffit que je clik dessus pour que ça affiche 1 ...
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Donc, pour la 4ème fois sur ce sujet...... A LIRE


      Eh les gars!!! Mike31 et Michel_m!! vous êtes ou?
      Encore à l'apéro ces deux là........

      Non je suis calme et détendu.....
      0
  13. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir le fil,
    Eh ben! Quel déploiement sur cette discussion, Pour ma part je n'étais plus à l'apéro ni à la sieste. Mais en cours, et oui en dehors du forum il y a de la demande. Je crois que tout à été dit, il est vrai dans mes explications rapides j'ai omis de préciser qu'il s'agissait d'une formule matricielle
    0