FreezePanes doit il être toujours lié à un active windows ou un select ?

Bonjour,

j'aimerais savoir si on peut directement appliquer un freeze pane en VBA en lui indiquant la cellules mais sans faire de select ou ActiveWindow?

ex : (Les sub contiennent plus de code mais la demande concerne le FreezePanes ) )

sub (1)

Dim WorksheetA As Worksheet

Dim WorksheetsNameA As String

WorksheetsNameA = "Test"

Set WorksheetA = ThisWorkbook.Sheets(WorksheetsNameA)

MiseEnPg WorksheetA,

End sub

sub MiseEnPg ( Worksheet)

Worksheet.Cells(5, 15).Select

ActiveWindow.FreezePanes = True

End sub

MERCI d'avance pour l'aide et bonne soirée

Seb

Bonjour,

À ce que j'en sais, mais je ne sais pas tout ... à un "ActiveWindow"...

Tu peux tricoter à partir de cet exemple :

Sub FigerLesVolets()

Application.Goto Worksheets("Test").Range("A1"), True

With ActiveWindow
    .FreezePanes = False
    .SplitColumn = 14
    .SplitRow = 4
    .FreezePanes = True
End With
End Sub

ric

Merci pour ta proposition,

C'est déjà un plus )

mais je cherche un truc du genre :

Worksheet.Cells(5, 15).FreezePanes = True la syntax n'est pas bonne et je ne sais même pas si on peut le faire.

Bonjour, Salut Ric !

La meilleure méthode est celle que t'indique Ric.

Dans ce domaine, tu travailles sur l'affichage. Si je passe mon temps (une bonne partie ) à conseiller de bannir les Select, Activate et consorts du code, je précise dès lors qu'il ne s'agit pas d'affichage... On a intérêt à ce que VBA travaille sans rien montrer tant qu'il n'a pas fini, car il sera plus rapide, mais dès lors qu'il s'agit de mettre au point ce que regarde l'utilisateur, on est plus ou moins obligé de jouer avec les éléments actifs qui sont justement ceux que l'on voit.

Tu peux atteindre facilement ta fenêtre (tant que tu n'en utilises qu'une par :

ActiveWorkbook.Windows(1)

mais rien ne te garantit que la feuille que tu veux sera dans cette fenêtre tant que tu ne l'as pas activée, et l'objet parent de la fenêtre est le classeur, pas la feuille.

Dans ce cadre, si tu n'es effectivement pas obligé de sélectionner la cellule pour délimiter ton volet, ainsi que le montre Ric, une fois que tu as la bonne feuille dans la fenêtre, dans la mesure où tu dois opérer sur l'objet fenêtre pour figer les volets, ActiveWindow reste la meilleure façon de l'atteindre...

Pour ma part, un seul truc me chifonne encore dans la manoeuvre, c'est qu'en opérant en manuel on fige les volets sans actionner le fractionnement de la fenêtre, alors qu'en VBA sans FreezePanes (qui en effet active le fractionnement) si les volets se délimitent, ils ne se figent pas, et je n'ai pas trouvé comment obtenir exactement le même résultat qu'en manuel.

Cordialement.

Bonjour MFerrand & Ric,

Merci pour ta réponse.

Effectivement on semble ne pas avoir d'autre choix

Pour le fractionnement j'avais constaté la même chose et je m'étais résigné à utiliser :

Sheets(WorksheetsName).Activate

Range("P2").Select

ActiveWindow.FreezePanes = True

le fractionnement vient de

.SplitColumn = 14

.SplitRow = 4

https://msdn.microsoft.com/fr-fr/vba/excel-vba/articles/window-splitrow-property-excel

Mais bon, je dois choisir entre avoir un fractionnement et freez qui ne dérange pas tant qu'on doit pas passer le Freeze à False ou un

select qui semble faire perde du tant car plusieurs feuilles à mettre en pg. lol

Bonne journée et merci pour vos réponses

Seb

Re Bonjour,

Alors j'ai trouvé ça qui fonctionne :

Application.Goto Worksheets("test").Range("P5")

ActiveWindow.FreezePanes = True

Je ne suis pas un gran fan du Goto mais bon ça me perme de faire active/select en une fois et je n'ai plus le problème du fractionnement car je dois pouvoir retirer ce FreezePanes à certain moment.

Qu'en dite vous de cette solution ???

Bonne journée

Oui, c'est un Select détourné ! Je l'essaierai. Merci !

Rechercher des sujets similaires à "freezepanes doit etre lie active windows select"