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. #801
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    re

    Je ne comprends pas trop ce que vous calculez avec FindWindows (j'ai pas trop compris), mais l problème vient du contour de l'userform, non ????
    Peut-être me trompe-je, mais voyez sans correctif et n'importe quelle zoom
    Nom : Capture.PNG
Affichages : 239
Taille : 8,8 Ko
    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
      0  0

  2. #802
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    (.Width - .InsideWidth) / 2)= ce que j'ai à retirer au left

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
    Zooom = ActiveWindow.Zoom / 100
    With UserForm1
    plus =(.Width - .InsideWidth) / 2) 
    .Show 0
    .Top = ActiveWindow.PointsToScreenPixelsY(ActiveCell.Top * ppx * Zooom) / ppx
    .Left = (ActiveWindow.PointsToScreenPixelsX(ActiveCell.Left * ppx * Zooom) / ppx) - plus
    End With
    End Sub
    Pour moi cela fonctionne bien, n'importe quel zoom
    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
      0  0

  3. #803
    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
    A Nicolas
    Oui, mais ton image donne a penser que là, tu es avec un userform totalement plat (sans effets aero).
    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. #804
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    non non, l'aéro est bien activé, je me suis servi de la fonction avec les apis pour tirer les contours du userform
    (j'arrive plus a mettre la main dessus avec tout les test qui on été fait) , et parti avec un test tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Aligne_forme_simple()
    Dim PtToPx#, Zooom@
     
    Zooom = ActiveWindow.Zoom / 100
    PtToPx = ((ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveSheet.[a1].Width) - ActiveWindow.ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[a1].Width) / Zooom
     
    With UserForm1
    .Show 0
    .Top = (ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top) / PtToPx)
    .Left = (ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left) / PtToPx)
    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
      0  1

  5. #805
    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 suggère la lecture attentive de ces deux liens
    https://fr.wikipedia.org/wiki/Desktop_Window_Manager

    https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx

    Pour commencer à comprendre
    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. #806
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Je m'incline et vous laisse poursuivre sur votre piste
    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
      0  1

  7. #807
    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
    Bonjour
    oui jacques c'est dwm.exe qui s'en charge je cherche de ce coté depuis un moment déjà mais je sais pas si on peut le gérer ou utiliser en VBA
    en C# oui je le sais
    en batch c'est net stop uxsms pour démarrer ou net stop uxsms pour l'arrêter en mode administrateur

    et pour le décalage W10 toute version si j'enlève les 3 points SWM_BORDERWIDTH( déterminable dans getsystemmetricS la 32 il me semble)que j'ai avec W7 2007 et que je multiplie par ppx et je les soustrait je tombe pile poil pour w 10

    jacques ce qui me conforte dans ton 2d lien c'est qu'il est bien précisé que la déstructuration des paramètres (pas tous) n'ont pas d'effet sur W10 je suis tenté de penser que j'ai raison depuis un moment
    window 10 a bien les bordures de W7 mais ells sont occultées ou pris en compte dans les calculs quand même ce que je pense depuis un moment déjà

    Disabling DWM Composition
    Note As of Windows 8, the information in this section is no longer valid.
    DWM can no longer be programmatically disabled, nor is it disabled
    when an application attempts to draw to the primary display surface.
    The following information applies to only Windows 7 and earlier systems.
    Français
    Désactivation de la composition de DWM
    Remarque À partir de Windows 8, les informations contenues dans cette section ne sont plus valides.
    DWM ne peut plus être désactivé par programmation, et il n'est pas désactivé
    quand une application tente de dessiner sur la surface d'affichage principale.
    Les informations suivantes s'appliquent uniquement aux systèmes Windows 7 et antérieurs
    .
    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. #808
    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
    Remarque À partir de Windows 8, les informations contenues dans cette section ne sont plus valides.
    n'est pas la traduction exacte, qui est

    "Prenez note de ce que les indications données dans cette section ne sont plus valables en ce qui concerne Windows 8"

    (juste pour que les choses soient précises).
    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. #809
    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
    c'est valable pour W10 aussi
    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. #810
    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
    vous aviez testé celle ci
    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
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long
    Sub test_userform_replace()
    'récuperation du coefficient ppx(pixel to point)
        With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
        With ActiveWindow
            'recuperation des point X/Y avec pointstoscreenpixels
            x = (.ActivePane.PointsToScreenPixelsX([d3].Left)) / ppx: Y = (.ActivePane.PointsToScreenPixelsY([d3].Top)) / ppx
            With UserForm1: .Show 0:
                handle1 = FindWindow(vbNullString, UserForm1.Caption)    'hwnd de l'userform(caption)
                .Left = x: .Top = Y:    'positionnement selon pointstoscreenpixels
                handlex = WindowFromPoint(((x) * ppx), ((Y + 10) * ppx))    'récupération du handle vraiment présent sous les points de pointstoscreenpixel
                ' si on est dessus le userform alors on est soit trop court soit pilepoil sinon on est plus loin que les points
                c = IIf(handlex = handle1, 1, -1): a = 0    'donc on ajoutera (1)   si dessus on enlèvera(-1) si on est en dehors incrémenté dans un do loop
                'do loop pour le left: on limite la boucle a 20 itérations en cas de raté pour eviter de boucler infiniment
                Do: a = a + 1: .Left = .Left + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20
                ' on a donc le x(left exact)maintenant on fait exactement pareil pour le top(Y)
                x = .Left * ppx: handlex = WindowFromPoint((x * ppx), (Y * ppx))    'on reprend donc le handlex avec le x exact du userform et le y de pointstoscreenpixel
                c = IIf(handlex = handle1, 1, -1): a = 0    ' on fait pareil que pour le x si dessus 1 sinon -1 ici on limitera aussi la boucle a 20 itérations
                Do: a = a + 1: .Top = .Top + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20
            End With
        End With
    End Sub
    normalement si je ne me trompe pas au pire il devrait avoir "1 point " de défaut du a l'itération du premier tour même si c'est bon d'entrée de jeu
    je ne prends pas en considération les version
    le principe est juste capter le handle de départ au même cordonnées si c'est le userform c= 1 sinon -1
    et dans les deux do loop (left/top) je bouje le userform jusqu'à que les coordonnées me donne un autre handle
    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. #811
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Bonjour Patrick,
    voila le résult
    Nom : Capture.PNG
