XL pour MAC 2 graphiques qui descendent quand on scrolle la page

38manu74

XLDnaute Nouveau
Bonjour,
J'ai un tableau qui comporte de nombreuse ligne.
A coté 2 graphique pour un suivi graphique de certaines données
Quand je descends dans le tableau, comment faire pour que mes graphiques reste toujours visible quand je scrolle... (je vous ai mis mon fichier en PJ)
Précision j'utilise Excel pour MAC version 16.69.1
Merci de votre aide
 

Pièces jointes

  • Essai.xlsx
    80.5 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Bonjour.
Ces instructions rectifient la position des graphiques :
VB:
   ChartObjects(1).Top = Rows(ActiveWindow.ScrollRow).Top
   ChartObjects(2).Top = ChartObjects(1).Top + ChartObjects(1).Height
Le plus simple c'est de les mettre dans une Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mais ça oblige à sélectionner une cellule. Sinon je ne vois que l'exécution toutes les secondes d'une procédure planifiée au moyen d'un Application.OnTime Now + TimeSerial(0, 0, 1), …
 

job75

XLDnaute Barbatruc
Bonjour 38manu74, Bernard,

Voyez ce code dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.Deplacer" 'lance la macro
End Sub

Sub Deplacer()
With Sheets("Feuille 1")
    Do
        DoEvents
        .ChartObjects(1).Top = .Rows(ActiveWindow.ScrollRow + 7).Top
        .ChartObjects(2).Top = .ChartObjects(1).Top + .ChartObjects(1).Height + 10
    Loop
End With
End Sub
Nota : dans VBA, pour arrêter la macro, menu Exécution => Réinitialiser.

A+
 

Pièces jointes

  • Essai(1).xlsm
    86.7 KB · Affichages: 8

38manu74

XLDnaute Nouveau
Oulala merci à vous deux, mais là vous me parlez chinois je susi désolé je suis nul 🤣
voici ce que j'ai fait, et qui ne marche pas :
- clique droit sur le nom de la feuille
- afficher le code
- j'ai collé :
Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.Deplacer" 'lance la macro
End Sub

Sub Deplacer()
With Sheets("Feuille 1")
Do
DoEvents
.ChartObjects(1).Top = .Rows(ActiveWindow.ScrollRow + 7).Top
.ChartObjects(2).Top = .ChartObjects(1).Top + .ChartObjects(1).Height + 10
Loop
End With
End Sub

- enregistrer le fichier en .xlsm

Mais quand je scrolle, il ne se passe rien.
J'ai un peu honte je suis vraiment nul 🤣
 

38manu74

XLDnaute Nouveau
J'ai réussi avec Chatgpt (et oui j'ai essayé 😔) il m'a donné ce code :
Option Explicit



Private Sub Workbook_Open()

Application.OnTime 1, "ThisWorkbook.Deplacer" 'lance la macro

End Sub



Sub Deplacer()

With Sheets("PS Campus Coach Tokyo")

If .Range("A1").Top <= 100 Then

.ChartObjects(1).Top = .Rows(ActiveWindow.ScrollRow).Top

.ChartObjects(2).Top = .ChartObjects(1).Top + .ChartObjects(1).Height + 10

Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.Deplacer"

End If

End With

End Sub

ca marche nickel... SAUF que Excel me demande maintenant de réouvrrir le fichier dès que je le ferme.... et c'est sans fin... Une idée vous les humains ?
 

Dranreb

XLDnaute Barbatruc
Oui, essayez comme ça :
VB:
Option Explicit
Private HOT As Date
Private Sub Workbook_Open()
   Deplacer
   End Sub
Sub Deplacer()
   With Sheets("PS Campus Coach Tokyo")
      .ChartObjects(1).Top = .Rows(ActiveWindow.ScrollRow).Top
      .ChartObjects(2).Top = .ChartObjects(1).Top + .ChartObjects(1).Height + 10
      End With
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "ThisWorkbook.Deplacer"
   End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If HOT = 0 Then Exit Sub
   Application.OnTime HOT, "ThisWorkbook.Deplacer", Schedule:=False
   HOT = 0
   End Sub
 

38manu74

XLDnaute Nouveau
Oui, essayez comme ça :
VB:
Option Explicit
Private HOT As Date
Private Sub Workbook_Open()
   Deplacer
   End Sub
Sub Deplacer()
   With Sheets("PS Campus Coach Tokyo")
      .ChartObjects(1).Top = .Rows(ActiveWindow.ScrollRow).Top
      .ChartObjects(2).Top = .ChartObjects(1).Top + .ChartObjects(1).Height + 10
      End With
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "ThisWorkbook.Deplacer"
   End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If HOT = 0 Then Exit Sub
   Application.OnTime HOT, "ThisWorkbook.Deplacer", Schedule:=False
   HOT = 0
   End Sub
Merveilleux.... Merci bcp
 

Discussions similaires

Réponses
8
Affichages
874

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine