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
Sgn(expression) * Abs(expression) c'est expression tout simplement
.oui si tu veux sans passer par les variables oper(x/y)
mais je doute de ta réduction

ou alors je n'ai rien compris a ta remarque
si j'utilise ABS c'est bien par ce que expression peut être négative ou positive

edit: @Dranreb tu devrais tester avant de dire ;)
sans abs c'est toujours positif et c'est logique
VB:
Sub test()
oper = Sgn(-1)
MsgBox oper * (-50)
End Sub
 

patricktoulon

XLDnaute Barbatruc
je viens de tester je te dit !!
si expression est négative
sgn(expression)* (expression) me donnera un résultat positif ( ET C'EST FAUX)

je le redis teste avant de dire
VB:
Sub test()
expression = (50 - 55)
oper = Sgn(expression)
MsgBox oper * expression 'faux
MsgBox Sgn(expression) * expression 'faux
MsgBox Sgn(expression) * Abs(expression) 'juste
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonsoir Marcel32
toi aussi même punition
teste et viens le redire après
VB:
Sub test()
expression = (50 - 55)
oper = Sgn(expression)
MsgBox oper * expression 'faux
MsgBox Sgn(expression) * expression 'faux
MsgBox Sgn(expression) * Abs(expression) 'juste
End Sub
je crains fort que ni toi ni Dranreb n'ayez compris la démarche
 

patricktoulon

XLDnaute Barbatruc
re

perso j'en ai rien a secouer
la macro test est simple elle parle d'elle même tu l'a testé toi même d'ailleurs
ils ont qu'a faire de même avant d'intervenir
par contre ça m’irrite quand on vient avec sa science dire des choses qui sont contredites en 3 lignes de macro et que l'on insiste
en général quand je pose une question c'est qu'il y a anguille sous roche et que j'ai fait plein de tests avant
pour info sgn en VBA renvoie 1 ou -1 et en aucun cas l'expression
bref le sujet est clos je me suis débrouillé tout seul

@fanch55 avait relevé une bévue de ma part avant ce calcul et ça a tout débloqué
tout les chemins mènent a Rome comme on dit , bon pour certains ça risque d’être long 😂😂😂😂
 

TooFatBoy

XLDnaute Barbatruc
je crains fort que ni toi ni Dranreb n'ayez compris la démarche
C'est possible.
Mais quoi qu'il en soit, je pense que ce que nous avons écrit est exact logiquement parlant, même si Excel te sort peut-être un résultat erroné. 😉

Il faudrait que tu sois clair dans tes propos pour que l'on sache si Excel renvoie un résultat faux ou non.
Rappel : je ne peux hélas pas tester avec mon Excel qui "n'est qu'en lecture et pas en écriture".
 

ChTi160

XLDnaute Barbatruc
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
 

patricktoulon

XLDnaute Barbatruc
ça n'est pas pour toi jean-marie

marcel32
ma demande était claire je cite la précision faite en post#3
re
bonjour @fanch55
ben non puisque les textbox reçoivent la nouvelle position hors c'est la différence entre la première position et la 2d qui devrait atterrir dans les textboxs
je dirais même pire il additionne au lieu de soustraire selon le cas
si j'ai mon uf2 a 123 de left et que le repositionne à 128 de left je devrait avoir dans ddecx 5
si j'ai mon uf2 a 128 de left et que le repositionne à 123 de left je devrait avoir dans ddecx -5
hors dans les deux sens il additionne j'obtiens 133

voila il est certain que si on entre des considérations de language vba ou simplement maths
l'expression sgn ne veut pas dire tout a fait la même chose
mais on est dans un forum VBA me semble t il

j'imagine mal billou gates nous avoir pondu une fonction SGN qui renverrait simplement l'expression
c'est absurde ,l'expression alors à elle seul m'aurait suffit dans la ligne de code
sachant que ABS alors dans ce cas là fait la même chose
 

Statistiques des forums

Discussions
312 429
Messages
2 088 352
Membres
103 824
dernier inscrit
frederic.marien@proximus.