EXCEL Opérations sur nombres

Résolu
Aztek33 Messages postés 553 Date d'inscription   Statut Membre Dernière intervention   -  
chtilou Messages postés 1704 Statut Membre -
Bonjour,

Je souhaiterai faire des opérations automatiques sur excel de telle manière que chaque chiffres d'un nombre soit additionné + 1 ou +2 et aussi soustrait -1 ou -2. Exemple :

Le nombre : 38461 ---> +1 ==> 49572
--------------------------------- -1 ==> 27350

C'est à dire qu'on fait l'opération : 3+1, 8+1, 4+1, 6+1 et 1+1.
---------------------------------------puis : 3-1, 8-1, 4-1, 6-1 et 1-1

La grande difficulté c'est de toujours garder 1 seul chiffre : 9+1=0 et non pas 10. Donc en théorie, le nombre 99999 avec l'opération +1 donnera 00000.

Bon, j'espère que vous comprenez, ça à l'air loufoque. J'espère aussi qu'il existe une solution.

Merci d'avance

Aztek
Configuration: Windows Vista
Firefox 2.0.0.14

8 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    J'avais 5 min à perdre donc voilà la même valable qcq soit le nombre de chiffres :

    Sans les 0 non significatifs :
    =SOMMEPROD(MOD((STXT(A1;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));1)+B1)/10;1)*10^
    (NBCAR(A1)+1-LIGNE(INDIRECT("$1:$"&NBCAR(A1)))))
    =SOMMEPROD(MOD((STXT(A1;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));1)+B1)/10;1)*10^(NBCAR(A1)+1-LIGNE(INDIRECT("$1:$"&NBCAR(A1)))))


    Avec les 0 non significatifs :
    =DROITE(REPT(0;NBCAR(A1))&SOMMEPROD(MOD((STXT(A1;LIGNE(INDIRECT("$1:$"&
    NBCAR(A1)));1)+B1)/10;1)*10^(NBCAR(A1)+1-LIGNE(INDIRECT("$1:$"&NBCAR(A1)))));NBCAR(A1))
    =DROITE(REPT(0;NBCAR(A1))&SOMMEPROD(MOD((STXT(A1;LIGNE(INDIRECT("$1:$"&NBCAR(A1)));1)+B1)/10;1)*10^(NBCAR(A1)+1-LIGNE(INDIRECT("$1:$"&NBCAR(A1)))));NBCAR(A1))


    Attention au copier/coller, tout doit être écrit bout à bout, et CCM ajoute des - parfois
    eric

    PS pour vaucluse et chtilou : dans votre tableau -1 et -2 sont interdits.... et si on laisse passer 0-1 donne 1 (au lieu de 9 ?)
    1
    1. chtilou Messages postés 1704 Statut Membre 523
       
      Salut Eric,
      tu es vraiment un pro.
      Je cherche encore à comprendre ta formule magique.
      Chapeau bas Monsieur.
      0
      1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > chtilou Messages postés 1704 Statut Membre
         
        Itou, je n'ai pas vérifié, je sais que ce n'est pas la peine...(si ça ne marche pas, c'est moi qui me trompe)... et surtout,je ne pense pas que l'on puisse balancer une telle formule sans l'avoir vérifiée.

        mon chapeau à la même hauteur que celui de Chtilou... et vraiment sans problème,d'habitude, je ne met que des casquettes !!!.

        :-):-):-)

        Ceci dit, ma compréhension de ta formule est aussi à la même hauteur que celle de Chtilou.

        A Chtilou: bienvenue au club des fans d'Eric..... par de problème, c'est le meilleur.

        CRDLMNT

        PSN°1, pour Eric: le -1, ou -2 ne marche pas dans mon fichier car j'ai limité la valeur des cellules de 1 à 3. Mais si tu enlèves la validation, ça marche très bien (non mais?????)

        PSN°2: pour Argixu(*1), au cas où: tu lises t'as déja vu un crapaud avec une casquette?????

        Nota(1*):un petit clin d'oeil à quelqu'un sur ces forums que j'aime beaucoup, excusez moi.
        0
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour , Aztek 33
    Un beau challenge que vous lancez là.
    Ci dessous ma proposition, ce n'est pas très simple et il y a sans doute mieux, mais, si j'ai bien testé tous les cas de figure, ça marche.
    https://www.cjoint.com/?fih7cua6gj

    Mon exemple est basé sur:
    Nombre à 10 chiffres maximum
    Addition de 1, 2 ou 3* seulement.
    Evidemment on peut faire mieux.mais en attendant les meilleurs de ces forums...!
    nota: j'ai bloqué à 3 la colonne Ajout, mais il est surement possible de passer au dela sans modifier le tableau, en tout cas pas plus loin que 90 pour que les totaux restent à 2 chiffres.
    Bonne route. Amusez vous bien
    CRDLMNT
    PS: la "clef" est dans la feuille 2

    https://www.cjoint.com/?fih7cua6gj
    0
  3. g Messages postés 1285 Statut Membre 578
     
    Bonjour,

    Un autre "sac de noeuds" :
    Pour A4=99999 ou xxxxx
    et A1=1 ou 2 ou -1 ou -2 etc...

    =SI(GAUCHE(A4;1)+$A$1>9;0;GAUCHE(A4;1)+$A$1)&SI(GAUCHE(DROITE(A4;4)*1)+$A$1>9;0;GAUCHE(DROITE(A4;4)*1)+$A$1)&SI(GAUCHE(DROITE(A4;3)*1)+$A$1>9;0;GAUCHE(DROITE(A4;3)*1)+$A$1)&SI(GAUCHE(DROITE(A4;2)*1)+$A$1>9;0;GAUCHE(DROITE(A4;2)*1)+$A$1)&SI(DROITE(A4;1)+$A$1>9;0;DROITE(A4;1)+$A$1)

    Bonne journée.
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonjour g
      Pas faux non plus, mais là aussi,si je peux me permettre, cette option est assujettie au nombre de caractères du nombre considéré.
      par ailleurs, il semble que la fonction STXT soit plus avantageuse à utiliser que la formulation (GAUCHE(DROITE.... pour le même résultat.

      BCRDLMNT
      0
      1. chtilou Messages postés 1704 Statut Membre 523 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour à tous,
        je m'y risque... ;-)
        http://www.cijoint.fr/cjlink.php?file=cj200805/cijuU5ZoAA.xls
        Je suis parti de ton classeur Vaucluse.
        0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour tout le monde,

    moi aussi j'aime bien les challenges :-)
    Ma proposition (avec le nombre en A1 et la valeur à ajouter/soustraire en B1) :
    =SOMMEPROD(MOD((STXT(A1;LIGNE($1:$5);1)+B1)/10;1)*10^(6-LIGNE($1:$5)))
    ou bien si l'on veut les 0 non significatifs devant :
    =DROITE("00000"&SOMMEPROD(MOD((STXT(A1;LIGNE($1:$5);1)+B1)/10;1)*10^(6-LIGNE($1:$5)));5)

    Pour simplifier dans un 1er temps j'ai considéré que le nombre faisait toujours 5 chiffres.

    eric
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      bjour'ric
      J'ai beau essayé en vérifiant que je n'ai pas sauté la miondre virgule, la formule renvoie VALEUR
      Qu'est ce qui m'échappe?
      Bonne journée
      0
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour vaucluse,

        si tu as essayé presque tout de suite oui c'est normal, j'ai fait une petite correction depuis.
        et pour la 2nde formule CCM rajoute un - , je recolle les formules :
        =SOMMEPROD(MOD((STXT(A1;LIGNE($1:$5);1)+B1)/10;1)*10^(6-LIGNE($1:$5)))
        =DROITE("00000"&SOMMEPROD(MOD((STXT(A1;LIGNE($1:$5);1)+B1)/10;1)*10^(6-LIGNE($1:$5)));5)
        reessaie stp
        0
      2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Je crois avoir réussi, j'avais repèré les caprices de la copie CCM, mais je n'avais pas percuté que ta solution ne fonctionne que sur 5 chiffres impèrativement.
        En fait, à plus de 5 elle prend les 5 premiers et à moins de 5, elle retourne "VALEUR"
        Toujours sauf erreur de ma part.
        Merci pour les info
        A+
        CRDLMNT
        0
      3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        oui, sur 5 chiffres uniquement pour l'instant, le #valeur! est normal si moins de 5.
        On peut la rendre dynamique selon la longueur du nombre mais au prix d'un alourdissement (avec des nbcar() et des indirect() ) ce qui n'est peut-être pas nécessaire.
        Je verrai après selon les besoins du demandeur.
        Bonne journée :-)
        eric
        0
      4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        OK, Eric, la remarque est aussi valable pour la solution de g, est on peut bien sur les reprendre pour tenir compte du nombre de caractères, mais à quel prix?!!!!
        Moi, je n'ai pas osé avec l'option que j'ai proposée,et j'ai souhaité prendre en compte d'entrée le nombre de caractères. ......mais effectivement on peut tout regrouper dans une même formule(bonjour le libellé et les fautes de signes et de code!).
        Ceci dit, c'est toujours ça de plus d'appris, bien que j'aurais du mal à le refaire.
        Bien cordialement.
        Bonne journée
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Aztek33 Messages postés 553 Date d'inscription   Statut Membre Dernière intervention   56
     
    Merci pour votre aide, je vois qu'il y a des pros.
    eriiic, je suis évidemment moins calé que vous et je n'arrive pas à utiliser votre formule : je la c/c en C1 avec le nombre à modifié en A1 et le chiffre a additionner en B1 ? Ou pas du tout ?
    là, j'ai :
    --A--------- B------- C
    12345-----1------NOM?

    Maintenant j'ai un nouveau challenge, faire la meme chose avec des lettres en faisant avancer d'un cran dans l'alphabet :
    AGU --> BHV
    KDE --> LEF
    et bien sur :
    ZZZ --> AAA

    ça vous semble jouable ?

    Merci

    Aztek
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonjour
      Au cas où Eric ne revienne pas tout de suite:
      _pour les lettres , je ne peux rien pour vous, mais peut être notre Eric nationnal...!
      _pour la formule pas grand chose, sauf un point, important à mon avis:

      lorsqu'on fait un copier collé de CCm vers excel, il se passe bien des choses bizarre dans la reproduction. Peut être est ce là votre problème, car d'après ce qu'écrit Eric, il faut bien placer effectivement votre chiffre en A1, votre ajout en B1 et la formule....où vous voulez.

      Mais vérifiez bien qu'elle soit reproduite fidèlement, il s' y introduit parfois pendant le transfert des signes incongrus qui n'ont rien à y faire

      Bonne chance

      CRDLMNT
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Re
      pour compléter au niveau des lettres, vous pouvez essayer:
      1° sur une feuille masquée, construire un tableau avec
      en colonne A: l'alphabet à partir de A
      en colonne B l'alphabet à partir de B, termlié par A en face de Z
      Nommez ce champ :TABLE
      Sur votre feuille de résultat: vos codes originaux en colonnes A
      Pour la colonne B en vis à vis:
      en B1=
      =RECHERCHEV(STXT(A1;1;1);TABLE;2;0)&RECHERCHEV(STXT(A1;2;1);TABLE;2;0)&RECHERCHEV(STXT(A1;3;1);TABLE;2;0)
      La partie de la formule entre chaque & étant à reproduire autant de fois que vous voulez de code en A, en décalant à chaque fois le code STXT(A1;1;1) devient (A1;2;1) pour la deuxième lettre, (A1;3;1) pour la 4° et ainsi de suite
      0
    3. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Encore moi:
      en voila une autre qui peiut aller plus loin, mais s'arrète au nombre de caractères de la cellule A1:
      =SI(STXT(A1;1;1)="";"";RECHERCHEV(STXT(A1;1;1);TABLE;2;0)&SI(STXT(A1;2;1)="";"";RECHERCHEV(STXT(A1;2;1);TABLE;2;0)&SI(STXT(A1;3;1)="";"";RECHERCHEV(STXT(A1;3;1);TABLE;2;0)&SI(STXT(A1;4;1)="";"";RECHERCHEV(STXT(A1;4;1);TABLE;2;0)))))
      A allonger comme vous souhaitez, sur le même principe pour la partie STXT
      CRDLMNT
      PS:Cette formule ne donne évidemment que le décalage de une lettre (A=B, B=C si vous en voulez plus, ça risque d'être plus complexe étant donné que l'addition ne fonctionne pas.
      (Une solution consisterai par macro à modifier la colonne B de la feuille de base pour y mettre la correspondance souhaitée)
      Je réfléchi encore un peu sur le sujet, c'est amusant
      CRDLMNT
      0
      1. chtilou Messages postés 1704 Statut Membre 523 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Re coucou,
        je propose ceci:
        http://www.cijoint.fr/cjlink.php?file=cj200805/cij9SjyJun.xls
        tout en me doutant que Maitre Eric va "encore" nous faire un show. ;-)
        0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir tout le monde,

    Chtilou m'a demandé une explication de la formule, je la met ici si d'autres sont interessés.
    J'ai fait de mon mieux mais ce n'est pas très facile à expliquer, donc lire lentement.... ;-)

    http://www.cijoint.fr/cjlink.php?file=cj200805/cij5Tf4CRV.xls
    Bonne lecture à tous
    eric
    0
    1. chtilou Messages postés 1704 Statut Membre 523
       
      Re Riko,
      je ne l'ai pas encore lue mais je te remercie d'avance.
      Sympa de ta part.
      0
      1. chtilou Messages postés 1704 Statut Membre 523 > chtilou Messages postés 1704 Statut Membre
         
        Même avec les explications, je peine... ;-(
        Étant mazo plus par principe que par nature je m'accroche Maître.
        Merci pour ce développement.
        Amicalement.
        0
  8. belgeorges
     
    je veux des cours pour excel 2007
    0
  9. Aztek33 Messages postés 553 Date d'inscription   Statut Membre Dernière intervention   56
     
    CHTILOU j'ai utilisé ta feuille excel et ça fonctionne bien, merci. J'ai besoin uniquement jusqu'à +3 et -3 ce qui est très bien. seulement est-il possible d'avoir la page de référence sur une autre feuille pour pouvoir avoir la Feuil1 seulement avec les lettres et pouvoir l'imprimer?
    0
    1. chtilou Messages postés 1704 Statut Membre 523
       
      Bonjour Aztek.

      Oui c'est possible...
      0