IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Positionner curseur sur une cellule sélectée Windows Excel VBA


Sujet :

Macros et VBA Excel

  1. #21
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    Excuse-moi, patricktoulon, mais :
    1) tu fais (tentes de faire) exactement le contraire de ce qui est demandé !
    Pour rappel :
    A sa suite, je voudrais simplement positionner la flèche de la souris au milieu de cette cellule sélectée.
    Cela quelque soit la taille de la feuille affichée et son positionnement sur l'écran..
    Il s'agit donc de déterminer non à quelle cellule correspondent des coordonnées à l'écran, mais bel et bien le contraire : déterminer les coordonnées à l'écran correspondant à une cellule déterminée, hein ...
    2) je ne vois nulle part, de surcroît la conversion nécessaire Points/pixels !
    3) je ne vois non plus nulle part le moindre calcul incluant les coordonnées de la cellule

    Je te laisse d'abord réfléchir seul. Le temps qu'il te faudra.

    Je mettrai ensuite dans la section contributions deux codes :
    - l'un pour placer un userform sur une cellule, de sorte à ce que le coin supérieur gauche de ce userform corresponde exactement à celui du coin supérieur gauche de la cellule choisie
    ce code-là n'utilisera qu'une seule fonction de l'Api de Windows : celle nécessaire à déterminer la hauteur de la barre de titre d'une fenêtre Windows (15, en général) et ... tout le reste sans la moindre fonction de l'Api de Windows
    - l'autre pour placer à l'écran, sur la cellule (en son centre, même) le curseur de la souris. Et ce deuxième code utilisera, lui, des fonctions de l'Api de Windows, mais uniquement pour faire la conversion Points -->> pixels (en général par application du coefficient 1.333, mais pas forcément toujours --->> et donc calcul à faire si l'on veut être universel).

    Si tu es vraiment au fait de certains aspects, il ne devrait pas t'échapper qu'aucune conversion n'est nécessaire dans le premier code et qu'elle l'est par contre (et pour cause) dans le second.

    Et tu verras alors que ce que tu appelles "ma petite fonction" est tout simplement l'utilisation des aptitudes de VBA (celles que j'ai signalées) et non les miennes

    En attendant : je te laisse réfléchir (tu aimes cela, non ?).

    EDIT : j'ignore les raisons de la démarche du demandeur et ne veux pas en entendre parler, y compris si je les "devine" et les désapprouve totalement
    Je me contente ici de traiter de sorte à y parvenir. Point barre.

    EDIT 2 : je te "vois" en train de commencer à t'y intéresser, à la conversion nécessaire. C'est bien. C'est par là qu'il faut commencer.
    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.
      0  1

  2. #22
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bien au contraire il y a bien incidence au fait de l'amelioration de l'affichage
    je viens de tester une chose simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, ByVal Y As Integer) As Long
     
    Sub test3()
    curseur_dans_cellule ([B3])
    End Sub
    Function curseur_dans_cellule(rng)
    X = ActiveWindow.PointsToScreenPixelsX(rng.Left) ' + ActiveWindow.PointsToScreenPixelsX(rng.Width / 2)
    Y = ActiveWindow.PointsToScreenPixelsY(rng.Top) '+ ActiveWindow.PointsToScreenPixelsY(rng.Height / 2)
    SetCursorPos X, Y
    End Function
    ca fonctionne très bien si je suis a 100% mais a 125% ca déraille
    Nom : Capture.JPG
