Posez votre question Signaler

Excel - image suive la barre de défilement

tom - Dernière réponse le 23 avril 2010 à 20:32
Bonjour,
Je m'explique, je suis en train de faire un programme à l'aide de vba.
Dans une feuille excel j'ai inséré des images et je leur ai affecté une macro chacune.
Je souhaite donc que l'utilisateur lance les macros à l'aide de ces images servant de bouton dans la feuille de calcul.
Cependant, problème, Si l'utilisateur fait défiler sa feuille excel (en allant à droite ou en bas par exemple), les images restent fixes sur la feuille de calcul, c'est à dire qu'elles bougent aux yeux de l'utilisateur. Or je souhaiterais qu'elles soient fixes au niveau de l'écran de l'ordi, c'est à dire qu'elles ne bougent pas aux yeux de l'utilisateur.
Merci à ceux qui comprendront mon problème !
Lire la suite 
Réponse
+1
moins plus
Je pourrais sinon te conseiller la macro suivante :

_Sub resizePic()
____Dim rngCanSee As Range
____Set ecran = ActiveWindow.VisibleRange
____With ActiveSheet.Pictures(1)
_______' Ici tu peux définir la position voulue.
_______' Tu peux utiliser ecran.VisibleRange.Left et ecran.VisibleRange.Top
_______.Left = ecran.Left + 20
_______.Top = ecran.Top + 20
____End With
_End Sub


Cette macro replace l'image à l'endroit voulu chaque fois qu'une nouvelle fenêtre est sélectionnée si tu l'appelle dans cet évènement :

_Private Sub Worksheet_SelectionChange(ByVal Target As Range)
____Call resizePic
_End Sub


Par contre, elle n'est pas repositionnée si les scrolls sont déplacés à l'aide de la sourie qu'après avoir cliqué sur l'écran.

Yassine,
tom- 20 avril 2010 à 17:15
Alors j'ai testé ton resizePic, ca marche bien. Merci c'est déjà ça !
Par contre le private sub je ne vois pas trop à quoi il sert ...
Il en faudrait un qui lance resizePic dès que l'utilisateur fait défiler sa feuille excel (dès qu'il descend plus bas dans la feuille par exemple)
Répondre
commentcamarcheeay 565Messages postés mercredi 24 février 2010Date d'inscription 3 mai 2015Dernière intervention - 20 avril 2010 à 17:35
Le "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" est l'événement qui exécute resizePic. C'est l'événement associé au changement de la sélection d'une nouvelle case.
- on peut mettre la macro resizePic dans un module (Module1 par exemple)
- le "private sub" par contre se crée automatiquement quand on va sur le code de la feuille 1 ("Feuil1") et on bascule la valeur du ComboBox (en haut à gauche) de "Général" vers "Worksheet"
Répondre
tom- 20 avril 2010 à 19:22
Ah oui je suis débile, je l'avais mis avec mes module le private sub.
Ca fonctionne bien ! Bien joué faut connaitre la syntaxe !!
Par contre en effet, si on bouge les scrolls via la souris, ca marche plus.
Mais c'est déjà bien sympa là ! Merci.
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+1
moins plus
Bonjour,

On a la possibilité de nous positionner par rapport au bas de la page et de prendre en compte le redimensionnement. Il suffit de savoir comment doivent se repositionner les commandes quand on change de dimension.

Ce qui suit est un exemple qui permet de positionner une forme à 20p du bas et au milieu de l'écran :

.... Sub resizePic()
........ Set ecran = ActiveWindow.VisibleRange
........ With ActiveSheet.Shapes(1)
............ .Left = ecran.Left + ecran.Width / 2 - .Width / 2
............ .Top = ecran.Top + ecran.Height - .Height - 20
........ End With
..... End Sub


Je ne vais pas commenter la macro, je pense qu'elle est assez claire.
En général, on positionne les boutons en bas à gauche. Alors même si l'écran est réduit on peut toujours caser les images à gauches.

Sinon, des macros pour redimensionner les fenêtres peuvent être utilisées. En voici un exemple :

Sub resizeWin()
.... Set ecran = ActiveWindow.VisibleRange
.... With ActiveSheet.Shapes(1)
........ If ActiveWindow.WindowState = xlNormal Then
............ If ecran.Width < .Width Then ActiveWindow.Width = ActiveWindow.Width - ecran.Width + .Width
............ If ecran.Height < .Width Then ActiveWindow.Height = ActiveWindow.Height - ecran.Height + .Height
........ End If
.... End With
End Sub


Que tu met dans l'événement :

Private Sub Workbook_WindowResize(ByVal Wn As Window)
.... resizeWin
End Sub


Je pense que tu peux quand même rendre l'exercice à ton prof ;-)
commentcamarcheeay 565Messages postés mercredi 24 février 2010Date d'inscription 3 mai 2015Dernière intervention - 23 avril 2010 à 18:50
Fait attention, il y a worksheet et workbook. Ne fais pas d'erreur de lecture.
Les codes restent à adapter pour bien positionner les éléments.
Remarque. Cette fois j'ai mis une forme automatique au lieu d'une image. Si tu utilise une image, remplace shape par picture comme l'exemple précédent.
Répondre
tom- 23 avril 2010 à 20:32
Merci ca marche nickel !!
bien joué pour le ecran.Height - .Height
Ca me sauve ^^
Bon week end !
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+0
moins plus
Bonjour,

Essaye de fractionner la fenêtre. Cela va la diviser en plusieurs fenêtres dont une est amovible (là où les photos boutons vont être placées). Puis appui sur le bouton figer.

C'est une manière de faire qui, personnellement, ne me satisfait pas car elle limite l'affichage. Mais ça peut aider pour cette affaire.

Bonne continuation,
Yassine
tom- 20 avril 2010 à 13:26
J'ai déjà essayé ça ... c'est moyen ... ca bouffe une bonne partie de l'affichage !
Merci quand même !
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,
Après moultes tests, j'en viens à un constat :
Je souhaite mettre mes images via la macro au bottom de la page.
Problème, selon la dimension de l'écran de l'ordinateur ou du zoom sur excel, la macro précédente ne mettra pas toujours les images en bas.
Sur mon pc elles sont en bas, sur un autre on ne les voient meme plus tellement elles sont basses ...
pas pratique pour rendre le projet à mon prof ... je ne vais pas lui demander la taille de son écran !

ActiveWindow.VisibleRange.Bottom ne marche pas ! Que dois-je faire alors ?
Ajouter un commentaire
Ce document intitulé «  Excel - image suive la barre de défilement  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.