Mettre une image au bottom VBA -EXCEL

Joe -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    je n'ai pas de réponse directe mais un lien

    https://silkyroad.developpez.com/VBA/UserForm/

    note aussi que les paramètres de l'écran sont dans la base de registre de windows et SilkyRoad te montre tout ça.

    bon week end
    0
  2. Joe
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Baisse la valeur Top

    +20 par exemple
    0
    1. Joe
       
      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
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

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

    eric
    0