Affichages : 216
Taille : 2,5 Ko
    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
      0  0

  12. #812
    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
    il faut mettre des espions pour a dans chaque do loop pour voir si il est capté au depart
    comme toi tu est plus bas et plus loin au depart il est possible que le premier do loop monte a 20
    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. #813
    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 sais pas quel regard vous posez sur les choses.
    Le mien est on ne peut plus clair --->>
    1) Excel n'a rien à voir dans cet aspect-là : savoir positionner précisément une " image " crée par aero en un point spécifié de l'écran. Excel ou pas Excel !
    On y parvient si cette " image " est une fenêtre Windows à part entière et je vois mal comment on peut y parvenir si tel n'est pas le cas.
    2) dwm.exe ne me semble pas avoir d'autre finalité que de dessiner l' "image" Aero. Je vois mal en quoi il permettrait de déplacer cette " image "
    3) je n'ai pas aero et ne peut donc fouiller à la recherche d'une éventuelle API spécifique à cet outil et qui abriterait éventuellement des fonctions permettant un déplacement.
    Je me retrouve donc dans la position de celui qui, lisant sur la toile, tente comme il le peut et sans pouvoir tester, de déterminer ce qui pourrait permettre ce déplacement de l' "image " aero elle même.
    En l'état actuel des choses, je ne peux que tenter sur la base de suppositions.

    Ce ne sera qu'après ces tentatives de prise de connaissances/aero que je maintiendrai mon "test sur le 6" (surtout s'il est dit que l' "image" est une fenêtre Windows à part entière ou qu'au moins un doute persiste à ce sujet) ou qu'au contraire mes recherches conduisent à la découverte que cette "image aero" n'est pas une fenêtre Windows à part entière.

    Voilà, Messieurs.
    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. #814
    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
    que dit le message
    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
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long
    Sub test_userform_replace()
    'récuperation du coefficient ppx(pixel to point)
        With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
        With ActiveWindow
            'recuperation des point X/Y avec pointstoscreenpixels
            x = (.ActivePane.PointsToScreenPixelsX([d3].Left)) / ppx: Y = (.ActivePane.PointsToScreenPixelsY([d3].Top)) / ppx
            With UserForm1: .Show 0:
                handle1 = FindWindow(vbNullString, UserForm1.Caption)    'hwnd de l'userform(caption)
                .Left = x: .Top = Y:    'positionnement selon pointstoscreenpixels
                handlex = WindowFromPoint(((x) * ppx), ((Y + 10) * ppx))    'récuperation du handle vraiment present sous les points de pointstoscreenpixel
                ' si on est dessus le userform alors on est soit trop court soit pilepoil sinon on est plus loin que les points
                c = IIf(handlex = handle1, 1, -1): a = 0    'donc on ajoutera (1)   si dessus on enlèvera(-1) si on est en dehors incrementé dans un do loop
                'do loop pour le left: on limite la boucle a 20 iteration en cas de raté pour eviter de boucler infiniment
                Do: a = a + 1: .Left = .Left + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20
                texte = "pour le left C= " & c & " et a = " & a & vbCrLf
                ' on a donc le x(left exact)maintenant on fait exactement pareil pour le top(Y)
                x = .Left * ppx: handlex = WindowFromPoint((x * ppx), (Y * ppx))    'on reprend donc le handlex avec le x exact du userform et le y de pointstoscreenpixel
                c = IIf(handlex = handle1, 1, -1): a = 0    ' on fait pareil que pour le x si dessus 1 sinon -1 ici on limitera aussi la boucle a 20 itérations
                Do: a = a + 1: .Top = .Top + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20
                texte = texte & "pour le top  C= " & c & " et a = " & a
     
            End With
        End With
        MsgBox texte
    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
      0  1

  15. #815
    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
    1) Excel n'a rien à voir dans cet aspect-là : savoir positionner précisément une " image " crée par aero en un point spécifié de l'écran. Excel ou pas Excel !
    on a tres bien compris ton point de vue
    mais au vue de tout les tests on voit bien que aero n'est pas gérable alors on déplace le userform
    si tu préfère on pourrait changer le titre
    posé le userform la ou se trouve la cellule a l'écran
    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

  16. #816
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Nom : Capture.PNG
Affichages : 217
Taille : 14,1 Ko
    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
      0  0

  17. #817
    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
    ca semble confirmer ce que j'ai dis plus haut
    l'écart que tu a a gauche est pile poil celui des bordures W7 tu a donc bien des bordures mais elles sont occultées(transparence)
    je vois que ca
    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

  18. #818
    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
    mon switch est finalement bien plus simple hein !!?
    juste par curiosité
    que dis le message ici
    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
    Sub test_userform_replace333()
    'récuperation du coefficient ppx(pixel to point)par le dpi
        With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
        With ActiveWindow
            'recuperation des point X/Y avec pointstoscreenpixels
            Z = .Zoom / 100
           ppxL = ((.ActivePane.PointsToScreenPixelsX([d3].Width) + 1) - (.ActivePane.PointsToScreenPixelsX(0) + 1)) / (([d3].Width) + 1) / (Z + 0.01)
            x = (.ActivePane.PointsToScreenPixelsX([d3].Left) / ppxL)
            x2 = (.ActivePane.PointsToScreenPixelsX([d3].Left) / ppx)
     
            MsgBox "difference en pixel " & x - x2 & vbCrLf & " diiference en points " & (x - x2) / ppx
             With UserForm1:
             '.Show 0:
                '.Left = (x + 1) / ppxL: .Top = (Y + 1) / ppxL: 'positionnement selon pointstoscreenpixels
            End With
        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
      0  1

  19. #819
    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
    Il n'est pas certain, Patrick qu'une telle démarche aboutisse. Plusieurs raisons à cela, parmi lesquelles :
    - chou blanc si pas fenêtre Windows à part entière
    - si (dit plus haut) fenêtre Windows à part entière : gaffe à ce que retourne Findwindows qui s'appuie sur un caption qui peut être identique pour les deux fenêtres et sera retenue la 1ère trouvée et non forcément celle du userform lui-même.
    Moi, je n'ai pas aero, mais toi oui : des essais avec enumwindows te conduiront PEUT-ETRE à y voir plus clair ! Je les ferais, si j'étais toi et sur ta machine.

    Par ailleurs : la librarie utilisée par aero semble être la librairie dwmapi.dll. Il n'est pas interdit de penser qu'il serait utile de s'intéresser à la DwmExtendFrameIntoClientArea qu'elle contient entre autres fonctions. Je ne peux le faire (sans aero).
    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. #820
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Nom : Capture.PNG
Affichages : 403
Taille : 6,5 Ko
    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
      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