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. #321
    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
    et 2010 c'est 14

    edit: sure à 100%, pour une fois que je connais un truc
    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. #322
    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 cela doit etre correct alors
    j'utilise un switch
    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
    Function PositionForm2(usf, rng)
        Dim Zooom#, PtToPx#, cadre#, system#, vers#, config#
        'system = Round(Val(Split(Application.OperatingSystem, " ")(3)))
        'vers = Val(Application.Version)
        config = Round(Val(Split(Application.OperatingSystem, " ")(3))) + Val(Application.Version) ' system + vers
        cadre = Switch(config = 17, 2, config = 18, 2, config = 22, 2, config = 24, 0, config = 25, -5, config = 26, -5)
         With ActiveWindow
            Zooom = .Zoom / 100
            PtToPx = ((.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - .ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Zooom
            lleft = (.PointsToScreenPixelsX(rng.Left * PtToPx * Zooom) / PtToPx) + cadre
            ttop = .PointsToScreenPixelsY(rng.Top * PtToPx * Zooom) / PtToPx + cadre
            Wwidth = IIf(rng.Columns.Count > 1, rng.Width * (Zooom) - cadre * 4, usf.Width)
            Hheight = IIf(rng.Rows.Count > 1, rng.Height * Zooom - cadre * 4, usf.Height)
        End With
        PositionForm2 = Array(lleft, ttop, Wwidth, Hheight)
    End Function
    Sub TestUserformtopleftcell2()
        r = PositionForm2(UserForm1, [b3])
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With
    End Sub
    XP office2007=17'averifier
    xp office 2010 =19 ' a verifier
    w7 office 2010 =20
    w7 office 2007=18
    w10 office 2007=22
    w10 office 2010=24
    w10 office 2013=25
    w10 office 2016=26

    il ne reste plus qu'a mettre en ordre dans le switch tel que je l'ai commencé

    si unparia passe par la si il peut nous donner la version obtenu de xp par application.operatingsystem ca serait sympa

    je peut pas allumer mon vieux portable je trouve plus le chargeur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

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

  3. #323
    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
    Sur mon pc: pleine écran ou fenetre

    Nom : Capture.PNG
Affichages : 218
Taille : 13,4 Ko

    Sur le portable: Erreur 94 Utilisation incorrecte de Null
    sur ligne cadre
    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. #324
    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
    en attendant que je conçoive un double swicth
    tiens ca marchera pour tes deux pcs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadre = Switch(config = 15, -5, config = 17, 2, config = 18, 2, config = 22, 2, config = 24, 0, config = 25, -5, config = 26, -5)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

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

  5. #325
    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
    sur le mien c'est pareil
    sur le portable trop haut et trop à gauche équivalent à la capture dessus

    c'est un truc de fou cette histoire
    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. #326
    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
    si unparia passe par la si il peut nous donner la version obtenu de xp par application.operatingsystem ca serait sympa
    sur le PC où il y a le décalage vers la droite ? --->>
    Windows (32-bit) NT 5.01
    et version Office :
    12.0
    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. #327
    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
    sur le mien il faudrait dans le cadre 26,0 pour le top
    et 26,-5 pour le left
    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. #328
    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
    Sur le portable 15,-2 pour le top et 15, 0 pour le left
    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

  9. #329
    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
    Plus je réfléchis et plus je me dis personnellement que les différences entre une machine et l'autre sont plutôt à chercher dans la manière dont PointsToScreenPixelsX est calculé sur la machine. C'est lui, que je vois comme responsable réel.

    J'aimerais bien que Nicolas fasse l'expérience suivante, qui reprend un excellent code de zenpbb qui, sur ma machine, positionne parfaitement le curseur dans l'angle supérieur gauche de la cible et ce, quelle que soit le mode d'affichage ou le zoom

    J'ai ajouté de quoi voir autre chose ...

    Peux-tu, Nicolas JACQUIN, ajouter n'importe où sur une feuille :
    - un label Label1 et une textbox Textbox1
    - ce 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
    Set cible = Range("B4")
        With Label1
          .Caption = ""
          .Top = cible.Top
          .Left = cible.Left
          .BackColor = RGB(255, 200, 200)
        End With
        With TextBox1
          .Top = cible.Offset(1, 0).Top
          .Left = cible.Left
          .BackColor = RGB(255, 255, 255)
         .Text = ActiveWindow.Zoom & "   " & (ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Offset(0, 1).Left) - ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Left)) / cible.Width
        End With
        With ActiveWindow.ActivePane
            SetCursorPos .PointsToScreenPixelsX(cible.Left), .PointsToScreenPixelsY(cible.Top)
        End With
    Puis lancer et me dire (avec des facteurs de zoom différents et des modes d'affichage différents) :
    - si la pointe du curseur est bien toujours là où il le faut. J'ai fait ce qu'il fallait pour avoir un curseur dont on voit la pointe, plutôt qu'un curseur "croix"
    - ce que contient Textbox1
    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

  10. #330
    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 Unparia, oui je vais faire ton test,
    je voulais juste mettre ça avant pour dire à Patrick que le code suivant fonctionne sur mais 2 pc tel quel

    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
    Function PositionForm3(usf, rng)
        Dim Zooom#, PtToPx#, cadre#, clleft#, cttop#, system#, vers#, config#
        config = Round(Val(Split(Application.OperatingSystem, " ")(3))) + Val(Application.Version) ' system + vers
     
        cadre = Switch(config = 15, 0, config = 17, 2, config = 18, 2, config = 22, 2, config = 24, 0, config = 25, -5, config = 26, -5)
        clleft = Switch(config = 15, 0, config = 17, 2, config = 18, 2, config = 22, 2, config = 24, 0, config = 25, -5, config = 26, -5)
        cttop = Switch(config = 15, 0, config = 17, 2, config = 18, 2, config = 22, 2, config = 24, 0, config = 25, -5, config = 26, 0)
     
         With ActiveWindow
            Zooom = .Zoom / 100
            PtToPx = ((.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - .ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Zooom
            lleft = (.PointsToScreenPixelsX(rng.Left * PtToPx * Zooom) / PtToPx) + clleft
            ttop = .PointsToScreenPixelsY(rng.Top * PtToPx * Zooom) / PtToPx + cttop
     
            Wwidth = IIf(rng.Columns.Count > 1, rng.Width * (Zooom) - cadre * 2, usf.Width)
            Hheight = IIf(rng.Rows.Count > 1, rng.Height * Zooom - cadre, usf.Height)
        End With
        PositionForm3 = Array(lleft, ttop, Wwidth, Hheight)
    End Function
    Sub TestUserformtopleftcell3()
        r = PositionForm3(UserForm1, [b3])
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): End With
    End Sub
    Sub TestUserformDansPlage3()
        r = PositionForm3(UserForm1, [B3:F12])
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): .Width = r(2): .Height = r(3): 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

  11. #331
    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
    Plus je réfléchis et plus je me dis personnellement que les différences entre une machine et l'autre sont plutôt à chercher dans la manière dont PointsToScreenPixelsX est calculé sur la machine. C'est lui, que je vois comme responsable réel.

    J'aimerais bien que Nicolas fasse l'expérience suivante, qui reprend un excellent code de zenpbb qui, sur ma machine, positionne parfaitement le curseur dans l'angle supérieur gauche de la cible et ce, quelle que soit le mode d'affichage ou le zoom

    J'ai ajouté de quoi voir autre chose ...

    Peux-tu, Nicolas JACQUIN, ajouter n'importe où sur une feuille :
    - un label Label1 et une textbox Textbox1
    - ce 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
    Set cible = Range("B4")
        With Label1
          .Caption = ""
          .Top = cible.Top
          .Left = cible.Left
          .BackColor = RGB(255, 200, 200)
        End With
        With TextBox1
          .Top = cible.Offset(1, 0).Top
          .Left = cible.Left
          .BackColor = RGB(255, 255, 255)
         .Text = ActiveWindow.Zoom & "   " & (ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Offset(0, 1).Left) - ActiveWindow.ActivePane.PointsToScreenPixelsX(cible.Left)) / cible.Width
        End With
        With ActiveWindow.ActivePane
            SetCursorPos .PointsToScreenPixelsX(cible.Left), .PointsToScreenPixelsY(cible.Top)
        End With
    Puis lancer et me dire (avec des facteurs de zoom différents et des modes d'affichage différents) :
    - si la pointe du curseur est bien toujours là où il le faut. J'ai fait ce qu'il fallait pour avoir un curseur dont on voit la pointe, plutôt qu'un curseur "croix"
    - ce que contient Textbox1
    erreur 49 Convention d'appel de dll incorecte sur setcursorpos

    100 1,33333333333333
    110 1,46666666666667
    200 2,66666666666667

    et apparemment le curseur est un peu au dessus le la moitié du bord droit de l'écran, je le vois que quand je bouge
    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. #332
    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
    machine. C'est lui, que je vois comme responsable réel.
    c'est presque vrai
    cette fonction calcule la dimensions du point 0 de l'écran pour x ou y sauf que selon la config le shell de Windows ne prend pas tout en charge au niveau des fenêtres en ce qui concerne office

    en effet un exemple concret
    w7 ou w10 avec 2007 les userforms ont un cadres même si dans w10 on le voit pas

    un autre exemple avec 2016 w10 chez nicolas le fait de maximiser ou mettre en mode fenêtre l'application ,et bien en mode maximiser l'application perds le cadre au sens propre du terme

    avec w7 en mode maximser on le voit pas mais il est toujours

    la particularité est 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

  13. #333
    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
    nicolas
    plutôt que faire 3 switch
    je n'en ferait qu'un
    par exemple pour toi
    cadre=switch(.....................config=26,array(0,-5,x,x)
    et a la place des "+cadre" je mettrais +cadre(0)'pour le top
    +cadre(1) pour le left
    etc........
    mais surtout pour l'universalité mettre les négatif dans l'array comme ca se serait toujours "+cadre(x) " pour tout le monde
    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

  14. #334
    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 ok, mais moi pas assez doué pour ç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

  15. #335
    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 je viens de rentrer
    t'es pas assez fort c'est une blague c'est une broutille regarde j'ai même éclaté la ligne switch et la variable cadre est maintenant un array(tableau)

    @unparia toi c'est la config 17 pour xp avec 2007 ou 19 pour xp avec 2010

    Nicolas toi c'est la 15 et 26
    les éléments de l'array comme pour moi le (18) sont(+/-)pour le left , (+/-) pour le top , (+/-)pour le width , (+/-)pour le height

    voila si vous voulez bien remplir vos arrays
    après on réalignera la ligne switch sans tirets

    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
    [
    Function PositionForm2(usf, rng)
        Dim Zooom#, PtToPx#, cadre, system#, vers#, config#
        system = Round(Val(Split(Application.OperatingSystem, " ")(3)))
        vers = Val(Application.Version)
        config = Round(Val(Split(Application.OperatingSystem, " ")(3))) + Val(Application.Version) ' system + vers
        cadre = Switch(config = 15, Array(x, x, x, x), _
        config = 17, Array(x, x, x, x), _
        config = 19, Array(x, x, x, x), _
         config = 18, Array(2, 2, -6, -8), _
         config = 22, Array(x, x, x, x), _
        config = 24, Array(x, x, x, x), _
        config = 25, Array(x, x, x, x), _
        config = 26, Array(-5, 0, x, x))
         With ActiveWindow
            Zooom = .Zoom / 100
            PtToPx = ((.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - .ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Zooom
            lleft = (.PointsToScreenPixelsX(rng.Left * PtToPx * Zooom) / PtToPx) + cadre(0)
            ttop = .PointsToScreenPixelsY(rng.Top * PtToPx * Zooom) / PtToPx + cadre(1)
            Wwidth = IIf(rng.Columns.Count > 1, rng.Width * (Zooom) + cadre(2), usf.Width)
            Hheight = IIf(rng.Rows.Count > 1, rng.Height * Zooom + cadre(3), usf.Height)
        End With
        PositionForm2 = Array(lleft, ttop, Wwidth, Hheight)
    End Function
    Sub TestUserformtopleftcell2()
        r = PositionForm2(UserForm1, [b3])
        With UserForm1: .Show 0: .Left = r(0): .Top = r(1): 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

  16. #336
    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
    au poil
    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 PositionForm5(usf, rng)
        Dim Zooom#, PtToPx#, cadre, system#, vers#, config#
        system = Round(Val(Split(Application.OperatingSystem, " ")(3)))
        vers = Val(Application.Version)
        config = Round(Val(Split(Application.OperatingSystem, " ")(3))) + Val(Application.Version) ' system + vers
        cadre = Switch(config = 15, Array(0, 0, 0, 0), _
        config = 17, Array(x, x, x, x), _
        config = 19, Array(x, x, x, x), _
        config = 18, Array(2, 2, -6, -8), _
        config = 22, Array(x, x, x, x), _
        config = 24, Array(x, x, x, x), _
        config = 25, Array(x, x, x, x), _
        config = 26, Array(-5, 0, 10, 5))
         With ActiveWindow
            Zooom = .Zoom / 100
            PtToPx = ((.ActivePane.PointsToScreenPixelsX(ActiveSheet.[A1].Width) - .ActivePane.PointsToScreenPixelsX(0)) / ActiveSheet.[A1].Width) / Zooom
            lleft = (.PointsToScreenPixelsX(rng.Left * PtToPx * Zooom) / PtToPx) + cadre(0)
            ttop = .PointsToScreenPixelsY(rng.Top * PtToPx * Zooom) / PtToPx + cadre(1)
            Wwidth = IIf(rng.Columns.Count > 1, rng.Width * (Zooom) + cadre(2), usf.Width)
            Hheight = IIf(rng.Rows.Count > 1, rng.Height * Zooom + cadre(3), usf.Height)
        End With
        PositionForm5 = Array(lleft, ttop, Wwidth, Hheight)
    End Function
    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. #337
    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 la 15 pour ton portable?????
    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. #338
    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
    A Nicolas JACQUIN
    erreur 49 Convention d'appel de dll incorecte sur setcursorpos
    As-tu bien mis la déclaration de la fonction dans la partie déclarative du module de code :
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    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

  19. #339
    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 patricktoulon Voir le message
    et la 15 pour ton portable?????
    Ca passe comme ça 0 partout
    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. #340
    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
    A Nicolas JACQUIN

    As-tu bien mis la déclaration de la fonction dans la partie déclarative du module de code :
    euh non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Integer, ByVal y As Integer)
    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

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