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. #641
    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
    Bonjours à tous,
    Désolé, mais en ce moment je n'ai pas trop le temps de vous suivre les amis
    @Jacques,
    Je suis impressionné de ton code qui reprend les derniers codes présenté, et en plus avec n'importe quel zoom
    mais non, pour moi cela donne exactement la même chose, je pensais à un code avec des calculs super savant à n'y comprendre (je parle pour moi)
    mais étant donné tes réponses depuis pas mal de temps, je m'attendais pas vraiment à ça à t'écouter
    Amicalement

    Nom : Capture.PNG
Affichages : 573
Taille : 12,7 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. #642
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    voila les macros...attention chantier en vrac ..

    pour ce tableau , avec le form positionné manuellement (pour déterminer x/y)
    excel 2010 et police 11
    Nom : CaptureC1.JPG
Affichages : 580
Taille : 108,3 Ko

    le code , dans module
    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
    29
    30
     
    Sub calcul()
        Application.Left = 0 '100
        Application.Top = 0
        [c5].Value = Application.Left
        [c6].Value = Application.Top
        '-----
        Set Wn = ActiveWorkbook.Windows(1)
        [c7].Value = Wn.Caption
        [c8].Value = Wn.Left
        [c9].Value = Wn.Top
        [c10].Value = Wn.PointsToScreenPixelsX(Wn.Left)
        [c11].Value = Wn.PointsToScreenPixelsY(Wn.Top)
        '-----
        [c12].Value = ActiveWindow.ActivePane.PointsToScreenPixelsX(0)
        [c13].Value = ActiveWindow.ActivePane.PointsToScreenPixelsY(0)
        '-----
        '[c14].Value = USF.Left
        '[c15].Value = USF.Top
     
        USF.Show
        'USF.Top = [c11].Value + [c9].Value - [c6].Value - 50 '137.8
        USF.Left = [c8].Value - 3
     
        USF.Top = [c6].Value  '137.8
        USF.Height = (162 - 22)
     
        [c16].Value = USF.Left
        [c17].Value = USF.Top
    End Sub
    dans feuille du tableau 2 boutons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub BTN1_Click()
        Call calcul
    End Sub
     
    Private Sub CommandButton2_Click()
        [c16].Value = Application.Windows(1).PointsToScreenPixelsX(BTN1.Left)
        [c17].Value = Application.Windows(1).PointsToScreenPixelsY(BTN1.Top)
     
        Call calcul
        USF.Show
    End Sub
    dans form
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Private Sub UserForm_Activate()
        'USF.Move ActiveWorkbook.Application.Left + 3, ActiveWorkbook.Application.Top
        'USF.Move (ActiveWorkbook.Application.Left + 3) + (ActiveWorkbook.ActiveSheet.[b2].Left), (ActiveWorkbook.Application.Top) + (ActiveWorkbook.ActiveSheet.[b2].Top)
        'USF.Move ActiveWorkbook.Charts.Application.Left + 3, ActiveWorkbook.Charts.Application.Top
        'USF.Move ActiveWorkbook.Windows.Application.Left + 3, ActiveWorkbook.Windows.Application.Top
        Lcel = ActiveWorkbook.ActiveSheet.[b2].Left
        Tcel = ActiveWorkbook.ActiveSheet.[b2].Top
        Lbook = ActiveWorkbook.Application.Left + 3
        Tbook = ActiveWorkbook.Application.Top
        'USF.Move Lbook + (Lcel - Lbook), Tbook + (Tcel - Tbook)
       ' MsgBox Lcel & vbCrLf & Tcel & vbCrLf & Lbook & vbCrLf & Tbook
        'USF.Move Application.Left + 3, Application.Top
     
        'USF.Move ActiveWindow.ActivePane.PointsToScreenPixelsX(0), ActiveWindow.ActivePane.PointsToScreenPixelsY(0)
        'USF.Move T_WnPointsToScreenPixelsX_WnLeft, T_WnPointsToScreenPixelsY_WnTop
     
       ' MsgBox Sheets("UN").BTN1.Left & vbCrLf & _
        ActiveWorkbook.Windows(1).PointsToScreenPixelsX(Sheets("UN").BTN1.Left) & vbCrLf & _
        ActiveWorkbook.Windows(1).PointsToScreenPixelsY(Sheets("UN").BTN1.Top)
     
        'USF.Left = ActiveWorkbook.Windows(1).PointsToScreenPixelsX(Sheets("UN").BTN1.Left)
        'USF.Top = ActiveWorkbook.Windows(1).PointsToScreenPixelsY(Sheets("UN").BTN1.Top)
     
        'USF.Move Application.Windows(1).PointsToScreenPixelsX(Sheets("UN").BTN1.Left), Application.Windows(1).PointsToScreenPixelsY(Sheets("UN").BTN1.Top)
     
        Exit Sub
        USF.Move _
        (ActiveWorkbook.Application.Left + 3) + _
        ((ActiveWorkbook.ActiveSheet.[b2].Left) - (ActiveWorkbook.Application.Left + 3)) _
        , _
        (ActiveWorkbook.Application.Top) + _
        ((ActiveWorkbook.ActiveSheet.[b2].Top) - (ActiveWorkbook.Application.Top))
     
    USF.Move T_WnPointsToScreenPixelsX_WnLeft, T_WnPointsToScreenPixelsY_WnTop
    End Sub
     
    Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        [c14].Value = USF.Left
        [c15].Value = USF.Top
    End Sub
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  0

  3. #643
    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
    bon OK la tu décorne vraiment
    je suis au regret de te dire que d'aucune manière tu a fait avancer le shmilblik on va meme a reculons puisque c'est pas bon
    démonstration de ton code comme tu peux le voir il manque un peu
    Nom : demo4.gif
Affichages : 533
Taille : 475,5 Ko
    bon ben passons par exemple pour moi ajoutons mon +4
    allez essayons voir
    comme tu peux le voir on est déjà mieux mais regarde bien comme il manque encore un peu sur certains zooms irégulierement
    Nom : demo5.gif
Affichages : 608
Taille : 817,4 Ko


    maintenant ma version
    Nom : demo6.gif
Affichages : 680
Taille : 712,0 Ko

    que faut il que je fasse pour faire comprendre que tu fait fausse route
    pointtoscreenpixels contient des données fixe et variables OUI C'EST VRAI MAIS ON SEN FOUT!!!!!
    il est la pour nous donner un point écran point barre

    la seule chose que tu ne comprends pas c'est qu'il donne ce que tu vois toi !!!!!devant toi dans ton purée d'écran
    contrairement a cellule.left* ppx+app.left+activewindow.left +etc......blablabla



    et ce que tu vois a l'écran même si un msgbox cellule(x).left ou top) te donne bon
    CA N EST PAS CE QU IL Y EST AFFICHE A L ECRAN!!!!!!!!!!!

    le pire c'est que c'est toi qui nous a mis sur la voix de ton miroir machin chose


    meme si il est membre du meme object que zoom

    et la tu a 3 démo qui te le montre encore je sais plus quoi faire
    j'espère sincèrement et de tout cœur qu'un ou plusieurs de tes collaborateurs vienne et essaie d'analyser ce que je te hurle depuis un bon moment
    peut être y en a t-il un qui va comprendre le sens de ce que je dis

    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  0

  4. #644
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour à tous,

    tous les codes, toutes les idées,... toutes ces orientations...seront TOUJOURS productives ...

    çà me rappelle les débuts de l'aviation ou chacun partait dans une direction différente et ceux retrouvaient toujours plus haut...

    merci à vous tous

    du coup, , il faut que je trace un cercle, moi aussi

    (histoire de tourner en rond )
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  0

  5. #645
    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
    Ce que montre ton animation, patricktoulon, donne à penser que le problème visuel n'est pas dans le code proposé, mais dans le style (aero ? ombrage, ? , etc ...) du userform.
    Tous les essais que nous avons faits l'ont été avec des userforms "plats/purs".
    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  0

  6. #646
    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
    Citation Envoyé par unparia Voir le message
    Ce que montre ton animation, patricktoulon, donne à penser que le problème visuel n'est pas dans le code proposé, mais dans le style (aero ? ombrage, ? , etc ...) du userform.Tous les essais que nous avons faits l'ont été avec des userforms "plats/purs".
    si c'était le cas nos deux codes donneraient radicalement des données différentes et on est tres proches la différence parfois presque imperceptible est causer par ce purée de zoom
    qui nous affiche pas a l'écran ce qui est reel d'ailleur le placement est faux quand visuellement le zoom affiche mauvais
    et un indice qui devrait encore te mettre la puce a l'oreille
    tu parle d'aero truc bidule chouette mais il n'en ai rien car le cadre ,ombrage,etc... du userform lui ne chage pas en fonction du zoom
    par contre l'erreur d'affichage est différente selon le zoom ca te parle mieux ca ??????


    mais tu a raison dans le sens ou c'est le shell qui gère les cadre ombrage etc.... c'est ce qui correspond au +4 et compagnie selon version
    ca je te le hurle depuis un moment déjà



    ne bouge pas je reviens je vais shunter aero et me mettre en w7 basic
    je le fait parce que je veux vraiment te démontrer que tu fait fausse route
    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  0

  7. #647
    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
    bon ben voila si j'avais su je te l'aurait fait plutôt allez en shell basic
    mon switch concerne bien le shell
    mais pointstoscreenpixel lui reste correcte a 100%
    Nom : demo7.gif
Affichages : 603
Taille : 696,7 Ko

    ce qui me perturbe considérant que tu est quelqu' un visiblement de pas bête du tout mais que voyant qu'en agissant sur la position du curseur on avait tout bon et qu'en il s'agissais d'une fenêtre (userform)tu soit aller chercher mon pauvre petit pointstoscreenpixels qui t'avait rien fait lui

    comment ca n'a pas pu te frapper dis moi ????? avec toutes les démos visuelles que je t'ai torpillé

    alors dis moi maintenant qu'allez vous leur dire (ton équipe et toi) a Microsoft ????

    nan!!! je taquine
    Images attachées Images attachées  
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter
      1  1

  8. #648
    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
    @jp ton model est encore une preuve de ce j'avance merci sur pointstoscreenpixels
    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  0

  9. #649
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    @Partrick
    c'est ok......

    j'ai utilisé ton code,
    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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim ppx#
        Dim Version As String
        Dim X#
        Dim Y#
        Dim SuppLeft#
        Dim SupTop#
        SupLeft = 0
        SupTop = 0
        With CreateObject("wscript.shell")
            ppx = .RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\LastLoadedDPI") / 72
        End With
        SupLeft = 4
        SupTop = 4
        With ActiveWindow
            X = .ActivePane.PointsToScreenPixelsX(Target.Left) / ppx
            Y = .ActivePane.PointsToScreenPixelsY(Target.Top) / ppx
        End With
        With USF
            .Show 0
            .Left = X
            .Top = Y
        End With
    End Sub
    Nom : CaptureD1.JPG
Affichages : 593
Taille : 48,3 Ko

    merci à toi
    et merci à tous

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  0

  10. #650
    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
    et maintenant a sonné le glas de tes certitudes

    voici une démo avec ton code tel quel en shell basic (sans aéro)

    regarde bien les légères différence selon le zoom
    Nom : demo8.gif