Affichages : 988
Taille : 74,5 Ko
    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
      0  1

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    1)
    ca fonctionne très bien si je suis a 100% mais a 125% ca déraille
    Pas chez moi (à 100 % se met au milieu de A2 et non en coin supérieur gauche de B3)

    2) il te faut comprendre ce qu'est le zoom. Tu vois un "miroir" (comme avec un vrai resizer). Tu restes (sans le voir) sur l'interface entière, les coordonnées, elles, gardant totalement leurs valeurs
    Il est très important de bien comprendre ce mécanisme-là.
    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.
      0  1

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    j'avoue que je comprends pas très bien le zoom est a 100% l'affichage Windows est a 125%
    pour moi il faut:
    determiner le left et top 0 de la grille et ensuite calculer selon la cellule en paramètres
    meme pointtoscrennpixel(X/y)donne des résultats surprenant

    de toute façon c'est un problème que j'avais déjà observé dans une discutions sur l'affichage d'un userform sur une cellule en paramètre
    le demandeur était si je me souviens bien cerede2000 ca doit remonter a un an environ je vais récupérer le lien de la discutions si je le retrouve
    sans les api c'est walouh walouh
    mais si tu a un exemple sans apis qui me donne par exemple le left et top de D4 je suis preneur
    après honnêtement
    mes 2 do loop sur rangefrompoint font tres bien l'affaire si on voulait directement paramétrés sur la cellule en paramètre et la oui pas d'api
    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
      0  1

  5. #25
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    pour moi il faut:
    determiner le left et top 0 de la grille et ensuite calculer selon la cellule en paramètres
    Pardi ...
    Et crois-tu que je ne t'ai pas dit (presque totalement) sans utiliser l'api de windows ?
    C'est ce que tu as appelé ma "petite fonction", qui te le permet.
    Je t'ai même dit plus haut (relis-moi) qu'il fallait ensuite convertir pour le curseur, mais qu'il n'était pas nécessaire de convertir pour simplement placer un userform .

    Et ces coordonnées ne dépendent, elles, en aucun cas du zoom. Elles restent fixes. Seul le "miroir" résultant du zoom voit ses dimensions, etc ... transformées à l'intérieur de cette fenêtre (qui, elle, est fixe)
    Elles dépendent par contre de ce que l'on affiche ou non les titres (de lignes et de colonnes), ainsi que des coordonnées de l'Application et de celles de la grille au sein de la fenêtre active

    J'ai maintenant sommeil, mais je reviens demain matin te montrer toute cette partie-là avec une petite demo.
    Bonne nuit
    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.
      0  1

  6. #26
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    Un petit dessin qui me permettra, après ma partie de pêche, de faire en sorte que nous parlions toujours des mêmes choses et facilitera donc mes explications :
    Nom : grille.JPG
