@unparia
résultat de ta petite expérience
j'ai été obligé de préciser le parent devant les controls
le curseur est bien en b4 top et left a zoom 100
mais 2 ou 3 point plus bas a zoom 180
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Sub test() Set cible = ActiveSheet.Range("B4") With ActiveSheet.Label1 .Caption = "" .Top = cible.Top .Left = cible.Left .BackColor = RGB(255, 200, 200) End With With ActiveSheet.TextBox1 .Top = ActiveSheet.Range("B4").Offset(1, 0).Top .Left = cible.Left .BackColor = RGB(255, 255, 255) .Text = ActiveWindow.Zoom & " " & (ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Offset(0, 1).Left) - ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Left)) / cible.Width End With With ActiveWindow.ActivePane SetCursorPos .PointsToScreenPixelsX(cible.Left), .PointsToScreenPixelsY(cible.Top) End With End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
@unparia
je pense avoir compris ce que tu cherche avec
mais en fait le calcul est faux tout du moins tu divise par la cible.width non seulement le width en pixel mais tout le reste jusqu'au point 0 de l'ecran
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Text = ActiveWindow.Zoom & " " & (ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Offset(0, 1).Left) - ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Left)) / cible.Width
c'est a dire que tu englobe le app.left, le activew...left,le cadre,la colonne des numéros de ligne même si ton calcul est logique mais la fonction ne calcule pas comme ca
d'ailleurs pour t'en rendre compte
il te suffit de faire
pour te rendre compte que le résultat est faux
Code : Sélectionner tout - Visualiser dans une fenêtre à part x=ActiveWindow.ActivePane.PointsToScreenPixelsX([b1].width)
par contre si tu fait
le résultat est bon
Code : Sélectionner tout - Visualiser dans une fenêtre à part x=ActiveWindow.ActivePane.PointsToScreenPixelsX([b1].width)-ActiveWindow.ActivePane.PointsToScreenPixelsX(0)
que tu prenne le lef ou le width de la cellule ca te donnera toujours
le point 0 de l'ecran au point 0 de la grille + le width ou le left de la cellule
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
il nous reste plus q'a attendre les arrays de unparia pour XP
pour 2010 c'est bon je sais que c'est 0 partout
il nous restera 2013 32 bit avec w10 64
ET 2010 AVEC W7
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
je te donne la réponse un peu plus tard
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
et même soyons fous prenons en charge aussi office 64 bits puisque application.operatingsystem ne ramène rien alors c'est facile
de 12 a 16 office64 bits et W10 64 :le numéros correspond a la version d'office
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 cadre = Switch( _ config = 12, Array(x, x, x, x), _ config = 14, Array(x, x, x, x), _ config = 15, Array(x, x, x, x), _ config = 16, Array(x, x, x, x), _ config = 17, Array(x, x, x, x), _ config = 19, Array(x, x, x, x), _ config = 18, Array(3, 2, -6, -8), _ config = 20, Array(x, x, x, x), _ config = 24, Array(x, x, x, x), _ config = 25, Array(x, x, x, x), _ config = 26, Array(-5, 0, 10, x))
pour les versions office 32 bits
17 =xp office 2007
19= xp office 2010
18= w7 office 2007
20 =w7 office 2010
24= w10 office o 2010
25 =w10 office 2013
26 =w10 office 2016
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
pourquoi il me met erreur de compilation tableau attendu et il pointe cadre du left ??
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
system + vers = 0
sorry
system + vers = 21 re sorry
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
c'est bon j'essai
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
la ligne system et vers il faut les virer tout est dans la ligne config
j'aurais pu les mettre en commentaire c'est vrai
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
oulah arrête toi 5 minutes
tes config c'est quoi???? pour de bon
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
c'est bon j'ai compris, j'ai rajouté
zennnnnn, et je t'envoie les résultats
Code : Sélectionner tout - Visualiser dans une fenêtre à part config = 21, Array(X, X, X, X), _
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
config = 21 windows10 64 bits et excel 2013 32bits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Function PositionForm5(usf, rng) Dim Zooom#, PtToPx#, cadre, system#, vers#, config# Dim lleft#, ttop#, Wwidth#, Hheight# system = Round(Val(Split(Application.OperatingSystem, " ")(3))) vers = Val(Application.Version) config = Round(Val(Split(Application.OperatingSystem, " ")(3))) + Val(Application.Version) ' system + vers cadre = Switch(config = 15, Array(0, 0, 0, 0), _ config = 17, Array(X, X, X, X), _ config = 19, Array(X, X, X, X), _ config = 18, Array(2, 2, -6, -8), _ config = 21, Array(-2, 0, 3, 1), _ config = 22, Array(X, X, X, X), _ config = 24, Array(X, X, X, X), _ config = 25, Array(X, X, X, X), _ config = 26, Array(-5, 0, 10, 5)) With ActiveWindow Zooom = .Zoom / 100 PtToPx = ((.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - .ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Zooom lleft = (.PointsToScreenPixelsX(rng.Left * PtToPx * Zooom) / PtToPx) + cadre(0) ttop = .PointsToScreenPixelsY(rng.Top * PtToPx * Zooom) / PtToPx + cadre(1) Wwidth = IIf(rng.Columns.Count > 1, rng.Width * (Zooom) + cadre(2), usf.Width) Hheight = IIf(rng.Rows.Count > 1, rng.Height * Zooom + cadre(3), usf.Height) End With PositionForm5 = Array(lleft, ttop, Wwidth, Hheight) End Function
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
c'est quoi 21 !!!! Windows quoi ,office quoi
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
oulah!!! tu fausse le raisonnement alors depuis tout a l'heure
que retourne vraiment operatingsystem????????????config = 21 windows10 64 bits et excel 2013 32bits
parce que tu disais que Windows 10 ramenait 10 donc 10 plus la version excel2013(15) ca fait 25 chez moi hein !!!!!
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
pareil version 64 bit qui affiche 32
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
re
desolé mon grand mais la version 6.2 c'est W 8
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager