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

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    Re, voici sans API, moi ça marche , quand on monte dans les grand zoom il y à léger décalage, pas loin du but

    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
    Function PositionForm(FORM As Object, rng As Range)
    Dim K As Double, Z As Double
     
    Z = ActiveWindow.Zoom / 100
    K = ((ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - ActiveWindow.ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Z
     
    lleft = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K - 6
    ttop = ActiveWindow.PointsToScreenPixelsY(rng.Top * K * Z) / K
    PositionForm = Array(lleft, ttop)
     
    End Function
     
    Sub TestUserform()
        r = PositionForm(UserForm1, ActiveCell)
        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
      0  0

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    quand on monte dans les grand zoom il y à léger décalage
    Tu auras ainsi toujours un décalage, dès que tu t'écarteras du zoom 100 %.
    Le fait est tout simplement qu'il est bien évidemment plus visible en allant vars de grand zooms.
    Il est clair que pour le même décalage relatif, le décalage absolu est plus ou moins visible (repérable visuellement) selon qu'on agrandit ou que l'on rapetisse.
    Ce décalage est dû à la conjugaison de deux choses, auxquelles j'ai fait allusion plus haut :
    - un pixel (plus petite partie graphique) ne peut être représenté avec exactitude en conservant ses proportions si on lui applique un coefficient
    - il y a toujours perte de précision lorsque l'on fait successivement des opérations inverses (multiplication/division) sur un nombre

    Corriger cela est possible, mais alors sans passer par des conversions d'unités graphiques et ainsi :
    - en reprenant (en l'ayant "soupçonnée") la manière dont Microsoft a fait ses calculs pour garder à la fois précision et un rendu acceptable des traits. Il a tout simplement distingué dans ses calculs ce qu'il y a entre les bordures et les bordures elles-mêmes. Cela est particulièrement vrai, entre autres, pour le traitement de la barre de titres de la feuille active.
    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

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

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    J'ai fais une légère correction, avec ou sans API, ça tombe précis chez moi. (Windows 10 et Excel 2016)
    Avec API
    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 GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32.dll" (ByVal hdc As Long, ByVal nIndex As Long) As Long
     
    Function PositionForm(Form As Object, rng As Range)
    Dim K As Double, Z As Double
     
    Z = ActiveWindow.Zoom / 100
    K = GetDeviceCaps(GetDC(0), 88) / 72
    K = GetDeviceCaps(GetDC(0), 90) / 72
     
    lleft = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K - 5
    ttop = ActiveWindow.PointsToScreenPixelsY(rng.Top * K * Z) / K
    PositionForm = Array(lleft, ttop)
     
    End Function
     
    Sub TestUserform()
        r = PositionForm(UserForm1, ActiveCell)
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With
    End Sub
    Et sans API
    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
    Function PositionForm(FORM As Object, rng As Range)
    Dim Z As Double, K As Double
     
    Z = ActiveWindow.Zoom / 100
    K = ((ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - ActiveWindow.ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Z
     
    lleft = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K - 6
    ttop = ActiveWindow.PointsToScreenPixelsY(rng.Top * K * Z) / K
    PositionForm = Array(lleft, ttop)
     
    End Function
     
    Sub TestUserform()
        r = PositionForm(UserForm1, ActiveCell)
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With
    End Sub
    Je remerci toutefois Patrick et Unparia pour leurs aides (ou chamailleries je sais pas ), qui m'ont permis d'en arriver là.
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    ta proposition sans fonction de l'api de windows présente un décalage horizontal d'environ 2 pixels
    Ce qui ne va pas, c'est la valeur -6 fixée en dur pour ce qui est du left et qui dépend de la résolution de l'écran (nombre de pixels par point horizontalement).
    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

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

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    Citation Envoyé par unparia Voir le message
    ta proposition sans fonction de l'api de windows présente un décalage horizontal d'environ 2 pixels
    Ce qui ne va pas, c'est la valeur -6 fixée en dur pour ce qui est du left et qui dépend de la résolution de l'écran (nombre de pixels par point horizontalement).
    Oui j'ai essayé de trouver la solution pour corriger ça, mais je ne sais pas comment m'y prendre, mais chez moi ça colle
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Que se passe-t-il sur ta machine en transformant ainsi ta fonction (calcul séparé de K et K1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function PositionForm(FORM As Object, rng As Range)
    Dim Z As Double, K As Double
     
    Z = ActiveWindow.Zoom / 100
    K = ((ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - ActiveWindow.ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Z
    K1 = ((ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveSheet.[A1].Width) - ActiveWindow.ActivePane.PointsToScreenPixelsY(0)) / ActiveSheet.[A1].Width) / Z
    lleft = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K
    ttop = ActiveWindow.PointsToScreenPixelsY(rng.Top * K1 * Z) / K1
    PositionForm = Array(lleft, ttop)
     
    End Function
    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. #187
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    ça revient au même que si je retire le -6
    Nom : Capture.PNG
Affichages : 267
Taille : 17,4 Ko
    j'avais déjà essayé ça
    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

  8. #188
    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
    d'après la capture de nicolas vous être en train de trifouiller le paramètre que j'essaie de vous indicer depuis 3 jours

    nicolas ton code tel quel me done ca :
    Nom : Capture.JPG
Affichages : 281
Taille : 90,2 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

  9. #189
    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
    je suppose que unparia doit avoir le même résultat avec W10 et 2007 tandis que Nicolas est bon avec W et 2010
    et aussi que votre "-6" donne le résultat opposé l'un de l'autre hein!!!!?????

    ca y est vous voyez la
    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. #190
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    Oui comme tu disais, cela dépend surement de la version, je peux pas mettre en mode petite fenêtre comme toi pour voir ce que ça donne, moi ça colle au poil fenêtre réduite ou pleine écran
    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

  11. #191
    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
    cadeau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadre = IIf(Application.OperatingSystem Like "*/*" And application.version= 12, 0, 6)
    et oui la différence n'est que entre w10 et 2007 pour les autres sauf retour négatifs que je n'ai pas encore eu pour 2016

    autrement dit w7 2007 =cadre
    w10 2007 =pas cadre
    les autre rien
    pour quoi me direz vous hein???

    et bien il suffit de regarder nos captures et de voir qu'avec w7 l'userform a un cadre les autres non
    par contre avec w10 le shell prend en charge l'affichage des fenêtres mémé les thunderframes(userform) et comme il n'a pas de cadre pour l'affichage des fenêtres dans W10 je vous le donne dans le mille

    voila maintenant vous savez
    oupss j'ai corriger le mot répété dans le code
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Non patricktoulon, je n'ai pas la combinaison de version que tu dis.

    A Nicolas JACQUIN :
    Ton approche m'intéresse énormément, mais pas au prix d'une estimation en fonction de la/les version(s).
    Nous allons, si tu veux bien, faire une petite expérience dont je souhaite connaître les résultats sur ta machine.
    Elle a pour but de tenter de déterminer la véritable largeur totale de la bordure + titres de lignes
    ATTENTION / à ce stade, je ne m'intéresse qu'à ce positionnement horizontal, sans encore traiter le scroll horizontal éventuellement utilisé.
    Test à faire donc avec colonne A visible et première colonne

    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
    Function PositionForm(FORM As Object, rng As Range)
     Dim G As Double, D As Double, K As Double, Z As Double
     
     Z = ActiveWindow.Zoom / 100
     K = GetDeviceCaps(GetDC(0), 88) / 72
     G = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K
     D = ActiveWindow.PointsToScreenPixelsX((rng.Left + rng.Width) * K * Z) / K
     K = GetDeviceCaps(GetDC(0), 90) / 72
          'lleft = ActiveWindow.PointsToScreenPixelsX(rng.Left * K * Z) / K - 0 '==> on va essayer autrement
      ttop = ActiveWindow.PointsToScreenPixelsY(rng.Top * K * Z) / K
       corr = (ActiveWindow.Width - ActiveWindow.UsableWidth + 3) * Z
       lleft = Application.Left + ActiveWindow.Left + corr + (ActiveCell.Left * ActiveWindow.Zoom / 100)
      PositionForm = Array(lleft, ttop)
     
    End Function
     
    Private Sub CommandButton5_Click()
        Z = ActiveWindow.Zoom / 100
        r = PositionForm(UserForm1, ActiveCell)
        With UserForm1
          .Show 0: .Left = r(0): .Top = r(1)
          End With
    End Sub
    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

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

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    ça donne
    Nom : Capture.PNG
Affichages : 280
Taille : 44,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

  14. #194
    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
    unparia c'est quoi ta config ? vu les capture (dessin) que tu a posté il me semble bien reconnaitre 2007
    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. #195
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    unparia c'est quoi ta config ? vu les capture (dessin) que tu a posté il me semble bien reconnaitre 2007
    Présentement : 2007 pour Office mais sur XP
    Mais s'il faut passer par des si telle combinaison alors, sinon si ... etc ...
    Je préfère alors ne pas profiter de calculs déjà faits et faire les miens, même si plus nombreux.

    Constat : si le fait de cadre ou pas cadre changeait quoi que ce fût, cela voudrait alors dire que les conversions internes du genre PointsToScreenPixelsX, PointsToScreenPixelsY de Microsoft Office comportent en elles-mêmes des erreurs ou omissions de calculs
    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. #196
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je commence pour tout dire à me demander si ce ne sont pas les effets d'ombrage dont je vois qu'est doté le userform de Nicolas JACQUIN, qui, dans leur traitement, ne "déplacent" pas quelque peu le userform vers la droite !
    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

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

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    Je ne sait plus quoi faire de mieux, comme je disais, avec ma config c'est au poil.
    Après c'est sur que ça doit changer selon le système d'exploitation et de la version excel, plus tous les systèmes de personnalisation d'apparence selon les système.
    Désolé pour les autres mais là je pense que s'il faut tenir compte de chaque paramètre ça va être compliqué, là je pense que c'est plus du cas par cas.
    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

  18. #198
    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
    oui les ombrage y sont aussi pour quelque chose sur w7 aussi

    nous savons que tout ce qui est au dessus de la lite d'entête colonne n'est pas touché par le zoom on est bien d'accords

    et pourtant faite cette expérience résultat faux ou non on s'en fout les démentions ayant été calculées sur mon pc

    c'est pas le but de l'expérience mais plutôt le comportement du zoom


    faite le en zoom 100 puis augmentez le zoom et réessayez

    la je suis perplexe
    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 test()
    Set cible = [D3]
    Set app = Application: Set actw = ActiveWindow: Set usf = UserForm1
    Z = (actw.Zoom / 100)
    With actw.ActivePane: pppx = (.PointsToScreenPixelsX(3) - .PointsToScreenPixelsX(0)) / 3: End With
    Caption = usf.Height - usf.InsideHeight
    onglet = 19
    ruban = (CommandBars("Ribbon").Height / pppx) - onglet - Caption
    formulbar = 19
    headingbar = 18 * Z
    cadre = (app.Width - app.UsableWidth) - 1
     
    With UserForm1
    .Show 0
    .Left = 150
    .Top = app.Top + actw.Top + Caption + onglet + ruban + formulbar + Caption ' + headingbar
    .Height = 150
    End With
    End Sub
    alors si vous avez une explication digne de ce nom faite tourner
    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. #199
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 551
    Points : 787
    Points
    787
    Par défaut
    j'ai fait à 100 110 120
    Nom : Capture100.PNG
Affichages : 228
Taille : 18,8 Ko
    Nom : Capture110.PNG
Affichages : 244
Taille : 20,5 Ko
    Nom : Capture120.PNG
Affichages : 260
Taille : 22,4 Ko

    Pour moi la barre A B C .... des colonnes grandissent en hauteur avec le zoom et verticalement 1 2 3 .... pareils
    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

  20. #200
    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 je sais ca mai tu a vu que le userform est prevu pour etre juste au niveau de la barre de formule en aucun cas le zoom devrait apporter une modification
    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