XL 2019 Rendre fixe pr rapport à l'écran les segments

Cemalatowilo

XLDnaute Nouveau
Bonjour à toutes et à tous,
Quand je crée un ou plusieurs segments relatifs à un tableau structuré, ceux ci disparaissent quand je parcours le tableau vers le bas.
Y a t il un moyen pour les rendre fixe (position qui ne change pas quand la cellule sélectionnée varie)?
Merci
 

Cemalatowilo

XLDnaute Nouveau
Bonjour et merci de votre temps,
Un des segments prend pratiquement tout l'écran en vertical, il n'est pas pertinent de figer tout l'écran.
J'ai bien trouver une solution qui est de créer une nouvelle fenêtre et de partager l'écran en 2 parties verticales, mail je la trouve non élégante.
Y a t il un moyen en vba?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

J'ai retrouvé un classeur dans lequel j'avais besoin de ça, en voici le code. Ce code est à mettre dans le module de code de la feuille qui contient le segment.
A l'intérieur du code modifier le mot "Saison" par le nom du segment (ou de son 'shape')
Pour trouver ce nom : sélectionner le segment et regarder son nom dans la zone de nom à gauche de la barre de formule.
J'ai commenté le code.

1614417595800.png

VB:
' Contenant du segment sur la feuille
Dim SegmentShape As Shape

Private Sub SetSegmentShape()
'
' Tenter de récupérer le Shape nommé "Saison"
' pour initialiser l'objet 'SegmentShape'
    On Error Resume Next
    Set SegmentShape = Me.Shapes("Saison")
    On Error GoTo 0
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '
    ' Si SegmentShape n'est pas initialisé
    ' tenter de le récupérer et l'initialiser
    If SegmentShape Is Nothing Then SetSegmentShape
    '
    ' S'il n'est toujours pas initialisé (Pas trouvé sur la feuille ?)
    ' alors sortir
    If SegmentShape Is Nothing Then Exit Sub
    '
    ' Sinon on adapte son placement vertical
     SegmentShape.Top = Target.Top - (SegmentShape.Height / 2)
End Sub

bon weekend
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,
Un des segments prend pratiquement tout l'écran en vertical, il n'est pas pertinent de figer tout l'écran.
un segment peut être mis sur plusieurs colonnes. Voir les options dans le menu dédié qui apparait à sa sélection.
1614439524432.png
eric
 

Cemalatowilo

XLDnaute Nouveau
Bonsoir,
Effectivement cela fonctionne, mais ce n'est pas top.
Il faudrait connaitre en permanence la première ligne visible à l'écran d'une feuille excel, ou bien positionner un segment non pas à partir d'une cellule mais à partir du bord supérieur de l'écran.
Est ce possible?
 

Cemalatowilo

XLDnaute Nouveau
Bonjour,
J'ai trouvé une solution qui passe par ActiveWindow.VisibleRange.
La voici (Il y a 4 segments concernés):
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
'Cale les segments prédéfinis sur la première ligne visible de l'écran
'Pour un gain de temps, aucune vérification d'existence de segments
'n'est faite

    Set SegmentShape1 = Me.Shapes("Ss type")
    Set SegmentShape2 = Me.Shapes("Bénéficiaire")
    Set SegmentShape3 = Me.Shapes("Type")
    Set SegmentShape4 = Me.Shapes("Où")
    With ActiveWindow.VisibleRange 'Toutes les cellules visibles à l'écran
        premiereLigne = .Row
    End With
    SegmentShape1.Top = Cells(premiereLigne + 1, 1).Top
    SegmentShape2.Top = Cells(premiereLigne + 1, 1).Top
    SegmentShape3.Top = Cells(premiereLigne + 1, 1).Top
    SegmentShape4.Top = Cells(premiereLigne + 26, 1).Top
End Sub

Ce n'est pas encore tout à fait satisfaisant, car cela ne fonctionne qu'au défilement du aux flèches, mais non pas à la molette de la souris ni aux mouvements de l'ascenseur.
Une idée?
 

eriiic

XLDnaute Barbatruc
Bonjour,

Si ça ne gène personne de perdre toute possibilité d'annulation d'une erreur de saisie à cause de la macro tu peux.
Mais vu que tu ne peux pas voir ce qui est en-dessous, je ne vois pas bien l'avantage par rapport à la ligne 1 figée. Sauf si scrolls latéraux en plus où tu n'as plus vraiment le choix.

Sinon le scrolling ne déclenche pas d'évènement.
L'autre possibilité serait de tester la cellule haut-gauche toutes les secondes avec OnTime pour les déplacer.
eric
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 147
Messages
2 116 775
Membres
112 858
dernier inscrit
mioucks