XL 2016 Excel et les grands nombres

Bandoulier

XLDnaute Junior
Bonjour,

Certains d'entre-vous m'ont déjà aidé dans mon problème, mais les solutions n'étaient pas satisfaisantes. Je les en remercie tout de même car ils m'ont permis d'avancer.
Mes soucis sont qu'au delà de 15 chiffres Excel ne sait plus calculer (ou donne des résultats faux).
J'ai réussi à avoir un résultat sur un nombre à 15 chiffres multiplié par 2 grâce à une macro qui transforme le résultat en texte (je ne fais que des multiplications par 2).
Jusque là tout va bien, mais je voudrais maintenant inclure une manip qui peut sembler facile mais qui me bloque car je ne suis pas un expert en VBA.
Je voudrais :
- Me positionner sur la cellule à multiplier
- Lancer ma macro (donc j'aurais un résultat)
- Et qu'en cliquant sur la cellule de destination du résultat, ce résultat s'affiche dans la cellule en question

Ou si vous pensez qu'une autre solution serait plus rapide ... je suis preneur ! (sachant que la cellule de destination n'est jamais au même endroit par rapport à la cellule source)

Merci d'avance à tous ceux qui me permettront d'avancer
Cordialement
 

Bandoulier

XLDnaute Junior
Oui, c'est à peu près ça sauf qu'elles attendent chaque fois 2 opérandes à multiplier ou additionner.
Je me doutais bien un peu qu'il y avait un lien avec du calcul binaire. Mais du coup je trouve un peu idiot de calculer en décimal même si ça autorise des valeurs plus grandes. Je vous écrirais bien quelque chose qui permettrait de calculer en binaire sur des nombre illimités en taille si vous acceptiez qu'ils soient codés dans des textes en hexadécimal. Autre chose que je voulais vous dire: en binaire virgule flottante double précision la multiplication par 2 ne perd aucun bit. C'est seulement sa conversion en décimal qui ne restitue pas tous les chiffres, mais en interne la valeur reste juste. En revanche l'addition de 1 sur un nombre trop grand peut être impossible. Vous pourriez aussi faire des calculs en Currency, ça autorise aussi des valeurs plus grandes en précision puisqu'il n'y a pas d'exposant. Un Currency est codé comme un entier binaire sur 64 bits valant 10000 × sa valeur conventionnelle. Mais attention, Excel ne semble pas stocker les devises sous cette forme.

Merci Dranreb de toutes ces précisions, mais vous savez ... vous êtes un peu trop technique pour ma petite cervelle.
Je vais préciser ma pensée :
- En généalogie, l'enfant (par exemple moi) porte un numéro. Le père porte le n° : "n° d'enfant X 2" et la mère porte le n° "n° du père + 1"
- Mes nombres doivent être au format texte vu qu'Excel n'accepte pas les nombre au delà de 15 chiffres
- Mes nombres ne sont que des entiers (parfois très longs)
- Je n'ai besoin que d'une application qui me fasse la multiplication par 2 (avec un résultat texte)
- Pour l'addition (N+1) je ferais simplement un copier coller du résultat de la multiplication et je modifierai le dernier chiffre

En tous cas merci de votre gentillesse et de votre patience
Cordialement
 

Bandoulier

XLDnaute Junior
Re-bonjour tout le monde,

J'ai réussi à résoudre mon problème en mettant la macro dans le ruban d'Excel. Ça marche bien !
Maintenant, pour finir, j'aurais besoin d'une petite macro pour formater mon nombre :
Par exemple pour 123456789 avoir 123 456 789 et pour 1234567891 avoir 1 234 567 891 sachant que mes nombres sont des textes.
je vous promets de ne plus vous embêter après ça !
Merci d'avance
Cordialement
 

Victor21

XLDnaute Barbatruc
Bonjour, Bandoulier, bonjour à tous.

