Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

anthony.unac

XLDnaute Occasionnel
Bonjour,

Je cherche à transformer une suite de n décimales suivant le GRAFCET ci joint :
Regarde la pièce jointe GRAFCET.xls
J'ignore s'il est possible de coder ceci en VBA.

Voici un exemple d'application :
************************
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...
 

Pièces jointes

  • GRAFCET.xls
    69 KB · Affichages: 337
  • GRAFCET.xls
    69 KB · Affichages: 295

Odesta

XLDnaute Impliqué
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Bonjour
En VBA, c'est comme dans beaucoup de langage, plein de chose sont possible, à condition de savoir ce que l'on veut.

La logique de branche est tout à fait indiqué en VBA avec des SI (on mettrerait paris en bouteille)
et la logique de boucle tout aussi simple (for / while / do ...)

Dans votre cas, on s'interresse à une chaine de caractère
Je fais un test :

Code:
Sub Macro2()
Dim ma_chaine As String
Dim tableau_val(1 To 2, 0 To 10000) As Variant

ma_chaine = "56476145751541650546407549152649215941477652756157624526785779104507615057201064564573215967315346065429326215843216954"
            '12345
            '123456
            
For i = 1 To UBound(tableau_val, 2)
    tableau_val(1, i) = ""
    
Next i

For i = 1 To Len(ma_chaine)
    trouve = False
    taille = 1
    While trouve = False And taille <= Len(ma_chaine)
    
    test = Mid(ma_chaine, i, taille)
    
    If tableau_val(1, CInt(test)) = "" Then
        trouve = True
        tableau_val(2, CInt(test)) = i
        
        If CInt(test) <= Len(ma_chaine) And CInt(test) <> 0 Then
            tableau_val(1, CInt(test)) = Mid(ma_chaine, CInt(test), taille)
        Else
            tableau_val(1, CInt(test)) = 0
        End If
    Else
        taille = taille + 1

        
    End If
    
    Wend
    
    i = i + taille - 1
    nouvelle_chaine = nouvelle_chaine & tableau_val(1, CInt(test))
Next i

MsgBox "Chaine initiale : " & ma_chaine & Chr(10) & "Nouvelle chaine : " & nouvelle_chaine

End Sub

Merci de me dire si cela fonctionne

Cdt
Olivier
 

anthony.unac

XLDnaute Occasionnel
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Merci de me dire si cela fonctionne

Merci beaucoup pour ce code Olivier.
Hélas il semblerait qu'il ne fonctionne pas au sens du GRAFCET.
Exemple avec les décimales de pi ci joint : Regarde la pièce jointe GRAFCET.xls
*******************************
La chaine retournée est fausse dès le 4e caractère.
 

Pièces jointes

  • GRAFCET.xls
    148 KB · Affichages: 125
  • GRAFCET.xls
    148 KB · Affichages: 121

Odesta

XLDnaute Impliqué
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Bonjour

La réponse serait plutot cela :
"1533429190245383906102840670500194982193626086298480990700301"
(pour Pi : 141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093)
?

Si oui, ligne 27, il faut remplacer le "taille" par 1
ici : tableau_val(1, CInt(test)) = Mid(ma_chaine, CInt(test), 1)


Cdt

Olivier
 

david84

XLDnaute Barbatruc
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Re
3 choses :
- je t'ai laissé une proposition ici
-
Prenons un réel mettons sqrt(2) et intéressons nous à ses décimales :
414213562373095...
42 appelle la 42e décimale à savoir 1
comment veux-tu que l'on puisse tester cela puisque tu ne nous indiques pas de chaîne complète ?
Donne-nous une chaîne complète pour que l'on puisse s'y retrouver.
- sur quel fil continue-t-on la discussion ?
A+
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Bonjour


Bonjour

Pourquoi créer une deuxiéme discussion pour une même question ?

Parceque je ne me suis pas connecté au forum depuis plusieurs jours, et qu'un sujet est vite oublié.
Par contre, il aurait été "sympa" d'essayer de comprendre mon code et de le "décoder" pour l'améliorer, plutot que de le faire refaire de a à z par quelqu'un d'autre...
j'adore travailler dans le vide

Cdt

Olivier
 

TempusFugit

XLDnaute Impliqué
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

La question s'adressait à anthony.umac.

Et comme le précise david84, désormais quelle discussion est la bonne discussion
et où la poursuivre ?

Tu ne travailles pas dans le vide.

D'autres auront lu ton code.
 
Dernière édition:

Gruick

XLDnaute Accro
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Bonjour,
Odesta dixit :
pour Pi : 14159265358979323846264338327950288419716939937510 58209749445923078164062862089986280348253421170679 82148086513282306647093
Sur ce bon exemple, on voit que le 4 est déjà repéré, et devient donc 46, dès la 19ème décimale, et que le 41 repéré au début revient en 36éme place, et deviendra 419...
C'est un truc sans fin que tu demandes, anthony.umac !!!
Gruick
 

TempusFugit

XLDnaute Impliqué
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Moi j'y ai trouvé une utilité multiple.

En premier lieu, un exemple d'utilisation d'Array.

Par contre je ne vois pas trop où veut en venir anthony
et à quoi cela peut servir.
 
Dernière édition:

anthony.unac

XLDnaute Occasionnel
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

Bonjour

Pourquoi créer une deuxiéme discussion pour une même question ?

Parce que le titre de la première discussion ne collait pas vraiment. Les habitués du forum ne s'y retrouvaient pas dans ce titre alors j'ai préféré parler de "transformation d'une chaine de caractères" ou la évidemment tout le monde s'y retrouve.
 

anthony.unac

XLDnaute Occasionnel
Re : Peut on réaliser un programme sous excel à partir d'un GRAFCET ?

comment veux-tu que l'on puisse tester cela puisque tu ne nous indiques pas de chaîne complète ?
Donne-nous une chaîne complète pour que l'on puisse s'y retrouver.
- sur quel fil continue-t-on la discussion ?
A+

Re,

C'est ok David, je crois que tout le monde à compris de quoi est ce qu'il en retourne avec cette transformation.
Concernant la discussion on peut la continuer ou vous voulez.
Pour ma part tant qu'il y aura des personnes pour discuter je répondrai quel que soit l'endroit
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…