Affichages : 683
Taille : 696,6 Ko

    et encore la l'exemple n'est vraiment démonstratif de l'énormité du zoom par ce que tu utilise ptscpixels pour le left et top 0 grille
    fait le ton code mais avec "app.left+activewindos.left plus la colonne des numero*z +cellule.left *z +blablabla" et la la on voit très bien l'erreur du zoom

    Amen!!!
    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  0

  11. #651
    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
    Tu as raison : un "écart" est en effet observé, surtout si l'on sélectionne une cellule dans une colonne assez éloignée de la colonne A.
    Nous allons chercher à en comprendre la cause exacte. Il est à ce stade difficile de déterminer la poule et l'oeuf de ce résultat :
    - mauvaise gestion de l'homothétie de la zone affichée en zoom ?
    ou
    - rigidité de Excel en matière d'"élasticité" de la largeur de ses colonnes (arrondis) ?
    ou encore
    - erreur de précision de calcul des coordonnées du point(0,0) de la grille ( .PointsToScreenPixelsX(0)) ?

    Ce qui est le plus surprenant est que le problème ne se pose qu'horizontalement et non verticalement (alors que le raisonnement et les calculs sont les mêmes dans chacun de ces deux sens).
    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  0

  12. #652
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    - rigidité de Excel en matière d'"élasticité" de la largeur de ses colonnes (arrondis) ?
    ah enfin !! tu reviens a la raison il en a fallu du temps

    tu es vraiment pas loin ,tu comprend mieux quand je te parlais de décimal sur le calcul de pix to point et inversement

    alors tu va comprendre quelque chose encore que tu n'a pas vu et la il s'agit encore du zoom

    prend un classeur vierge

    dans un module fait une sub avec un msgbox [A1].width simplement et retiens bien dans ta tète la dimension obtenue en point

    maintenant sauve ton classeur en XML

    ouvre ce xml avec blok note et regarde la dimension width par défaut

    le voila le secret que tu ignorais je ne t'en dis pas plus

    dis moi seulement combien devrait mesurer le width par défaut en zoom 100

    voila maintenant tu a de sérieux indices pour commencer a faire vraiment des recherches dans le bons sens pour toi et ton équipe

    en tout cas si tu a compris mon point de vue sur pointstoscreenpixels et la raison de mes ajustements du au shell on a fait un pas majeur

    concernant ce tout petit écart selon les colonnes ca n'est pas vraiment le fait que l'on s'éloigne de la colonne "A" mais encore une fois une histoire d'arrondi selon les zoom

    si tu fait ta macro sans pointstoscreenpixels(0) mais avec les données (app.left+act...left,etc l'écart la est vraiment visible

    mais je n'en dis pas plus tu va comprendre quand tu va ouvrir le XML
    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  0

  13. #653
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    j'ai souvent positionné / dessiné au pixel prés dans des forms,

    et j'ai toujours rencontré des écarts "flottants" ?

    comme si l'arrondi se faisait toutes les 10 lignes ou colonnes (par exemple uniquement)

    pour l'espace de travail ce principe doit certainement s'appliquer ??!!

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  1

  14. #654
    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
    JP bonjour

    fait pareil que ce que je dis de faire a unparia vous allez comprendre quelque chose d'important sur le zoom et comprendre l'erreur du zoom 100% déjà a la base

    je me demande même si selon les versions cette erreur ne devrait pas être différente j'ai pas testé ayant que Windows 7
    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. #655
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    pour illustrer mes propos, le décalage est visible tous les 3 à 4 lignes
    Nom : video14.gif
Affichages : 557
Taille : 1,15 Mo

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  1

  16. #656
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    le code réserve une surprise
    déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    '----- System -- Window
    Public PointPPX As Single
     
    Public Function SystemInitVariableSystem()
        'Détermine les variables adresse de cellule
        '-----
        'PointPPX : pour positionner un form sur un range
        Call SystemInitPointPPX
        '-----
    PoinPPX
    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
     
    Public Sub SystemInitPointPPX()
        '* PointPPX : declaré dans variable system
        '*
        '* utilisation
        '* With ActiveWindow
        '*   X = .ActivePane.PointsToScreenPixelsX(Target.Left) / PointPPX
        '*   Y = .ActivePane.PointsToScreenPixelsY(Target.Top) / PointPPX
        '* End With
        '****************************************************
        '
        With CreateObject("wscript.shell")
            PointPPX = .RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\LastLoadedDPI") / 72
        End With
    End Sub
    fonction CellXY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Function CellXY(ByVal Target As Range, TopLeft As String)
        With ActiveWindow
            Select Case UCase(TopLeft)
                Case "T", "TOP" 'Y
                    CellXY = .ActivePane.PointsToScreenPixelsY(Target.Top) / PointPPX
                Case "L", "LEFT" 'X
                    CellXY = .ActivePane.PointsToScreenPixelsX(Target.Left) / PointPPX
            End Select
        End With
    End Function
    appel
    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
    29
    30
    31
    32
    33
    34
     
    Public Sub WorksheetSelectionChange(Target As Range)
        'déclaration de la variable dans "Worksheet_SelectionChange(ByVal Target As Range)"
        'Ligne de la cellule sélectionnée
        ListLigneSelected = Target.Row
        'Colonne de la cellule sélectionnée
        ListColonNumSelected = Target.Column
        OngletName = ActiveSheet.Name
        Select Case OngletName
            Case OngletListVBC
                'si ActiveCell -> Target  est dans le tableau TabVBC
                If Not Application.Intersect(Target, ActiveSheet.ListObjects("TabVBC").Range) Is Nothing Then
                    'si le form est visible
                    If Test_FormProcView_Load Then
                        ListCelluleOnRange = True
                        Set ListCelluleSelected = Target
                        Call ProcViewEdit(ObjFormProcView, Target)
                        ObjFormProcView.Left = CellXY(ActiveSheet.Range("F" & ListLigneSelected), "Left")
                        ObjFormProcView.Top = CellXY(ActiveSheet.Range("F" & ListLigneSelected), "Top")
                    Else
                        'action possible
                        '   afficher form
                        '   action dans feuille
                        '   ...
                    End If
                'si ActiveCell -> Target  n'est pas dans le tableau TabVBC
                Else
                    ListCelluleOnRange = False
                    Exit Sub
                End If
            Case Else
                Exit Sub
        End Select
    End Sub
    la surprise est dans PointPPX... y a plus rien..!!!

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  1

  17. #657
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    re,
    Nom : Capture1.JPG
Affichages : 477
Taille : 18,6 Ko
    Nom : Capture2.JPG
Affichages : 498
Taille : 14,7 Ko
    2010-xlsm vers xml vers.2003 ?
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">
     <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
      <Created>2006-09-16T00:00:00Z</Created>
      <LastSaved>2017-07-08T09:49:06Z</LastSaved>
      <Version>14.00</Version>
     </DocumentProperties>
     <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
      <AllowPNG/>
      <RemovePersonalInformation/>
     </OfficeDocumentSettings>
     <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
      <WindowHeight>8010</WindowHeight>
      <WindowWidth>14810</WindowWidth>
      <WindowTopX>240</WindowTopX>
      <WindowTopY>110</WindowTopY>
      <ProtectStructure>False</ProtectStructure>
      <ProtectWindows>False</ProtectWindows>
     </ExcelWorkbook>
     <Styles>
      <Style ss:ID="Default" ss:Name="Normal">
       <Alignment ss:Vertical="Bottom"/>
       <Borders/>
       <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
       <Interior/>
       <NumberFormat/>
       <Protection/>
      </Style>
     </Styles>
     <Worksheet ss:Name="Feuil1">
      <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
       x:FullRows="1" ss:DefaultRowHeight="14.5">
       <Column ss:AutoFitWidth="0" ss:Width="60"/>
      </Table>
      <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
       <PageSetup>
        <Header x:Margin="0.3"/>
        <Footer x:Margin="0.3"/>
        <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
       </PageSetup>
       <Selected/>
       <Panes>
        <Pane>
         <Number>3</Number>
         <RangeSelection>C1</RangeSelection>
        </Pane>
       </Panes>
       <ProtectObjects>False</ProtectObjects>
       <ProtectScenarios>False</ProtectScenarios>
      </WorksheetOptions>
     </Worksheet>
     <Worksheet ss:Name="Feuil2">
      <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
       x:FullRows="1" ss:DefaultRowHeight="14.5">
      </Table>
      <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
       <PageSetup>
        <Header x:Margin="0.3"/>
        <Footer x:Margin="0.3"/>
        <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
       </PageSetup>
       <ProtectObjects>False</ProtectObjects>
       <ProtectScenarios>False</ProtectScenarios>
      </WorksheetOptions>
     </Worksheet>
     <Worksheet ss:Name="Feuil3">
      <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
       x:FullRows="1" ss:DefaultRowHeight="14.5">
      </Table>
      <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
       <PageSetup>
        <Header x:Margin="0.3"/>
        <Footer x:Margin="0.3"/>
        <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
       </PageSetup>
       <ProtectObjects>False</ProtectObjects>
       <ProtectScenarios>False</ProtectScenarios>
      </WorksheetOptions>
     </Worksheet>
    </Workbook>
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  1

  18. #658
    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
    Bonjour à tous,
    On est en train de se prendre la tête avec le zoom depuis le début
    Essayez tout simplement cela et appliquez n'importe quel zoom à votre feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Aligne_forme_simple()
    With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\LastLoadedDPI") / 72: End With
    With UserForm1
    .Show 0
    .Top = (ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top) / ppx)
    .Left = (ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left) / ppx) ' - 5
    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

  19. #659
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour à tous,

    tout à fait..!!

    et c'était déjà dans ce post

    je reviens sur la descente du form, regardez la position de l'angle droit par rapport au cadre noir de la cellule selectionnée à droite :
    il y a entre 1 et 3 pixels d'écart même pas cyclique !!!

    MAIS , j'ai observé un fait qui me parait important :
    si je positionne (verticalement) le form sur une ligne (7 je crois) qui correspond parfaitement et si je fait défiler la feuille -> TOUTES les cellules sont alignées !!!
    si je reproduis le processus sur une ligne décalée, -> TOUTES les cellules sont décalées !!!
    les cellules ont donc toutes la même hauteur !!!

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM
      0  1

  20. #660
    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
    BONSOIR
    @NICOLAS si toi aussi tu t'y met alors hohihihihi
    en l'état actuel de nos connaissances et découvertes qui je l'espère sont bien comprises par tout le monde seul un switch ou select case ou autre méthode multi choix concernant l'ajustement est valable
    ton code n'est n'y plus ni moins qu'une version abrégé sans ajustement et n'est valable que pour W10 et 2010 si je me rappelle bien ou w10 2013 tout en 64 bits

    attendons maintenant jacques qui a mon avis a du pain sur la planche pour démêler tout ca

    mais maintenant qu'il sait que ca n'est pas pointstoscreenpixels lui et son équipe pourraient nous trouver la bombe
    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