Problème programme lotus123
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Problème programme lotus123



  1. #1
    invited1b2fed6

    Problème programme lotus123


    ------

    Dans une feuille de tableur lotus123 il y a 3 cellules définies: formule, egale, x.
    Après quelques recherches, il me semble devoir arriver à quelque chose du type:

    Code:
    Sub Click(Source As Buttoncontrol)        'crée le button
    	Dim x As Single, formule As Single, egale As Single, i As Single
    	i = 0.0001                                'inutile
    	x = [a:B28].cellvalue
    	formule = [a:B26].cellvalue
    	egale = [a:B30].cellvalue
    	
    	While formule = egale               'la boucle
    		If formule > egale Then
    			x = x - 0.0001
    		Else 
    			x = x + 0.0001
    		End If
    	Wend
    	Set cellfound = [a:B28]   'afficher la valeur dans cellule
    End Sub                                  'bien que la valeur doit être le tableur.
                                                   'en fin de boucle.
    Mais pas de résultats.
    Est-ce que ce petit programme n'arrive pas à utiliser les valeures qui sont dans les cellules?
    Comment faire?

    -----
    Dernière modification par yoda1234 ; 07/10/2009 à 18h58.

  2. #2
    sitalgo

    Re : Problème programme lotus123

    B'jour,
    Citation Envoyé par dllkurl Voir le message
    Code:
    While formule = egale               'la boucle
    	If formule > egale Then
    		x = x - 0.0001
    	Else 
    		x = x + 0.0001
    	End If
    Wend
    Vu que tu ne changes pas les valeurs formule et egale, ton programme boucle sans arrêt. Il s'arrêtera pour dépassement de capacité de x.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  3. #3
    sitalgo

    Re : Problème programme lotus123

    Plus précisément si formule = egale ça boucle sans arrêt et sinon ça passe la boucle 1 fois sans rien faire.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  4. #4
    invited1b2fed6

    Re : Problème programme lotus123

    En effet je ne change pas la valeur dans le programme car je ne sais
    pas encore comment faire.
    Mais je pensais que celle-ci (la valeur: formule qui contiend x)se modifierait toute seule dans le tableur à chaque boucle. (pourquoi faire simple?)

    Qui est mon problème du jour : comment faire apparaitre le résultat
    d'un programme dans le tableur, sans passer par messagebox?

    je sais :
    [a:b7].Contents = "@SOMME(A:b2..A:b5)" ' met formule "" en B7
    [A:B1].Name = "Principal" 'B1 se nome Principal
    [Principal].Contents = "100000" 'Principal contiend "100000"
    Mais le résultat d'un conteur, ou du nombre de boucle "i", je ne l'ai pas trouvé dans leur 2-3 exemples qui ne fonctionnent que moyennement.

    A quand l'aide lotus123 où tout les scripts et syntax utilisant des cellules seront regroupés sur 1 seul page sans ces trop nombreuses boites.

    L'abus nuit!

  5. A voir en vidéo sur Futura
  6. #5
    invited1b2fed6

    Re : Problème programme lotus123

    Oui, till ou until est plus du gout du jour.
    merci

  7. #6
    sitalgo

    Re : Problème programme lotus123

    Tu n'as pas précisé le but du programme.
    Si tu veux que x atteigne la valeur de égale :
    Code:
    Sub Click(Source As Buttoncontrol)
    	Dim x As Single, egale As Single, i As Single
    	i = 0.0001
    	x = [a:B28].cellvalue
    	egale = [a:B30].cellvalue
    	
    	While x <> egale               'la boucle
    		If x > egale Then
    			x = x - i
    		Else 
    			x = x + i
    		End If
    	Wend
    	[a:B28].cellvalue = x   'afficher la valeur dans cellule
    End Sub
    A adapter, je ne connais pas la syntaxe de lotus.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  8. #7
    invited1b2fed6

    Re : Problème programme lotus123

    L'objetif :
    Je met une fonction (+ ou - simple) dans formule : 5*x
    Je met une valeur aléatoire dans x (ou une valeur de départ) : 1
    Je rentre la valeur résultat dans égale : 15

    Le tableur calcul automatiquement formule = 5
    Le programme teste et fait une boucle untill formule=egale :
    est ce que 5=15 ?
    si 5>15 alors
    x=x-0,0001' 2 possibilitées:le tableur calcule à chaque boucle Tout va bien
    sinon ' ou il ne peut pas, je compte le nbr de boucle et (x=x-(nbr*i))
    x=x+0,0001 ' donc i= 0,0001 pour fonction complex ou =1 fct simple.
    En fin de boucle quand formule=egale
    Le programme s'arrête de boucler
    et normalement le résultat est dans le tableur

    note:<> veut dire quoi ?

    prog modifié
    Sub Click(Source As Buttoncontrol)
    Dim x As Single, formule As Single, egale As Single, i As Single
    Dim counter As Integer
    i = 0.0001
    ' x = [a:B28].cellvalue 'mauvaise façon
    ' formule = [a:B26].cellvalue
    ' egale = [a:B30].cellvalue

    'dire, formule est la cellule B26, ..... pour qu'il test Do until et if
    CurrentDocument.CreateRangeNam e "x", [a:B28]
    CurrentDocument.CreateRangeNam e "formule", [a:B26]
    CurrentDocument.CreateRangeNam e "egale", [a:B30]

    start! = Timer ' là ça ne fonctionne pas(je pens qu'il compte le temp)

    ' Do Until formule = egale
    If formule > egale Then
    counter% = counter% + 1
    [A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    Else
    counter% = counter% +1
    [A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    ' Loop
    End If

    finish! = start! + counter% ' ne fonctionne pas, mais
    'dans un premeir temps je voudrais qu'il
    ' met dans une cellule le nbre de boucle
    End Sub

    Conclusion, il me reste à chercher les instructions que je ne connais pas dans
    une aide qui aide ceux qui savent déjà. Nous appellerons ce-ci la logique lotus.
    Mais non je m'enerve pas, je m'explique.

  9. #8
    invited1b2fed6

    Re : Problème programme lotus123

    Quand j'ai mis
    [a:B28].cellvalue = x 'afficher la valeur dans cellule
    C'est ce que je voulais qu'il fasse.

    Mais il n'est que capable de mettre dans la cellule B29 la formule =B28-3,
    [A:b29].Contents = "A:B28-3"

  10. #9
    JPL
    Responsable des forums

    Re : Problème programme lotus123

    Pour poster du code merci d'utiliser la balise Code afin de garder les indentations, donc la lisibilité.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  11. #10
    sitalgo

    Re : Problème programme lotus123

    Citation Envoyé par dllkurl Voir le message
    Le tableur calcul automatiquement formule = 5
    Le programme teste et fait une boucle untill formule=egale :
    est ce que 5=15 ?
    si 5>15 alors
    x=x-0,0001' 2 possibilitées:le tableur calcule à chaque boucle Tout va bien
    sinon ' ou il ne peut pas, je compte le nbr de boucle et (x=x-(nbr*i))
    x=x+0,0001 ' donc i= 0,0001 pour fonction complex ou =1 fct simple.
    En fin de boucle quand formule=egale
    Le programme s'arrête de boucler
    et normalement le résultat est dans le tableur
    Premier point : qui te dit que la fonction croît quand x croît ? Tu ne rentres donc que des fonctions à pente positive ?
    note:<> veut dire quoi ?
    Attention, avant de programmer il faut connaître le B.A.BA. En basic <> signifie "différent".

    prog modifié
    Code:
    Sub Click(Source As Buttoncontrol)
    	Dim x As Single, formule As Single, egale As Single, i As Single
    	Dim counter As Integer
    	i = 0.0001
    '	x = [a:B28].cellvalue               'mauvaise façon
    '	formule = [a:B26].cellvalue
    '	egale = [a:B30].cellvalue
    	
    	'dire,  formule est la cellule B26, ..... pour qu'il test Do until et if
    	CurrentDocument.CreateRangeName "x", [a:B28]
    	CurrentDocument.CreateRangeName "formule", [a:B26]
    	CurrentDocument.CreateRangeName "egale", [a:B30]
    On peut nommer les cellules dans la feille de calcul.
    start! = Timer ' là ça ne fonctionne pas(je pens qu'il compte le temp)
    Timer compte le nombre d'unités de temps écoulées depuis le démarrage du système, ça dépend du système. Ca peut être des 1/50 de secondes.
    Une routine est par ex : durée = (Timer - temps0)/50 en secondes avec temps0 qui a stocké le Timer au lancement de la routine.
    Code:
    '	Do Until formule = egale
    	If formule > egale Then
    		counter% = counter% + 1
    		[A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    	Else 
    		counter% = counter% +1
    		[A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    '	Loop
    	End If
    Tu n'as pas à modifier les cellules pendant le déroulement du programme, ça doit se faire en interne et tu n'affiches le résultat qu'à la fin. La feuille modifie et recalcule à chaque fois, quand il y a beaucoup de boucles, c'est une perte de temps.
    finish! = start! + counter%
    Tu additionnes des vaches et des pommes.

    Pour finir, il faut que tu fasses un ordinogramme, une fois que tu t'es cassé la tête dessus, il n'y a plus qu'à écrire le code.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  12. #11
    invited1b2fed6

    Re : Problème programme lotus123

    "il faut connaitre le b.a.ba.." : oui je suis d'accord, mais pour connaitre, il faut le trouver.

    "On peut nommer les cellules dans la feille de calcul." : oui et alors?

    "La feuille modifie et recalcule à chaque fois, quand il y a beaucoup de boucles, c'est une perte de temps." : Non c'est ce que je voudrais, qui m'évitera de chercher des codes. A moins que.... les codes me viennent, impossible.
    Donc actuellement il met la formule "si...." dans b28 et c'est tout, même en cliquant plusieurs fois, il met B28-1 ou B28+1 dans le tableur. D'ou le problème.

    "modifier les cellules pendant le déroulement du programme" : me semble impossible. Comme je le dis plus haut, je n'ai pas encore trouvé le moyen de mettre un résultat de programme dans une cellule.

    "start ....." : me vient d'un exemple, je penssais que c'etait le nbre de boucle.
    Est-ce qu'en faisant : counter = counter +1
    Il y a une possibilité de récupérer la valeur finale (sans messagebox) dans le tableur ou en interne ? laquelle?

    Heuuuuuuuuu, alors pour l'organigramme, merci, mais je l'ai fait.
    C'est vrai, sans connaitre les possibilités et impossibilités d'un script sous lotus123, ni les miennes.

    Donc citation du jour : cherche p'tio.

  13. #12
    sitalgo

    Re : Problème programme lotus123

    Citation Envoyé par dllkurl Voir le message
    "il faut connaitre le b.a.ba.." : oui je suis d'accord, mais pour connaitre, il faut le trouver.
    Certaines syntaxes basic sont inchangées depuis 40 ans, ce n'est pas propre à Lotus (il n'y a donc pas d'aide quelque part avec F1?). Cherche sur google.
    "On peut nommer les cellules dans la feille de calcul." : oui et alors?
    Si tu changes la présentation de ta feuille, il te suffit de déplacer les cellules. Le programme tiendra compte des noms de cellules (genre cells("egale")=8) et non des adresses fixes qu'il faut modifier dans le programme.
    "modifier les cellules pendant le déroulement du programme" : me semble impossible. Comme je le dis plus haut, je n'ai pas encore trouvé le moyen de mettre un résultat de programme dans une cellule.
    Ce me semble indispensable, si la formule x = [a:B28].cellvalue marche alors [a:B28].cellvalue= x ; ou encore [a:"NomCellule"].cellvalue=x devrait marcher.
    C'est quoi ce a dans [a:B28], c'est le nom de la feuille ?
    Code:
    Do Until formule = egale
    	If formule > egale Then
    		counter% = counter% + 1
    		[A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    	Else 
    		counter% = counter% +1
    		[A:b28].Contents = "@SI(A:B26<A:B30;A:B28-1;A:B28+1)"
    '	Loop
    End If
    Manifestement tu veux piloter un 747 sans aucune formation.
    Ce programme ne fonctionne pas, Loop et Endif sont inversés.
    Les instructions sous If et sous Else font exactement la même chose, si tu soumets un programme, tâche de ne pas y laisser des énormités.
    Tu n'as pas à modifier la valeur de B28, c'est celle qui contient la fonction. Il faut modifier B26 afin d'avoir la nouvelle valeur en B28, que tu compares ensuite à B30.

    Heuuuuuuuuu, alors pour l'organigramme, merci, mais je l'ai fait.
    C'est vrai, sans connaitre les possibilités et impossibilités d'un script sous lotus123, ni les miennes.
    L'ordinogramme ne dépend pas du langage, à moins de vouloir rentrer dans les détails (comme en assembleur par ex). En tout cas, si tu l'a suivi, il est mauvais.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  14. #13
    invited1b2fed6

    Re : Problème programme lotus123

    Hier, fonction croissante : If not pour decroissante.
    "Le programme tiendra compte des noms de cellules (genre cells("egale")=8) et non des adresses fixes qu'il faut modifier dans le programme"
    je prefaire qu'il tienne compte de la position de cellule. (plus simple à retrouver dans le prog)
    "Ce me semble indispensable, si la formule x = [a:B28].cellvalue marche alors [a:B28].cellvalue= x ; ou encore [a:"NomCellule"].cellvalue=x devrait marcher."
    : Non ne fonctionne pas.
    De toute façon je fait fausse route, ai trouve hier sur "domino" une explication : procedure ("sub"ne donne pas de résultat), fonction ("function" avec résultat).
    Il me semble que le button est assimilé à une procedure.

    "Manifestement tu veux piloter un 747 sans aucune formation"
    : non je ne veux pas, j'ai besoin, et je ne vais pas me tapper 300 pages d'un bouquin indigeste, pour 5 instructions qu'il me faut.
    Et pour l'inversion, l' apostrophe placé devant transforme le code en texte (donc n'est pas reconnu comme ligne de code). Et comme il n'a pas detecté l'erreur, c'est que le prog n'est pas allé jusque là.

    "L'ordinogramme ne dépend .." :
    15 ans de non pratique explique cela. L'organigramme est peut etre mauvais, mais sur le papier, il marche.
    Je devrais chercher des exemple d'algorithme.

    Citation du jour : l'informatique n'est pas le vélo.
    Dernière modification par yoda1234 ; 14/10/2009 à 16h24. Motif: Rajout des balises Quote

  15. #14
    yoda1234

    Re : Problème programme lotus123

    À dllkurl: Merci d'utiliser les différentes fonctionnalité de l'éditeur de texte mit à la disposition des utilisateurs, ceci afin de rendre les interventions et questionnements clairs.
    Un mode d'emploi: http://forums.futura-sciences.com/misc.php?do=bbcode
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  16. #15
    sitalgo

    Re : Problème programme lotus123

    Bon ben je ne peux pas faire plus, il faut espérer que quelqu'un qui connaît le basic de Lotus passe par là.
    Mais si t'as l'gosier, Qu'une armure d'acier, Matelasse. Brassens, Le bistrot.

  17. #16
    invited1b2fed6

    Re : Problème programme lotus123

    Merci pour tout.

  18. #17
    invited1b2fed6

    Re : Problème programme lotus123

    Reponse : J'ai donc fait une fonction, lotus beuguant à chaque fois qu'il rencontre ><, j'ai simplifié avec une valeur d'entrée minimale de gamma (0,01) et en faisant une boucle uniquement superieur.
    Si résultat< à truc alors ajouter 0,000001.
    L'étrange est le délai de réponse, pour 1E-6 (mon cas) comparé au solveur.

Discussions similaires

  1. Fonction sous lotus123
    Par invited1b2fed6 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/09/2009, 15h44
  2. Probleme Programme PROTON+
    Par invite9fa3de28 dans le forum Électronique
    Réponses: 10
    Dernier message: 12/11/2008, 20h22
  3. [Blanc] probleme de programme
    Par invite23853c45 dans le forum Dépannage
    Réponses: 3
    Dernier message: 20/05/2008, 17h17
  4. problème programme
    Par invitea301fcd6 dans le forum Logiciel - Software - Open Source
    Réponses: 20
    Dernier message: 22/07/2005, 17h54
  5. Problème de programme.
    Par invite8d09e4b8 dans le forum Électronique
    Réponses: 3
    Dernier message: 11/07/2005, 15h56
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...