Autres calcul de position d’écart left top qui déraille

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
pour calendar je suis en train de faire un patch qui me permettra de respecter les positions en forcant une marge left et top

sauf que dans l'exemple qui suit ( 2 userforms simple) le calcul ne fait pas la différence en - ou +

le calcul additionne tout le temps ??????????????????:oops:🤔🤔🤔🤔🤔🤔

  1. ouvrez l'userform ,cliquez sur le bouton rouge
  2. le userform2 s'affiche replacez le en coin haut et gauche de B3
  3. et recliquez sur le bouton rouge du uf1

j'ai tout essayé même avec sgn rien y fait c'est un truc de fou
 

Pièces jointes

  • test calcul position.xlsm
    22.4 KB · Affichages: 15
Solution
allez on garde comme ça
merci a tous
VB:
Private Sub showW_Click()
    With uf2
        Dim L1#, T1#, OperX&, OperY&
        If Not .Visible Then
            ddecx = 0: ddecy = 0    '1er lancement
            .StartUpPosition = 0
            With ActiveWindow
                PtoPx = (.ActivePane.PointsToScreenPixelsY(72) - .ActivePane.PointsToScreenPixelsY(0)) / 72    'coeff point to pixel
                Z = .Zoom / 100
                L1 = (.ActivePane.PointsToScreenPixelsX(Int([b3].Left)) / PtoPx) * Z    'placement partie mobile
                T1 = .ActivePane.PointsToScreenPixelsY(Int([b3].Top)) / PtoPx * Z
            End With
            .Left = L1
            .Top = T1
            .Show 0
            ddecx = L1
            ddecy...

patricktoulon

XLDnaute Barbatruc
@Marcel32 excuse moi pour mon franc parler
j'accepte facilement d'avoir tord a partir du moment ou la véracité des réponses est implacable
par contre je monte au créneau si on insiste dans l'erreur 🤣🤣
c'est mon caractère
@Dranreb
Oui mais simplement MsgBox expression est juste aussi, et pareil d'ailleurs, alors à quoi bon faire si compliqué quand c'est si simple ?
par ce que le résultat attendu peut être positif ou négatif on le sais pas a l'avance

le problème c'est que si l1 est plus petit au quel je soustrait L2 qui est plus grand j'aurais un résultat négatif alors que la différence est positive

un fichier démo
ouvre uf1 avec le bouton
ouvre uf2 avec le bouton rouge dans uf1
deplace le uf2 pil poil sur topleft de B3
et appuie a nouveau sur le bouton rouge dans uf1
 

Pièces jointes

  • demo left top moins plus.xlsm
    22.8 KB · Affichages: 3

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re
Par contre ça ,Je ne comprends pas !
"perso j'en ai rien a secouer"
J'arrête là !
Et je vais éviter de venir sur tes post !
Je ne suis pas à l'aise quand on réagit ainsi.
Tu me diras : "je n'en ai rien à secouer" et c'est bien dommage.
Jean marie
Bsr Jean-Marie,
Il est vrai que quelques fois Patrick peut choquer et mettre mal à l'aise ... voir mettre en colère ...
C'est vrai, je m'y suis "frotté".
A sa décharge, au "fil des fils", on apprend à le connaître : impulsif, réactif ... mais jamais méchant.
C'est une bonne âme, il rend tellement de services à nous tous ici et, sauf moi qui suis presque impénétrable par le vba, tout le monde apprend et évolue grâce également à Patrick.
Je crois qu'on peut lui pardonner :)
Amicalement,
lionel :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
@Marcel32 excuse moi pour mon franc parler
j'accepte facilement d'avoir tord a partir du moment ou la véracité des réponses est implacable
par contre je monte au créneau si on insiste dans l'erreur 🤣🤣
c'est mon caractère
@Dranreb

par ce que le résultat attendu peut être positif ou négatif on le sais pas a l'avance

le problème c'est que si l1 est plus petit au quel je soustrait L2 qui est plus grand j'aurais un résultat négatif alors que la différence est positive

un fichier démo
ouvre uf1 avec le bouton
ouvre uf2 avec le bouton rouge dans uf1
deplace le uf2 pil poil sur topleft de B3
et appuie a nouveau sur le bouton rouge dans uf1
Bsr Patrick,
Chez moi :
1637606996643.png
 

