XL 2016 figer une image

  • Initiateur de la discussion Initiateur de la discussion halecs93
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

halecs93

XLDnaute Impliqué
Bonjour à tout le monde,

Je souhaite figer une image (issue de l'appareil photo) d'Excel sur une feuille de façon à ce qu'elle reste toujours visible lorsque je la fais défiler de haut en bas en utilisant l'ascenseur.

Y aurait-il un moyen ?

Merci
 
Solution
Bonjour halecs93, vgendron, Bruno,

Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
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
Actionnez la barre de...
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
 
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 pour cette réponse.

Malheureusement, la forme de l'image ne me permet pas d'utiliser ni le fractionnement, ni de figer les volets...

Peut-être en effet en VBA... mais je ne vois pas du tout l'approche.

1690890133164.png
 
Bonjour,

Il est vrai qu'il est tellement compliqué de transposer son image 🤔
1690891235664.png


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+
 
hello 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....
 
rien de bien complexe.. suffit de chercher un peu et faire des tests avec l'enregistreur de macro..

pour positionner l'image au meme niveau que la première ligne affichée à l'écran
VB:
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

maintenant.. il reste juste à trouver commencer déclencher cette macro lorsqu'un scrolldown est appliqué sur la feuille..
 
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+
 
Bonjour halecs93, vgendron, Bruno,

Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
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
Actionnez la barre de défilement verticale.

A+
 

Pièces jointes

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+
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..
elle sera repositionnée uniquement si l'utilisateur clique sur une des cellules à l'écran.. est ce vraiment gênant?
 
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?
Plusieurs remarques :

- la macro ne tourne pas quand une autre macro s'exécute, elle redémarre quand celle-ci se termine

- elle prend très peu de ressources

- sur Excel il y a bien d'autres programmes qui tournent en arrière plan.
 
Bonjour halecs93, vgendron, Bruno,

Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
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
Actionnez la barre de défilement verticale.

A+
Cette solution est bien sympa. Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
740
Retour