Mettre une image au bottom VBA -EXCEL

Amis amateur de VBA, bonjour,

J'ai créé tout un projet à l'aide de vba (assez long ^^)...
Et j'ai un problème qui me gène vraiment : j'ai inséré des images dans ma feuille excel qui me servent à lancer mes macros, et je souhaiterais les mettre en permanence en bas (au bottom) de ma feuille excel. j'ai déjà la macro suivante :

Sub resizePic()
'permet de replacer les boutons a leur place en bas
Dim rngCanSee As Range
Set ecran = ActiveWindow.VisibleRange
With ActiveSheet.Pictures(1)
.Left = ecran.Left
.Top = ecran.Top + 430
End With

With ActiveSheet.Pictures(2)
.Left = ecran.Left + 30
.Top = ecran.Top + 430
End With

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'appelle la fonction du dessus si l'utilisateur bouge la cellule active.
Call resizePic
End Sub

'Donc si l'utilisateur bouge via le clavier dans la feuille excel, on replace les boutons

Cependant cette macro ne marche que pour les écrans qui ont la même config que le mien. Exemple un écran en 16/9, avec moins de hauteur verra les images être replacé plus bas que l'écran visible...

Or, ActiveWindow.VisibleRange.Bottom n'existant pas, comment pourrais-je faire ?

6 réponses

  1. J'ai essayé 2, 3 trucs du lien sans réel résultas.

    Si on zoome ou dézoome la feuille excel, les images ne sont plus en bas non plus. pourtant la taille de l'écran n'a pas changé !
    Donc comment faire ?
    0
    1. Salut,

      Baisse la valeur Top

      +20 par exemple
      0
      1. Non je voudrais que le programme fonctionne quelque soit l'ordinateur ! On ne va pas changer la valeur du top pour chaque ordinateur !
        Faut donc donc trouver un truc permettant de se mettre en bas quelque soit l'écran, quelque soit le zoomage, sans rechanger le code vba à chaque fois !
        0
    2. Re,
      je ne crois pas que ce soit possible, je vais essayer d'écrire un code sans garantie. mais ton Top peux faire référence à la dernière ligne visible d'un écran exemple en A1 si la dernière ligne est 33 tu saisis par exemple 30*10 soit 300

      et dans ton code
      .Top = ecran.Top + [A1]
      0
      1. Re,

        teste ce code,

        Sub resizePic()
        'permet de replacer les boutons a leur place en bas
        Dim rngCanSee As Range
        Dim Valzoum As Integer
        Valzoum = ActiveWindow.Zoom
        Set ecran = ActiveWindow.VisibleRange
        C2 = ActiveWindow.VisibleRange.Rows.Count
        C4 = C2 * (10 - Valzoum / 100)
        With ActiveSheet.Pictures(1)
        .Left = ecran.Left
        .Top = ecran.Top + C4
        End With
        With ActiveSheet.Pictures(2)
        .Left = ecran.Left + 40
        .Top = ecran.Top + C4
        End With
        End Sub
        0
        1. Contributeur
          Bonjour,

          tu n'as pas .bottom mais tu as .height

          eric
          0