Autres [Résolu]Affichage userform sur cellule ou activX version simplifiée a tester

patricktoulon

XLDnaute Barbatruc
bonjour suite a deux discussions ressentes j'ai repris ma méthode et je l'ai simplifiée
normalement avec cette méthode on est dédouané du calcul et prise en charge du freezepane et des scrollbars H et V

aucune Api window ou gdi !!
aucun chiffre en dur dans le code !!!
aucun calcul des scroll ou du freezepane
et l'userform est contraint dans le périmètre de la fenêtre application si il le dépasse
vous voulez bien tester
cellule a jumeler
demo2.gif


activx a jumeler

demo3.gif
 

Pièces jointes

  • placement usf.xlsm
    29.4 KB · Affichages: 27
Dernière édition:

Dranreb

XLDnaute Barbatruc
Effectivement, c'était trop beau pour être vrai, je constate aussi le phénomène: le scroll sur les parties scrollables affecte le positionnement dans les partie fixes situées pourtant devant ! Aussi bien horizontalement que verticalement. Retour à la case départ…
 

Dranreb

XLDnaute Barbatruc
Une idée en passant: c'est peut être ActivePane qui n'est pas bon…
Peut être faut-il chercher dans la collection ActiveWindow.Panes celui qui contient la plage dont on veut la position et travailler avec celui là.
Parce que c'est couru: si le scroll affecte le calcul c'est qu'il se base sur un ActivePane qui lui parait avoir la bonne tête et pas celui qui contient la coordonnée qu'on veut convertir !
 

patricktoulon

XLDnaute Barbatruc
Effectivement, c'était trop beau pour être vrai, je constate aussi le phénomène: le scroll sur les parties scrollables affecte le positionnement dans les partie fixes situées pourtant devant ! Aussi bien horizontalement que verticalement. Retour à la case départ…
non pourquoi il suffit simplement de le prendre en considération

en fait c'est comme si on devais considérer que le scroll fesait ceci
demo2.gif


je le prend en compte dans mon dernier fichier
mon seul problème c'est d'identifier les colonne scrollées ainsi que les lignes dans les partie fixes pour pouvoir les défalquer
 

Dranreb

XLDnaute Barbatruc
Eh, vous savez quoi ? Les premiers résultats d'une mise en application de mon hypothèse semblent encourageants !
Déclaré un Pan As Pane et puis :
VB:
      Zom = ActiveWindow.Zoom / 100
      Px72 = GetDeviceCaps(GetDC(0), 88)
      If ActiveWindow.FreezePanes Then
         Lft = Obj.Left: Trnq = Int(Lft / 3) * 3
         For P = 1 To ActiveWindow.Panes.Count: Set Pan = ActiveWindow.Panes(P)
            If Not Intersect(Pan.VisibleRange, Obj) Is Nothing Then Exit For
            Set Pan = Nothing: Next P: If Pan Is Nothing Then Exit Sub
         Lft = Pan.PointsToScreenPixelsX(Trnq) * 72 / Px72 + (Lft - Trnq)
      Else
         Lft = ActiveWindow.PointsToScreenPixelsX(Int(Obj.Left * Zom * Px72 / 72 + 0.5)) * 72 / Px72
         End If
      Px72 = GetDeviceCaps(GetDC(0), 90)
      If ActiveWindow.FreezePanes Then
         Top = Obj.Top: Trnq = Int(Top / 3) * 3
         For P = 1 To ActiveWindow.Panes.Count: Set Pan = ActiveWindow.Panes(P)
            If Not Intersect(Pan.VisibleRange, Obj) Is Nothing Then Exit For
            Set Pan = Nothing: Next P: If Pan Is Nothing Then Exit Sub
         Top = Pan.PointsToScreenPixelsY(Trnq) * 72 / Px72 + (Top - Trnq)
      Else
         Top = ActiveWindow.PointsToScreenPixelsY(Int(Obj.Top * Zom * Px72 / 72 + 0.5)) * 72 / Px72
         End If
 

patricktoulon

XLDnaute Barbatruc
c'est parfait juste ce qui me fallait
en prenant la panes 1 je peux faire pour les splitrow ou splitcolumn ou les deux

ex:

dans mon classeur j'ai 4 panes et donc la première (haut gauche) me donne les rows et les colonnes des deux split et meme si j'avais que le split row ou que le splitcolumn c'est pareil c'est la panes(1)

Sub test()
MsgBox ActiveWindow.Panes(1).VisibleRange.Address
End Sub
parfait ;)
 

Roland_M

XLDnaute Barbatruc
effectivement j'aurai du y penser car j'ai déjà utiliser Pane(1) dans un module, un truc du genre !
...
NoPremLigZone2 = ActiveWindow.ScrollRow
NoDernLigZone1 = ActiveWindow.Panes(1).ScrollRow + ActiveWindow.SplitRow - 1 'Pane(1)=zone haut/gauche
...
...
 

patricktoulon

XLDnaute Barbatruc
roland je vais même supprimer les r et c tout du mois j'ai tout avec le panes(1) encore du code en moins

ca éclaircie j'ai jamais autant avancer que ces deux derniers jours et ca fait des années que je reprends ce projet de temps en temps et en plus je gere le freeze alors que c’était pas au programme
donc merci a tous les deux
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16