Bonjour à tous,
j'ai fait un essai avec ton code Patrick, je n'ai rien modifié à ton exemple mais chez moi ça ne fonctionne pas ?
une idée du problème
Bonjour à tous,
j'ai fait un essai avec ton code Patrick, je n'ai rien modifié à ton exemple mais chez moi ça ne fonctionne pas ?
une idée du problème
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
quel était la cellule ciblée?
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
a la base je suis parti avec exactement le même code que toi pour essayer, parce que je suivais votre discution depuis un moment et trouvais ça interessant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub TestUserformtopleftcell() r = RectanGleRange(UserForm1, [b3]) With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With End Sub
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
mon dernier en date c'est celui la
si c'est pas bon adapte le a toi et donne moi la résolution de ton écran,le mode d'affichage Windows, le zoom appliqué au sheets et les adaptations que tu aura faite
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 Sub TestUserformtopleftcell() r = RectanGleRange(UserForm1, [b3]) With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With End Sub Function RectanGleRange(usf, rng) Dim pttopx#, ttop#, lleft#, ecc#, Hheight#, Wwidth#, zz# With ActiveWindow pttopx = (.ActivePane.PointsToScreenPixelsX(3) - .ActivePane.PointsToScreenPixelsX(0)) / 3 'coefficient multiplicateur pixel zz = (.Zoom / 100) ecc = (usf.Width - usf.InsideWidth) * (4 / 3) 'epaisseur du cadre ecc2 = ((usf.Height - usf.InsideHeight) / 2) 'epaisseur du cadre lleft = ((.ActivePane.PointsToScreenPixelsX(rng.Left) / pttopx) * zz) + (ecc) ttop = ((.ActivePane.PointsToScreenPixelsY(rng.Top) / pttopx) * zz) + (ecc) Wwidth = IIf(rng.Columns.Count > 1, (rng.Width * zz) - (ecc) - pttopx - 2, usf.Width) Hheight = IIf(rng.Rows.Count > 1, (rng.Height * zz) - (ecc) - pttopx - 2, usf.Height) End With RectanGleRange = Array(lleft, ttop, Wwidth, Hheight) End Function
pour voir
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
ok je regarde tout ça, je te tiens au courant, merci
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
Tu peux nous dire ce que cela veut dire, s'il te plait, patricktoulon ?adapte le a toi
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
re,
ben oui j'avoue et je suis un peu comme Jacques que je salut au passage, sur un classeur vierge avec tes codes à l'identique je suis complètement à coté.
C'était pour essayer juste voir si c'était un code universel comme il me semblait l'avoir compris
Mes paramêtres d'affichage Windows ou excel sont à 100%
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
ben ca veut dire ajoute ou enlevé ce qui faut et donne moi les données pour que je puisse avoir une idée de pourquoi
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 ne sais pas quoi te dire de plus,
ta superbe démo en poste 96 chez moi ça ne marche pas
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
Tu voudras bien m'excuser, patricktoulon, mais je trouve cette manière de "travailler" et "raisonner" à "tâtons" à la fois étrange, hasardeuse et vraiment peu conforme à la raison. .ben ca veut dire ajoute ou enlevé ce qui faut
EDIT : je te l'ai déjà fait observer (mon message n° 69 d'il y a déjà une semaine).
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
ben ma fois mes calcul n'on aucun dividendes en dur et utilises les fonctions il y a donc un paramètre que l'on ignore il faut bien commence par quelque chose
selon ce qui manque ou en trop ca pourra me donner une idées du pourquoi
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
pas "que l'on", patricktoulon ... "que TU". Et pour être plus précis : dont tu t'obstines à ne pas vouloir tenir compte en dépit des efforts faits (dessins, explications, etc ...)il y a donc un paramètre que l'on ignore
Tu y seras encore dans quelques mois, si tu n'en tiens pas compte.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Donc ton code n'est pas universsel en faites, parce que c'est casiment impossible à faire je pense,
parce que chaque écran et carte graphique surtout n'enverront jamais le même nombre de point par pixel pour tomber sur une cellule précise avec un userform.
j'avoue que je ne comprend pas trop
tampis et bonne soirée à tous
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
oui mais le calcul c'est le même pour tous
1 point X((4/3)*(coeficient DPI))=X pixels
p=4/3 >>>>> =1.333333333333333
coeff DPI= 1.25 chez moi soit 125%
P X (coeficient DPI) =1,666666666666667
soit exemple 100 points=100 X1.666666666666667=166,66666667 pixel
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
nicolas teste ca et dis moi le msgbox
y a pas d'ambiguïté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SSub test7() With ActiveWindow widthpixel = .ActivePane.PointsToScreenPixelsX(ActiveSheet.[b1].Width) - .PointsToScreenPixelsX(0) coeff = widthpixel / [b1].Width texte = "en pixel b1.width = " & widthpixel & " pixels" & vbCrLf texte = texte & "coeff = le width en pixel diviser par le width en point = " & coeff & vbCrLf texte = texte & " le width pixel divisé par le coeff done le width en point =" & widthpixel / coeff & vbCrLf texte = texte & "le width directement demader par b1.width = " & [b1].Width End With MsgBox texte End Sub 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
oui ça correspond avec tes données, je sait pas pourquoi ça ne marche pas
parcontre je suis tomber la dessus et sa tombe bien en rajoutant -5
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 Option Explicit Private Declare Function GetDC& Lib _ "user32.dll" (ByVal hwnd&) Private Declare Function GetDeviceCaps& _ Lib "gdi32" (ByVal hDC&, ByVal nIndex&) Sub UserFormAlign1() '''''''''''''''OK''''''''''''''''' Dim x As Double, y As Double, w As Double, h As Double x = GetDeviceCaps(GetDC(0), 88) / 72 y = GetDeviceCaps(GetDC(0), 90) / 72 With UserForm1 .StartUpPosition = 0 .Left = (ActiveWindow.PointsToScreenPixelsX(ActiveCell.Left * x) * 1 / x) - 5 .Top = ActiveWindow.PointsToScreenPixelsY(ActiveCell.Top * y) * 1 / y .Show End With End Sub
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
oui avec les api je connais
ben tien si tu veux rire fait un msgbox x ou y tu va voir mort de rire
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
1.333333333
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
en modifiant ton code regarde, je sais pas plus mais c'est mieux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function RectanGleRange(usf, rng) Dim pttopx#, ttop#, lleft#, ecc#, Hheight#, Wwidth#, zz# With ActiveWindow pttopx = (.ActivePane.PointsToScreenPixelsX(3) - .ActivePane.PointsToScreenPixelsX(0)) / 3.014 'coefficient multiplicateur pixel zz = (.Zoom / 100) ecc = (usf.Width - usf.InsideWidth) * (4 / 3) 'epaisseur du cadre ecc2 = ((usf.Height - usf.InsideHeight) / 2) 'epaisseur du cadre lleft = (.ActivePane.PointsToScreenPixelsX(rng.Left) / pttopx) '* zz) + (ecc) ttop = (.ActivePane.PointsToScreenPixelsY(rng.Top) / pttopx) '* zz) + (ecc) Wwidth = IIf(rng.Columns.Count > 1, rng.Width, usf.Width) Hheight = IIf(rng.Rows.Count > 1, rng.Height, usf.Height) End With RectanGleRange = Array(lleft, ttop, Wwidth, Hheight) End Function
c'est du pif j'avoue mais si ça te donne une idée de ce qui va pas
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
regarde ce que ca donne chez moi
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