TooFatBoy

XLDnaute Barbatruc
@Marcel32 excuse moi pour mon franc parler
j'accepte facilement d'avoir tord a partir du moment ou la véracité des réponses est implacable
par contre je monte au créneau si on insiste dans l'erreur 🤣🤣
c'est mon caractère
Et moi je n'aime pas ne pas comprendre les choses.😁

Et quand je lis ceci :
si expression est négative
sgn(expression)* (expression) me donnera un résultat positif ( ET C'EST FAUX)
je ne suis pas certain de comprendre ce que ça veut dire.

Que veut dire "me donnera un résultat positif" :
- Est-ce ça veut dire que "selon toi" le résultat sera positif ?
- Est-ce que ça veut dire qu'Excel te retourne réellement un résultat positif ?

Que veut dire "ET C'EST FAUX" :
- Est-ce que ça veut dire que tu attendais un résultat négatif et qu'Excel te retourne un résultat positif (et donc faux selon toi) ?
- Est-ce que ça veut dire qu'Excel te retourne un résultat positif et que selon toi c'est faux ?


Moi, dans cette phrase, je comprends qu'Excel te retourne un résultat positif, et que selon toi ce résultat est faux et devrait être négatif.
Et c'est ça que je ne comprends pas, puisque logiquement le résultat est positif.

C'est la seule chose que je cherche à comprendre. 😉
 

TooFatBoy

XLDnaute Barbatruc
Il est vrai que quelques fois Patrick peut choquer et mettre mal à l'aise ... voir mettre en colère ...
C'est vrai, je m'y suis "frotté".
Salut le Yoyo 🖖
Y a no soucy sur ce coup-là. 😉
D'ailleurs, tu as bien vu que quand j'ai dit "sgn(expression) * expression = abs(expression)" et qu'en réponse j'ai eu "même punition", même si je n'ai pas bien compris ce que ça voulait dire, je n'ai pas changé de ton. 😉

J'ai simplement continué pour vraiment essayer de comprendre le problème rencontré avec SGN.
 

TooFatBoy

XLDnaute Barbatruc
Sur tes gif, tout est normal et correspond exactement à ce que Bernard et moi-même avons dit.

Il est normal que Sgn(expression) * expression retourne forcément toujours une valeur positive.
Il n'y a rien de faux là-dedans. 😉

Je ne te ferais pas l'affront de te rappeler tes premiers cours de mathématiques (CM1 ou CM2 peut-être ???) expliquant que "moins par moins ça fait plus". 😁
 

patricktoulon

XLDnaute Barbatruc
re
non là c'est pas possible vous me faite une farce là
l est normal que Sgn(expression) * expression retourne forcément toujours une valeur positive.
Il n'y a rien de faux là-dedans
NON NON NON NON !!!!!!

SGN fonction de VB n'est pas sensée retourner toujours un positif ( sinon a quoi devrait ton son existence )ABS le fait très bien

je le redis SGN en VB est sensée retourner -1 ou 1 (et c'est tout rien d'autre!!!)

allez sans SGN et sans ABS

si mon userform est a 128 de left je le met a 131 de left
128-131 =-3 on est bien d'accords
alors vous vous le voyez a 128-3 alors qu'il est à 131:rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes:

à l'inverse
mon userform est a 131 de left je le positionne a 128 de left
131-128 =3 on est bien d'accords
alors vous vous le voyez a 131+3 alors qu'il est à 128:rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes:


si vous pigez pas un truc aussi simple je peux plus rien pour vous
 

Dranreb

XLDnaute Barbatruc
il a dit Sgn(expression) * expression pas Sgn(expression)
Sgn(expression) * expression c'est toujours soit 1 × un positif soit -1 × un négatif, donc ce produit est toujours positif. (ou nul éventuellement).
Et, Rappel: Sgn(expression) * Abs(expression) c'est bon mais inutilement compliqué car ça revient simplement à expression.
 
Dernière édition:

Statistiques des forums

Discussions
312 237
Messages
2 086 488
Membres
103 233
dernier inscrit
Ange.wil