Figer les volets (Personnalisation de la zone figée)

Bonjour à tous,

Je cherche un moyen de figer un groupe très spécifique de cellules

De tell manière à ce que, lorsque je défile vers le bas dans la feuille, ce groupe reste fixe

Là où ça se complique, c’est que je ne cherche pas uniquement à figer les lignes du haut et/ou les colonnes de gauche (ça je sais faire)

Ce que je souhaite par exemple, c’est figer les ligne 1, 2, et 3 et les colonnes L, M, et N (en même temps) mais uniquement ces 3 lignes et ces 3 colonnes, sans que ça ne fige les colonnes avant ça (A, B, C, etc…, K)

Deuxième complication, il faudrait que les colonnes figées (L, M, et N) le soit uniquement lorsque je défile verticalement, et pas horizontalement

Je sais que cela peut paraitre un peu confus, du coup j'ai mis en PJ un doc

Dans ce doc, je souhaite que la surface en jaune reste fixe lorsque je me déplace sur la feuille de haut en bas

Pour ce qui est de la zone en vert, cela n’a pas d’importance s’il elle reste figée ou non

J’ai eu beau chercher la solution sur un nombre incalculable de forum (Français et Anglais) je ne trouve aucune réponse… J’en viens même à me demander si ce que je souhaite est possible

Sachez que je suis ouvert à toutes possibilités même avec VBA

En vous remerciant d’avance

19figer.xlsm (10.51 Ko)

Salut Jabert,

En mode Excel pur, je ne crois pas que cela soit possible sauf à jouer avec de multiples fractionnements de fenêtre, et encore...
En mode VBA capillo-tracté, comme dirait l'autre, j'ai bien une solution qui impliquerait de dupliquer tes données sur une deuxième feuille.

Il faut ajouter un contrôle ActiveX ScrollBar (propriété LargeChange = 10, ici) à qui il faudra trouver une place...

Si cette solution (dépouillée de tout, ici) t'agrée, on pourra regarder plus loin en fonction de tes besoins spécifiques.

Private Sub scrll1_Change()
'
Dim tTab1, tTab2
'
Application.ScreenUpdating = False
'
iStep = Me.scrll1.Value
With Worksheets("BDD")
    iRowA = .Range("A" & Rows.Count).End(xlUp).Row
    iRowO = .Range("O" & Rows.Count).End(xlUp).Row
    tTab1 = .Range("A" & iStep & ":K" & iRowA).Value
    tTab2 = .Range("O" & iStep).Resize(iRowO, .Cells(1, Columns.Count).End(xlToLeft).Column - 14).Value
    .[M1] = iStep
End With
If [A4] <> "" Then Range("A4").Resize(Range("A" & Rows.Count).End(xlUp).Row, 11).ClearContents
If [O4] <> "" Then Range("O4").Resize(Range("O" & Rows.Count).End(xlUp).Row, Cells(4, Columns.Count).End(xlToLeft).Column).ClearContents

Range("A4").Resize(UBound(tTab1, 1), 11).Value = tTab1
Range("O4").Resize(UBound(tTab2, 1), UBound(tTab2, 2)).Value = tTab2
'
Application.ScreenUpdating = True
'
End Sub
13jabert.xlsm (151.03 Ko)


A+

Salut curilis57

Merci infiniment pour avoir pris du temps pour me répondre

Je suis navré de ne pas avoir spécifié ça plus tôt, mais je recherche impérativement une solution qui reste sur une seule et même feuille

De plus je n’étais pas sûre que quelqu’un m’apporte une réponse aussi précise que la tienne

Du coup, et afin d’être moi-même le plus précis possible, voici les infos exactes de mon fichier :

Nom de la feuille : « RST »

Zone à figée sur cette feuille :

- Ligne 1 ; 2 ; et 3

- Colonne allant de AU à BB (AU ; AV ; AW ; AX ; AY ; AZ ; BA ; et BB)

Je ne souhaite pas forcement que ces colonnes soient figée jusqu'à la dernière ligne de feuille mais au moins jusqu'à la ligne 48

Du coup si c'est possible, je pourrais défiler vers le bas de la feuille sans que les informations cette zone ne défilent :

- Ligne 1 à 3

- Colonne AU à BB en entier ou Plage (AU4 : BB48) si plus simple

En PJ le fichier à jour avec en jaune la zone Exacte que je veux figer

14figer.xlsm (10.33 Ko)

Salut Jabert,

peut-on avoir une idée de ce qu'il y a dans ces colonnes, histoire de savoir si on peut reproduire ce contenu facilement !?
- formules ;
- texte...


A+

Salut curilis57,

Il y a 4 graphiques sur la plage (AU4;BB48) fichier en PJ
C'est justement ces 4 graphiques que je souhaite toujours garder en vue tout en défilant

J'ai déjà expérimenté une macro qui faisait descendre automatiquement les graphes a chaque fois que je cliquer sur une cellule
Mais j'avoue que cela ne m'a absolument pas convenue, c'est pour ca que j'essaye de figer la plage concernée

En te remerciant encore
21figer2.xlsm (119.67 Ko)

Salut Jabert,

pour l'instant, je ne vois que ma première solution ou celle ci-dessous faisant intervenir l'instruction OnTime.
J'ai commencé par figer les volets sur les 3 premières lignes.
Toutes les secondes, la macro teste si il y a eu scroll vertical et ajuste la position des graphiques.

Public Sub PlaceTab()
'
Static iRow%
'
If ActiveWindow.ScrollRow <> iRow Then
    Application.ScreenUpdating = False
    iRow = ActiveWindow.ScrollRow
    For x = 0 To 3
        With Worksheets("RST").Shapes("Graphique " & x + 4)
            .Top = Worksheets("RST").Range("AU" & (iRow + 3) + (11 * x)).Top
        End With
    Next
    Application.ScreenUpdating = True
End If
    '
Application.OnTime Now + TimeValue("00:00:01"), "PlaceTab", , True
'
End Sub

Je n'ai rien d'autre en magasin pour l'instant...

31jabert-v2.xlsm (128.22 Ko)


A+

Salut curulis57,

Franchement tu es trop fort(e)

J'ai ouvert le fichier que tu as transmis et la solution que tu proposes va au-delà de mes espérances

Les graphes suivent bien le scrolling et c’est parfait, c’est exactement ce que je veux

Seul petit bémol

La macro fonctionne correctement dans le fichier que tu as transmis mais ne veut pas fonctionner lorsque je la colle dans mon véritable fichier

Ci-dessous une capture d’écran du message d’erreur

erreur

Salut Jabert,

il faut évidemment adapter le code en fonction du nom des graphiques : dans ton fichier-exemple, ils s'appelaient "Graphique 4", 5, 6, 7


A+

Salut curulis57,

Je suis navrée mais je ne comprend pas comment je dois changer le code exactement
J'ai essayé plusieurs modifications mais l'erreur persiste
Je sollicite de nouveau ton aide

Mes graphiques ont les noms suivants :
Graphique 4
Graphique 11
Graphique 13
Graphique 14

Salut Jabert,

le plus simple..

        With Worksheets("RST").Shapes(Choose(x + 1, "Graphique 4", "Graphique 11", "Graphique 13", "Graphique 14"))


A+

Salut curulis57,

Nickel, ca fonctionne parfaitement
Merci encore
Rechercher des sujets similaires à "figer volets personnalisation zone figee"