Affichages : 974
Taille : 115,7 Ko

    Il est une copie d'écran (un peu colorée ensuite) faite en ayant mis en flottement tant la fenêtre de l'application que celle active (activeWindow). Et c'est bien, puisque le curseur devra être correctement placé quelle que puisse être la position de chacune de ces deux fenêtres.

    A plus.
    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.
      0  1

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re bonjour unparia
    oui on parle de la même chose
    d'ailleurs il me semble que les classe name des handle de ses partie sont "xlmain,excelH,excel etc
    le principe je l'ai bien compris d'ailleurs tu trouvera dans les contrib effet mouse over sur sheet qui commence a dater d'ailleurs dans cet exercice j'identifiais très bien les
    parties sauf que quand je suis a 125% pour l'amélioration Windows ca déraille sauf si les api sont utilisées
    c'est pour cela que quand tu dis sans api je suis septique

    findwindow pour "xlmain"

    getwindownext pour les filles
    si je me souviens bien c'est "excelH" la grille

    et createregionrect pour xlmain et excelH

    le reste n' est n'est que calcul
    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
      0  1

  8. #28
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    Bien
    on en revient donc à nos "moutons", là où on en était, à savoir (je te cite) :
    pour moi il faut:
    determiner le left et top 0 de la grille (donc la zone jaune sur mon image)
    sans utiliser de fonctions de l'Api de Windows et quelles que puissent être :
    - la position de la fenêtre application (encadrée de vert sur mon image)
    - la position de la fenêtre activeWindow (encadrée de rouge sur mon image)
    - le facteur de zoom choisi
    - la hauteur "prise" par les différents "menus/outils") , voire le non-affichage éventuel de cette zone
    - la décision d'afficher ou non les titres de la grille (zone jaune)

    Si c'est cela, qu'il te faut, regarde :

    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
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
     
    Private Sub CommandButton1_Click()
    Dim k_pt_pix As Single, dh As Single, bl As Single, h As Single, l As Single
      '---------------------------------------------------------------------------------------------------
      k_pt_pix = 1.333 ' juste pour gagner du temps en attendant. on calculera exactement ensuite avec fonction api
      lbordure = 2   ' juste pour gagner du temps  en attendant. on calculera exactement ensuite avec fonction api
      '---------------------------------------------------------------------------------------------------
      bh = IIf(ActiveWindow.DisplayHeadings, lbordure * 3, 2) ' 4 bords + 2 si titres et 4 bords seulement si non
      bh = bh / k_pt_pix
     
     
      bl = IIf(ActiveWindow.DisplayHeadings, lbordure, 0) ' 2 bord si titre 0 bord si non
      bl = bl / k_pt_pix
     
      h = Application.Top + (Application.Height - Application.UsableHeight) + ActiveWindow.Top
      l = Application.Left + (Application.Width - Application.UsableWidth) + ActiveWindow.Left
      SetCursorPos l * k_pt_pix + bl, (h * k_pt_pix) + bh
      Exit Sub
    End Sub
    à chaque clic sur le bouton de commande, le curseur ira se placer dans l'angle supérieur droit de la zone jaune en toutes circonstances
    Essaye d'éviter tout tremblement lors du clic, car cela déplacerait à nouveau le curseur (bien évidemment)

    Alors : tu l'as, ce que tu voulais ?

    Bien que ce n'est pas tout-à-fait ainsi, que je procèderai in fine. Je me suis là contenté de t'y mettre, à ces coordonnées 0,0 de la seule grille, que tu disais vouloir.
    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.
      0  1

  9. #29
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui si tu veux
    mais tu vois bien que sans apis il t'est difficile de mesuser

    tes "*3" ou "*2" ou "*1.333" "1.333333333333333" pour etre exact ne sont pas précis

    pour les bordure etc je te suggère de regarder plus loin que 0 et 1 pour getsystemmetric
    sinon simplement en dynamique ou que soit la fenêtre excel qu'il y est affichage ruban ou pas et autre toutes autre barre confondues

    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
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, ByVal Y As Integer) As Long
    Type RECT: Left As Long: Top As Long: Right As Long: Bottom As Long: End Type
    Sub test()
    cursor_on_cellule [D4]
    End Sub
    Function cursor_on_cellule(rng)
    Dim r As RECT
    GetWindowRect Application.hwnd, r
    Cells(1, 1) = r.Left
    X = r.Left: Y = r.Top + 300
    Do
    X = X + 1
    If TypeName(ActiveWindow.RangeFromPoint(X, Y)) = "Range" Then
    If ActiveWindow.RangeFromPoint(X, Y).Column = rng.Column Then Exit Do
    End If
    Loop
    leleft = X
    Y = r.Top: X = leleft
    Do
    Y = Y + 1
    If TypeName(ActiveWindow.RangeFromPoint(X, Y)) = "Range" Then
    If ActiveWindow.RangeFromPoint(X, Y).Row = rng.Row Then Exit Do
    End If
    Loop
    ActiveWindow.RangeFromPoint(X, Y).Activate
    SetCursorPos X + 10, Y + 10
    End Function
    Nom : demo.gif