A la 30° génération (environ 1000 ans), nous comptons déjà plus d'1 milliard d'ascendants (10 chiffres) en numérotation ascendante Sosa-Stradonitz.

Il faut remonter à la 50° génération (1500 ans, soit environ en 518, l'année où le patriarche monophysite Sévère d'Antioche s'exila à Alexandrie) pour dépasser un nombre d'ascendants supérieur à 15 chiffres (1 125 899 906 842 620).
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il faut remonter à la 50° génération (1500 ans, soit environ en 518, l'année où le patriarche monophysite Sévère d'Antioche s'exila à Alexandrie) pour dépasser un nombre d'ascendants supérieur à 15 chiffres (1 125 899 906 842 620).
C'est sûr, tout ça est hautement invraisemblable, ou alors qu'est ce que Bandouiller ne nous dit pas ???

Autres fonctions :
VB:
Function Père(ByVal X) As String
   Père = Format(CDec(X) * 2, "## ### ### ### ### ### ### ### ### ##0")
   End Function
Function Mère(ByVal X) As String
   Mère = Format(CDec(X) * 2 + 1, "## ### ### ### ### ### ### ### ### ##0")
   End Function
96 générations maxi à partir de 1. Mais à partir d'un numéro de téléphone, de sécu, ou bancaire, évidemment, c'est un peu moins…
 

Bandoulier

XLDnaute Junior
Bonjour les amis,

JeanPierre : Un grand merci, j'essaie cela demain (ce soir je suis dialysé)
Dranreb : Je t'assure que je ne cache rien. Je t'envoie une partie de mon fichier (pour info) avec les n° de SOSA faux, mais cela va se régler grâce à vous tous. J'arrive à la date "-123" sur une des branches ... mais je suis un "rigolo" par rapport à de vrais généalogistes !
Sachant que j'ai encore environ 500 ancêtres à rentrer dans ce tableau bordélique (à force de rajouts), je veux le refaire au propre et avec des n° SOSA justes ... d'où ma demande initiale.
Vgendron, JeanPierre et Dranreb, merci beaucoup pour le mal que vous vous êtes donné à m'aider.
Demain je fais les derniers essais pour mettre en œuvre vos solutions et je vous tiendrez au courant puis je mettrais le sujet en résolu (au fait ... comment fait-on ça ?), puis viendra le gros boulot ... 1500 ancêtre à répartir sur un tableau propre et immense !!!
Cordialement
 

Pièces jointes

  • Arbre_AFAC.xlsm
    322.4 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
On a bien le "1"au bout en mettant en E4 :
Code:
=Mère(D6)

Remarque: je l'aurais plutôt fait avec des zones de textes: au moins les connecteurs, on peut les y connecter !
Il serait même alors concevable de tout automatiser, parce que les connecteurs possèdent dans leurs propriétés les shapes de départ et d'arrivée.
 
Dernière édition:

Bandoulier

XLDnaute Junior
Bonjour,

Je me suis préparé un nouveau fichier pour mettre mes ancêtres au propre et pour intégrer vos procédures. J'y suis depuis 4h00 ce matin tellement je piaffait d'impatience :)
En fait je garde les travaux de JeanPierre et de Dranreb :
- Les fonctions de Dranreb pour les branches régulières (où le père et la mère ont le même positionnement par rapport au fils). Avec des copier/coller je vais gagner du temps.
- Les procédures de JeanPierre pour les branches irrégulières (parents placés aléatoirement par rapport au fils).
Vous avez fait un travail formidable (que j'avoue n'avoir pas tout compris).
Je vous joins un petit fichier pour vous montrer à quoi ressemblera mon arbre ... dans 6 mois !!!
Merci encore pour votre patience.
Cordialement
 

Pièces jointes

  • AFAC.xlsx
    25.7 KB · Affichages: 26
  • AFAC.xlsx
    25.7 KB · Affichages: 25

Discussions similaires