Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.ArrierePlan" 'lance la macro
End Sub
Private Sub ArrierePlan()
Dim P As Range, col%, lig&, t#
Set P = [MaZone] 'plage nommée
col = 2 'colonne de destination, à adapter
Do
lig = ActiveWindow.ScrollRow 'mémorise la ligne
t = Timer + 0.2 'temporisation de 0.2 seconde
While Timer < t And t < 86400: DoEvents: Wend
If ActiveWorkbook.Name = Me.Name Then If ActiveSheet.Name = P.Parent.Name Then _
If ActiveWindow.ScrollRow <> lig Then P.Cut Cells(ActiveWindow.ScrollRow + 3, col) 'couper-coller
Loop
End Sub
Bonjour
une piste..
tu figes la partie haute de ta feuille (avec le fractionnement et volets) et tu places l'image dans cette partie
ou en VBA, j'imagine que cette image peut etre accédée via "object, ou shape ou ...) et il y a sans doute une propriété .top
Merci, c'est aussi une solution, en effet.Bonjour,
Il est vrai qu'il est tellement compliqué de transposer son image
Regarde la pièce jointe 1175653
Et de la mettre en entête de feuille
PS : il n'existe pas d'évènement pour le déplacement d'un ascenseur
sinon il faut y aller à grand renfort d'API... et j'espère que vous connaissez
A+
Merci.... un peu complexe tout ceci. Je me rabats de BrunoM45hello Bruno
pour l'accès à l'image
With ActiveSheet.Shapes(1)
.Select
.Top = 50
End With
à toi de chercher maintenant comment et par quoi remplacer le 50 pour que ca corresponde à la ligne affichée en haut de l'écran..
perso. je ne sais pas travailler sur des images....
Sub Macro1()
With ActiveSheet.Shapes(1) 'à supposer qu'il n'y a qu'une seule shape ou que la shape n°1 correspond à ton image
.Top = Rows(ActiveWindow.ScrollRow).Top
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet.Shapes(1) 'à supposer qu'il n'y a qu'une seule shape ou que la shape n°1 correspond à ton image
.Top = Rows(ActiveWindow.ScrollRow).Top
End With
End Sub
Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.ArrierePlan" 'lance la macro
End Sub
Private Sub ArrierePlan()
Dim P As Range, col%, lig&, t#
Set P = [MaZone] 'plage nommée
col = 2 'colonne de destination, à adapter
Do
lig = ActiveWindow.ScrollRow 'mémorise la ligne
t = Timer + 0.2 'temporisation de 0.2 seconde
While Timer < t And t < 86400: DoEvents: Wend
If ActiveWorkbook.Name = Me.Name Then If ActiveSheet.Name = P.Parent.Name Then _
If ActiveWindow.ScrollRow <> lig Then P.Cut Cells(ActiveWindow.ScrollRow + 3, col) 'couper-coller
Loop
End Sub
C'est effectivement ce que j'allais proposer en insistant sur le fait que si l'utilisateur ne fait QUE du scroll, l'image ne suivra pas..Salut vgendron,
C'est bien ce que je disais, il n'existe pas d'évènements avec l'ascenseur
Ceci dit, ça existe sur le changement de cellule "SelectionChange"
Alors, peut-être que
VB:Private Sub Worksheet_SelectionChange(ByVal Target As Range) With ActiveSheet.Shapes(1) 'à supposer qu'il n'y a qu'une seule shape ou que la shape n°1 correspond à ton image .Top = Rows(ActiveWindow.ScrollRow).Top End With End Sub
A+
Plusieurs remarques :Hello @job75
quand tu précises "Arrière Plan", est ce que cela veut dire que le code ne ralentit pas toute autre macro qui serait exécutée?
Cette solution est bien sympa. MerciBonjour halecs93, vgendron, Bruno,
Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
Actionnez la barre de défilement verticale.VB:Private Sub Workbook_Open() Application.OnTime 1, "ThisWorkbook.ArrierePlan" 'lance la macro End Sub Private Sub ArrierePlan() Dim P As Range, col%, lig&, t# Set P = [MaZone] 'plage nommée col = 2 'colonne de destination, à adapter Do lig = ActiveWindow.ScrollRow 'mémorise la ligne t = Timer + 0.2 'temporisation de 0.2 seconde While Timer < t And t < 86400: DoEvents: Wend If ActiveWorkbook.Name = Me.Name Then If ActiveSheet.Name = P.Parent.Name Then _ If ActiveWindow.ScrollRow <> lig Then P.Cut Cells(ActiveWindow.ScrollRow + 3, col) 'couper-coller Loop End Sub
A+