Affichages : 963
Taille : 293,3 Ko
    je vais regarder ton code plus en profondeur
    pour getsystemmetrics
    SM_ARRANGE The flags that specify how the system arranged minimized windows. For more information, see the Remarks section in this topic.
    SM_CLEANBOOT The value that specifies how the system is started: 0 Normal boot 1 Fail-safe boot 2 Fail-safe with network boot A fail-safe boot (also called SafeBoot, Safe Mode, or Clean Boot) bypasses the user startup files.
    SM_CMONITORS The number of display monitors on a desktop. For more information, see the Remarks section in this topic.
    SM_CMOUSEBUTTONS The number of buttons on a mouse, or zero if no mouse is installed.
    SM_CXBORDER The width of a window border, in pixels. This is equivalent to the SM_CXEDGE value for windows with the 3-D look.
    SM_CXCURSOR The width of a cursor, in pixels. The system cannot create cursors of other sizes.
    SM_CXDLGFRAME This value is the same as SM_CXFIXEDFRAME.
    SM_CXDOUBLECLK The width of the rectangle around the location of a first click in a double-click sequence, in pixels. The second click must occur within the rectangle that is defined by SM_CXDOUBLECLK and SM_CYDOUBLECLK for the system to consider the two clicks a double-click. The two clicks must also occur within a specified time. To set the width of the double-click rectangle, call SystemParametersInfo with SPI_SETDOUBLECLKWIDTH.
    SM_CXDRAG The number of pixels on either side of a mouse-down point that the mouse pointer can move before a drag operation begins. This allows the user to click and release the mouse button easily without unintentionally starting a drag operation. If this value is negative, it is subtracted from the left of the mouse-down point and added to the right of it.
    SM_CXEDGE The width of a 3-D border, in pixels. This metric is the 3-D counterpart of SM_CXBORDER.
    SM_CXFIXEDFRAME The thickness of the frame around the perimeter of a window that has a caption but is not sizable, in pixels. SM_CXFIXEDFRAME is the height of the horizontal border, and SM_CYFIXEDFRAME is the width of the vertical border. This value is the same as SM_CXDLGFRAME.
    SM_CXFOCUSBORDER The width of the left and right edges of the focus rectangle that the DrawFocusRect draws. This value is in pixels.
    SM_CXFRAME This value is the same as SM_CXSIZEFRAME.
    SM_CXFULLSCREEN The width of the client area for a full-screen window on the primary display monitor, in pixels. To get the coordinates of the portion of the screen that is not obscured by the system taskbar or by application desktop toolbars, call the SystemParametersInfo function with the SPI_GETWORKAREA value.
    SM_CXHSCROLL The width of the arrow bitmap on a horizontal scroll bar, in pixels.
    SM_CXHTHUMB The width of the thumb box in a horizontal scroll bar, in pixels.
    SM_CXICON The default width of an icon, in pixels. The LoadIcon function can load only icons with the dimensions that SM_CXICON and SM_CYICON specifies.
    SM_CXICONSPACING The width of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of size SM_CXICONSPACING by SM_CYICONSPACING when arranged. This value is always greater than or equal to SM_CXICON.
    SM_CXMAXIMIZED The default width, in pixels, of a maximized top-level window on the primary display monitor.
    SM_CXMAXTRACK The default maximum width of a window that has a caption and sizing borders, in pixels. This metric refers to the entire desktop. The user cannot drag the window frame to a size larger than these dimensions. A window can override this value by processing the WM_GETMINMAXINFO message.
    SM_CXMENUCHECK The width of the default menu check-mark bitmap, in pixels.
    SM_CXMENUSIZE The width of menu bar buttons, such as the child window close button that is used in the multiple document interface, in pixels.
    SM_CXMIN The minimum width of a window, in pixels.
    SM_CXMINIMIZED The width of a minimized window, in pixels.
    SM_CXMINSPACING The width of a grid cell for a minimized window, in pixels. Each minimized window fits into a rectangle this size when arranged. This value is always greater than or equal to SM_CXMINIMIZED.
    SM_CXMINTRACK The minimum tracking width of a window, in pixels. The user cannot drag the window frame to a size smaller than these dimensions. A window can override this value by processing the WM_GETMINMAXINFO message.
    SM_CXPADDEDBORDER The amount of border padding for captioned windows, in pixels.
    SM_CXSCREEN The width of the screen of the primary display monitor, in pixels. This is the same value obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, HORZRES).
    SM_CXSIZE The width of a button in a window caption or title bar, in pixels.
    SM_CXSIZEFRAME The thickness of the sizing border around the perimeter of a window that can be resized, in pixels. SM_CXSIZEFRAME is the width of the horizontal border, and SM_CYSIZEFRAME is the height of the vertical border. This value is the same as SM_CXFRAME.
    SM_CXSMICON The recommended width of a small icon, in pixels. Small icons typically appear in window captions and in small icon view.
    SM_CXSMSIZE The width of small caption buttons, in pixels.
    SM_CXVIRTUALSCREEN The width of the virtual screen, in pixels. The virtual screen is the bounding rectangle of all display monitors. The SM_XVIRTUALSCREEN metric is the coordinates for the left side of the virtual screen.
    SM_CXVSCROLL The width of a vertical scroll bar, in pixels.
    SM_CYBORDER The height of a window border, in pixels. This is equivalent to the SM_CYEDGE value for windows with the 3-D look.
    SM_CYCAPTION The height of a caption area, in pixels.
    SM_CYCURSOR The height of a cursor, in pixels. The system cannot create cursors of other sizes.
    SM_CYDLGFRAME This value is the same as SM_CYFIXEDFRAME.
    SM_CYDOUBLECLK The height of the rectangle around the location of a first click in a double-click sequence, in pixels. The second click must occur within the rectangle defined by SM_CXDOUBLECLK and SM_CYDOUBLECLK for the system to consider the two clicks a double-click. The two clicks must also occur within a specified time. To set the height of the double-click rectangle, call SystemParametersInfo with SPI_SETDOUBLECLKHEIGHT.
    SM_CYDRAG The number of pixels above and below a mouse-down point that the mouse pointer can move before a drag operation begins. This allows the user to click and release the mouse button easily without unintentionally starting a drag operation. If this value is negative, it is subtracted from above the mouse-down point and added below it.
    SM_CYEDGE The height of a 3-D border, in pixels. This is the 3-D counterpart of SM_CYBORDER.
    SM_CYFIXEDFRAME The thickness of the frame around the perimeter of a window that has a caption but is not sizable, in pixels. SM_CXFIXEDFRAME is the height of the horizontal border, and SM_CYFIXEDFRAME is the width of the vertical border. This value is the same as SM_CYDLGFRAME.
    SM_CYFOCUSBORDER The height of the top and bottom edges of the focus rectangle drawn by DrawFocusRect. This value is in pixels.
    SM_CYFRAME This value is the same as SM_CYSIZEFRAME.
    SM_CYFULLSCREEN The height of the client area for a full-screen window on the primary display monitor, in pixels. To get the coordinates of the portion of the screen not obscured by the system taskbar or by application desktop toolbars, call the SystemParametersInfo function with the SPI_GETWORKAREA value.
    SM_CYHSCROLL The height of a horizontal scroll bar, in pixels.
    SM_CYICON The default height of an icon, in pixels. The LoadIcon function can load only icons with the dimensions SM_CXICON and SM_CYICON.
    SM_CYICONSPACING The height of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of size SM_CXICONSPACING by SM_CYICONSPACING when arranged. This value is always greater than or equal to SM_CYICON.
    SM_CYKANJIWINDOW For double byte character set versions of the system, this is the height of the Kanji window at the bottom of the screen, in pixels.
    SM_CYMAXIMIZED The default height, in pixels, of a maximized top-level window on the primary display monitor.
    SM_CYMAXTRACK The default maximum height of a window that has a caption and sizing borders, in pixels. This metric refers to the entire desktop. The user cannot drag the window frame to a size larger than these dimensions. A window can override this value by processing the WM_GETMINMAXINFO message.
    SM_CYMENU The height of a single-line menu bar, in pixels.
    SM_CYMENUCHECK The height of the default menu check-mark bitmap, in pixels.
    SM_CYMENUSIZE The height of menu bar buttons, such as the child window close button that is used in the multiple document interface, in pixels.
    SM_CYMIN The minimum height of a window, in pixels.
    SM_CYMINIMIZED The height of a minimized window, in pixels.
    SM_CYMINSPACING The height of a grid cell for a minimized window, in pixels. Each minimized window fits into a rectangle this size when arranged. This value is always greater than or equal to SM_CYMINIMIZED.
    SM_CYMINTRACK The minimum tracking height of a window, in pixels. The user cannot drag the window frame to a size smaller than these dimensions. A window can override this value by processing the WM_GETMINMAXINFO message.
    SM_CYSCREEN The height of the screen of the primary display monitor, in pixels. This is the same value obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, VERTRES).
    SM_CYSIZE The height of a button in a window caption or title bar, in pixels.
    SM_CYSIZEFRAME The thickness of the sizing border around the perimeter of a window that can be resized, in pixels. SM_CXSIZEFRAME is the width of the horizontal border, and SM_CYSIZEFRAME is the height of the vertical border. This value is the same as SM_CYFRAME.
    SM_CYSMCAPTION The height of a small caption, in pixels.
    SM_CYSMICON The recommended height of a small icon, in pixels. Small icons typically appear in window captions and in small icon view.
    SM_CYSMSIZE The height of small caption buttons, in pixels.
    SM_CYVIRTUALSCREEN The height of the virtual screen, in pixels. The virtual screen is the bounding rectangle of all display monitors. The SM_YVIRTUALSCREEN metric is the coordinates for the top of the virtual screen.
    SM_CYVSCROLL The height of the arrow bitmap on a vertical scroll bar, in pixels.
    SM_CYVTHUMB The height of the thumb box in a vertical scroll bar, in pixels.
    SM_DBCSENABLED Nonzero if User32.dll supports DBCS; otherwise, 0.
    SM_DEBUG Nonzero if the debug version of User.exe is installed; otherwise, 0.
    SM_IMMENABLED Nonzero if Input Method Manager/Input Method Editor features are enabled; otherwise, 0. SM_IMMENABLED indicates whether the system is ready to use a Unicode-based IME on a Unicode application. To ensure that a language-dependent IME works, check SM_DBCSENABLED and the system ANSI code page. Otherwise the ANSI-to-Unicode conversion may not be performed correctly, or some components like fonts or registry settings may not be present.
    SM_MEDIACENTER Nonzero if the current operating system is the Windows XP, Media Center Edition, 0 if not.
    SM_MENUDROPALIGNMENT Nonzero if drop-down menus are right-aligned with the corresponding menu-bar item; 0 if the menus are left-aligned.
    SM_MIDEASTENABLED Nonzero if the system is enabled for Hebrew and Arabic languages, 0 if not.
    SM_MOUSEPRESENT Nonzero if a mouse is installed; otherwise, 0. This value is rarely zero, because of support for virtual mice and because some systems detect the presence of the port instead of the presence of a mouse.
    SM_MOUSEHORIZONTALWHEELPRESENT Nonzero if a mouse with a horizontal scroll wheel is installed; otherwise 0.
    SM_MOUSEWHEELPRESENT Nonzero if a mouse with a vertical scroll wheel is installed; otherwise 0.
    SM_NETWORK The least significant bit is set if a network is present; otherwise, it is cleared. The other bits are reserved for future use.
    SM_PENWINDOWS Nonzero if the Microsoft Windows for Pen computing extensions are installed; zero otherwise.
    SM_REMOTECONTROL This system metric is used in a Terminal Services environment. Its value is nonzero if the current session is remotely controlled; otherwise, 0.
    SM_REMOTESESSION This system metric is used in a Terminal Services environment. If the calling process is associated with a Terminal Services client session, the return value is nonzero. If the calling process is associated with the Terminal Server console session, the return value is 0. The console session is not necessarily the physical console. For more information, see WTSGetActiveConsoleSessionId.
    SM_SAMEDISPLAYFORMAT Nonzero if all the display monitors have the same color format, otherwise, 0. Two displays can have the same bit depth, but different color formats. For example, the red, green, and blue pixels can be encoded with different numbers of bits, or those bits can be located in different places in a pixel color value.
    SM_SECURE This system metric should be ignored; it always returns 0.
    SM_SERVERR2 The build number if the system is Windows Server 2003 R2; otherwise, 0.
    SM_SHOWSOUNDS Nonzero if the user requires an application to present information visually in situations where it would otherwise present the information only in audible form; otherwise, 0.
    SM_SHUTTINGDOWN Nonzero if the current session is shutting down; otherwise, 0.
    SM_SLOWMACHINE Nonzero if the computer has a low-end (slow) processor; otherwise, 0.
    SM_STARTER Nonzero if the current operating system is Windows XP Starter Edition; otherwise, 0.
    SM_SWAPBUTTON Nonzero if the meanings of the left and right mouse buttons are swapped; otherwise, 0.
    SM_TABLETPC Nonzero if the current operating system is the Windows XP Tablet PC edition, 0 if not.
    SM_XVIRTUALSCREEN The coordinates for the left side of the virtual screen. The virtual screen is the bounding rectangle of all display monitors. The SM_CXVIRTUALSCREEN metric is the width of the virtual screen.
    SM_YVIRTUALSCREEN The coordinates for the top of the virtual screen. The virtual screen is the bounding rectangle of all display monitors. The SM_CYVIRTUALSCREEN metric is the height of the virtual screen.
    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
      0  1

  10. #30
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    capture du resultat de ta macro dans le petit rectangle qui rend toutes les fenêtres ouvertes transparentes
    Nom : demo.gif
