A voir également:
- Excel - image suive la barre de défilement
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Comment calculer la moyenne sur excel - Guide
- Si et excel - Guide
- Image iso - Guide
4 réponses
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
20 avril 2010 à 15:23
20 avril 2010 à 15:23
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,
_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,
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
23 avril 2010 à 18:47
23 avril 2010 à 18:47
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 ;-)
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
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
23 avril 2010 à 18:50
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.
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.
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
20 avril 2010 à 12:00
20 avril 2010 à 12:00
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
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
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 ?
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 ?
20 avril 2010 à 17:15
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)
20 avril 2010 à 17:35
- 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"
20 avril 2010 à 19:22
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.