Transformation d'une chaine de caractères

anthony.unac

XLDnaute Occasionnel
Bonjour,

Prenons un réel mettons sqrt(2) et intéressons nous à ses décimales :
414213562373095...

Réécrivons ces décimales en utilisant le fait que chaque décimale *appelle* une autre décimale :
4 appelle la 4e décimale à savoir 2
1 appelle la 1ere décimale à savoir 4
42 appelle la 42e décimale à savoir 1
(et oui car 4 à déja était appelé donc on prend l'entier composé par deux décimales)
13 appelle la 13e décimale à savoir 0
5 appelle la 5e décimale à savoir 1
6 appelle la 6e décimale à savoir 3
....
On aboutit au final à la création d'un réel dont les décimales sont :
24101314597...

Comment puis je m'y prendre pour créer un programme sous excel pour aboutir au résultat ci dessus ?

Je pensais partir sur une macro qui demande dès l'ouverture du fichier à l'utilisateur de saisir une suite de n décimales (sous forme de box)
Ensuite je voulais récupérer la suite de décimales saisie pour la traiter à l'aide de l'algorithme suivant :
algorithme.jpg

Mais je bloque complètement avec le VBA.

Mon programme pourrait commencer par la déclaration des variables ainsi que leurs initialisations.
Je distingue ainsi 3 variables, 1 constante et un tableau :
*******************************************
* i, j, k qui sont des variables entières
* n qui est une constante représentant le nombre de décimales saisies par l'utilisateur
* tab qui est un tableau

Initialisation :
**********
i:=1
j:=0
k:=1
n dépend directement du nombre de décimales inscrites par l'utilisateur
tab=0


Cordialement
Anthony
 

Pièces jointes

  • algorithme.jpg
    algorithme.jpg
    58.8 KB · Affichages: 324
  • algorithme.jpg
    algorithme.jpg
    58.8 KB · Affichages: 321

anthony.unac

XLDnaute Occasionnel
Re : Transformation d'une chaine de caractères

Bonjour David,

Re re,
suite à mon message précédent, si ce que j'ai noté à la fin du message est ce que tu attends

Oui c'est exactement ça !

Sauf erreur de ma part, cela te renvoie ce que tu décris.

Hélas non !

Exemple avec l'entrée des décimales de racine de 2 :
****************************************
414213562373095
La macro renvoie 2400131450200 :confused:
au lieu de 2410131459
En fait c'est truffé d'erreur dès la 3e décimale.
 

david84

XLDnaute Barbatruc
Re : Transformation d'une chaine de caractères

Re
Oui autant pour moi
Ok. Alors reprenons en partant de ta chaîne de caractère :
414213562373095
4 renvoie 2
1 renvoie 4
42 renvoie 0
13 renvoie 0
5 renvoie 1
6 renvoie 3
2 renvoie 1 (puisque c'est 42 qui a été utilisé et non 2 pour le 3ème caractère)
3 renvoie 4
7 renvoie 5
30 renvoie 0 (puisque 3 a déjà été utilisé)
9 renvoie 2
5 étant le dernier caractère de la chaîne et ayant déjà été utilisé, il renvoie 0
donc la chaîne ramenée est
.
Or c'est bien ce que le code te renvoie (en fait, chez moi il renvoie exactement
2400131450200
soit un 0 final en plus, mais bon...).
Donc où est l'erreur pour toi ?
A+

Edit (je viens de lire ton dernier message): ah ben voilà !:). Come quoi il faut être précis pour ce type de demande pas évidente. Mais fait attention à ce que je t'ai dit concernant l'utilisation de l'InputBox dans mes messages précédents et au besoin, utilise mon dernier code qui te permet de tester de grandes chaînes de caractères tirées de manière aléatoire.
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Transformation d'une chaine de caractères

Re
quand je te parle de précision, je ne fais pas allusion au Grafcet (je l'ai à peine regardé) mais plutôt aux explications qui ont suivi où j'avais quelque fois l'impression de ne plus m'y retrouver.
Sinon, vois le fichier joint (1 test avec l'InputBox et l'autre sur une chaîne de 10000 caractères).
A+
 

Pièces jointes

  • Transformation de décimales_test.xls
    61.5 KB · Affichages: 26
  • Transformation de décimales_test.xls
    61.5 KB · Affichages: 27
  • Transformation de décimales_test.xls
    61.5 KB · Affichages: 28

david84

XLDnaute Barbatruc
Re : Transformation d'une chaine de caractères

Re
si tu ne veux pas de tirage aléatoire, alors tu as la possibilité de passer avec une textBox (cf. fichier).
Je suis allé jusqu'à 10000 caractères et cela passe (mais teste de ton côté).
A+
Edit : après d'autres essais, je bloque aux alentours de 5000-6000
 

Pièces jointes

  • Transformation de décimales_test.xls
    59 KB · Affichages: 23
  • Transformation de décimales_test.xls
    59 KB · Affichages: 27
  • Transformation de décimales_test.xls
    59 KB · Affichages: 27
Dernière édition:

Discussions similaires