Affichages : 903
Taille : 790,9 Ko
    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
      0  1

  11. #31
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    mais tu vois bien que sans apis il t'est difficile de mesuser

    tes "*3" ou "*2" ou "*1.333" "1.333333333333333" pour etre exact ne sont pas précis

    pour les bordure etc je te suggère de regarder plus loin que 0 et 1 pour getsystemmetric
    Cela, je sais le faire sans problème, merci de me le suggérer, mais ... je l'ai dit, ne te semble-t-il pas ? (et je sais même aller encore plus loin... merci également).
    La question était de savoir si l'on peut ou non déterminer sans autres fonctions (autres que celles nécessaires pour la conversion de points à pixels la détermination de la largeur des bordures) de l'api de windows pour calculer ce dont nous avons besoin : tu sais maintenant que la réponse est OUI.

    Mais je vais te faire une réponse (tu la mérites) du berger à la bergère : que sont tes "300" et tes "10", hein ... ?
    Et qu'est donc cette boucle que tu fais pour savoir si tu es où cela convient ? -->> pas très orthodoxe, tout cela ... non ?
    Bref ...
    Continue à réfléchir... Moi, je vais faire ma siestita (c'est l'heure).
    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.
      0  1

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    que sont tes "300" et tes "10", hein ... ?
    c'est pour m'éviter de boucler sur tout le ruban pixel par pixel , mais on peut laisser 0 ca fonctionne aussi
    et 10 c'est pour entrer dans la cellule sinon c'est le coin gauche haut de la cellule

    mais dans tout les cas la méthodes la plus précise est la méthode avec getwindownext et la création de rectangle
    c'est la seule solution qui te donne un résultat réellement juste dans tout les cas de figure
    je ferait un exemple tout a l'heure en rentrant

    reste que quand même la fonction activewindow.pointToScreenPixel(X/Y) donnent des résultats surprenants en mode amélioration windows a 125%

    i 'me very apiwindows
    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
      0  1

  13. #33
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    reste que quand même la fonction activewindow.pointToScreenPixel(X/Y) donnent des résultats surprenants en mode amélioration windows a 125%
    Uniquement parce que tu n'as toujours pas compris ce qu'est une véritable "resizer" (le zoom en utilise également le même principe)
    Quant aux "approximations", je vais simplement te rappeler qu'un pixel n'est pas divisible, par définition
    et 10 c'est pour entrer dans la cellule sinon c'est le coin gauche haut de la cellule
    assez maladroit (quid si la cellule est plus petite, hein .. ?)
    i 'me very apiwindows
    y a mi ni me gusta ni imponer el uso de las funcciones del api de Windows (hay gente que ni tienen el sistema Windows), ni, haciendolo, tener que tener en cuenta el numero de bits del sistema ..
    Entendido ?
    (et la prochaine fois, je répondrai en Hindi).
    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.
      0  1

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    puré c'est incroyable
    pourrais tu donner une explication que je soit susceptible de comprendre en faisant abstraction de tes sous entendu

    ma question est simple et devrait avoir une réponse simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activewindow.pointToScreenPixel(cells(1,1).left)
    doit me donner
    1 la position left par rapport a la grille
    2 la position left par rapport a l'écran

    quoi qu'il en soit avec la même

    en mode Windows 100% j'ai un chiffre
    en mode Windows 125% j'en ai un autre

    c'est pas compliqué
    edit :
    c'est bien ce que je pensait ca donne bien la position par rapport a l'écran
    https://msdn.microsoft.com/fr-fr/lib.../ff838206.aspx

    sauf que x et y appliquer a set cursor ne donne pas bon
    pourtant avec les api ou même mes deux do loop j'obtient bien les même
    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
      0  1

  15. #35
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    Une chose est maintenant plus que certaine :
    Je parviens sans faille et sans extraire le moindre hwnd de l'activewindow :
    à placer mon curseur très exactement dans le coin supérieur gauche de la cellule de mon choix
    et ce :
    quels que puissent être :
    - la position de la fenêtre application (encadrée de vert sur mon image)
    - la position de la fenêtre activeWindow (encadrée de rouge sur mon image)
    - le facteur de zoom choisi
    - la hauteur "prise" par les différents "menus/outils") , voire le non-affichage éventuel de cette zone
    - la décision d'afficher ou non les titres de la grille (zone jaune)
    - le scroll en cours de la grille (qu'il soit ou non supérieur à 100)

    Voilà.
    Je vais maintenant :

    1) faire le ménage dans mon code, voire l'agiliser encore un peu
    2) attendre que tu en aies terminé toi également
    3) mettre ensuite (quand je trouverai un petit moment) dans la section "contributions" (comme promis) tout cela (placement d'un userform et placement du curseur).

    Je te laisse donc maintenant là, sauf si tu demandes des explications plus complètes en ce qui concerne le fonctionnement du "resizer/zoom". Je te les donnerai, mais n'accepterai pas de parler des autres aspects du code.
    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.
      0  1

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    selon Microsoft
    PointsToScreenPixelsX doit me donner la position en pixel par rapport a l'ecran et pareil pour y
    Méthode Window.PointsToScreenPixelsX (Excel)

    Office 2013 and later



    Convertit une mesure horizontale de points (coordonnées du document) en pixels d'écran (coordonnées de l'écran). Renvoie la mesure convertie en tant que valeur de type Long .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Sub test()
        With ActiveWindow
            d = Selection.Left + (Selection.Width / 2)
            c = Selection.Top + (Selection.Height / 2)
            x = .PointsToScreenPixelsX(d)
            y = .PointsToScreenPixelsY(c)
            Selection.Value = "x " & x & " y " & y
            SetCursorPos x, y
        End With
    End Sub
    et ben le curseur n'est pas au milieu
    reste une question
    serait ce parce que le left et le width ou le top et le height n'est pas donné par excel dans la même unité de mesure
    de toute facon dans l'infobulle en resizant la colonne on voit la diment en caractères et en pixel
    j'ai donc une largeur de 104 pixels dans l'infobulle et la fonction m'en donne 96
    on a donc déjà un soucis ici
    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
      0  1

  17. #37
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    Je ne veux tout simplement pas participer à une discussion de plus sur une base d'une démarche qui n'est pas la mienne
    Et c'est la raison de mon :

    Je te laisse donc maintenant là, sauf si tu demandes des explications plus complètes en ce qui concerne le fonctionnement du "resizer/zoom". Je te les donnerai, mais n'accepterai pas de parler des autres aspects du code
    Et je m'y tiens.
    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.
      0  1

  18. #38
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ok unparia
    je trouverais bien a un moment donné
    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
      0  1

  19. #39
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 430
    Points
    12 430
    Par défaut
    je trouverais bien a un moment donné
    Je n'en doute pas. Et ce sera dès que la réflexion sera complète sur chacun des aspects (je n'ai omis d'en mentionner aucun)
    Amitiés
    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.
      0  1

  20. #40
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re déjà
    mon top et left sans api c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    left_grille= .PointsToScreenPixelsX(0)
    top_grille= .PointsToScreenPixelsY(0)
    sa semble correct dans tous les mode affichage
    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
      0  1

Discussions similaires

  1. se positionner sur une cellule
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/01/2008, 19h07
  2. cliquer sur une cellule qui m'ouvre un autre fichier excel
    Par booskap dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/08/2007, 11h08
  3. [VBA-Excel] DblClick sur une cellule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2007, 10h51
  4. [VBA-Excel]Supprimer une colonne entiere basee sur une cellule
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2006, 22h08
  5. [Vba-Excel] Récupérer événement sur une cellule
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2006, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo