Une image qui reste visible malgré une ligne figée

Bonjour,

Auriez-vous, svp, une solution pour qu'une image ne soit pas écrasée lorsque je fais défiler le tableau :

Sur la feuille "Absences", j'ai figé la ligne 3 et malgré les propriétés de l'image ci-dessous, elle est coupée lorsque je descends plus bas dans le tableau.

image

image

Merci beaucoup pour l'intérêt porté à ce sujet

à bientôt

Bonne soirée

Bonsoir,

une solution simple, si l'image doit être visible à l'ouverture de la feuille excel :
mettre un code VBA sur l'activation de la feuille, ce dernier ouvre un USF non modal qui contiendra l'image souhaitée.
un code à la désactivation qui fermera le USF.

Un USF non modal permet de continuer de "jouer" avec le classeur normalement et le USF reste visible même si l'on joue avec les ascenseurs.

Voir fichier exemple à l'activation de la feuille 2 :

9test-lrd.xlsm (252.58 Ko)

@ bientôt

LouReeD

Une version amélioré qui va créer l'image voulue avant de la mettre dans le USF et d'adapter la taille de celui-ci à cette dernière et le positionne en haut à droite d ela fenêtre de l'application Excel :

10test-lrd.xlsm (22.52 Ko)

@ bientôt

LouReeD

Bonjour vodoraix, LouReed, le forum,

Une autre proposition dans le classeur joint.

Clic sur K1 (Démarrage), l'image suit le scroll de la feuille. Clic sur K2 (Arrêt), le défilement est arrêté.

C'est perfectible, mais cela fonctionne.

@LouReed, pas mal l'idée de l'UF, alors +1

Cordialement.

AL 22

Bonsoir LouReeD & AL 22 ==> Merci beaucoup à vous 2

AL 22, c'est une super idée mais l'image tressaute quand on scrolle et certains utilisateurs risquent d'être perturbés au bout d'un moment. Mais ça marche, c'est vrai

LouReeD, c'est absolument parfait cette fenêtre. En plus je la déplace comme je veux en fonction des besoins. Je n'aurais pas pu espérer mieux.
Et l'exemple choisi avec des chiffres aléatoires montre bien que ta solution récupère le tableau de la fenêtre (7 MDS) dont les valeurs évolues et quand je lis la fenêtre "Absences", le Userform1 est mise à jour à chaque fois. Ton exemple est royal et démonstratif, au top du top !!!!!!

Merci beaucoup. Je ne suis pas certain de pouvoir l'adapter correctement à mon classeur. Penses-tu que je peux abuser encore de toi pour essayer de modifier le code VBA de BsAlv. D'ailleurs, il faudrait à ce moment là, supprimer la solution de BsAlv qui ne remplit pas complètement toutes les contraintes
Pour pouvoir assurer la maintenance du tableau de la feuille "7 MDS", il faudrait juste que je sache quels paramètres il faudrait que je change dans ton code ? MAis je crois qu'il est 100% compatible à toutes situations, si je ne me trompe pas
Par exemple, tu as 2 noms dans ton code VBA ==> "Tableau" et "Choix" mais je n'arrive pas à savoir à quoi ça correspond... Vui, je suis débutant, débutant
J'imagine que "Tableau", c'est le nom du tableau sur la Feuil1 mais on fait comment pour voir son nom, stp ?

Et un grand merci à vous 2 en tout cas...

Bonne soirée

Merci AL 22 !

En effet, Tableau correspond aux "alea", pour voir son nom il suffit "d'ouvrir" le champ texte se trouvant à gauche de la fenêtre d'Excel au niveau de la barre de calcul, il y a un petit triangle dirigé vers le bas. Ici se trouve la liste de tous les "noms" créés sous le classeur.

Dans votre fichier les données sont dans un tableau structuré, c'est plus simple il suffit de donner ce nom pour récupérer l'ensemble du tableau, le hic dans votre fichier ce sont les lignes avec les dates des périodes qui elles ne font pas partie du tableau.

Choix, c'est le nom d'un shape temporaire qui est créé afin qu'on y colle l'image créée lors de la copie du tableau source, une fois l'image collée, on l'enregistre sur le disque dur afin de pouvoir l'UpLoader dans l'objet image du USF, une fois cette dernière téléchargée, on peut supprimer celle du disque "Kill" puis on peut supprimer le shape "Choix"

Le code du USF dans votre cas :

Option Explicit

Private Sub UserForm_Initialize()
    With ActiveSheet
        ' on déprotège
        .Unprotect
        Dim S, Plage As Range
        ' on veut définir la position "à la main"
        UserForm1.StartUpPosition = 0
        ' à 10 de haut
        Me.Top = 10
        ' on part de la largeur de la fenêtre d'application à laquelle on retir la largeur du USF et on retire une marge de 20
        Me.Left = Application.Width - Me.Width - 20
        ' on efface le shape temporaire Choix
        On Error Resume Next
            .Shapes("Choix").Delete
        On Error GoTo 0
        ' on récupère la plage du tableau
        Set Plage = Range("Tabel8")
        ' on décale cette plage de 3 lignes pour intégrer les deux lignes de période : en effet 3 car 2 lignes de périodes + 1 ligne de titre du tableau
        ' on redimenssionne cette plage du nombre de ligne du tableau + les 3 de décalage vers le haut et du nombre de colonne du tableau
        Set Plage = Plage.Offset(-3).Resize(Plage.Rows.Count + 3, Plage.Columns.Count)
        ' on copie la plage
        Plage.Copy
        ' on colle l'image dans le shape
        .Pictures.Paste.Name = "Choix"
        ' on supprime la sélection de copie
        Application.CutCopyMode = False
        ' on met ce shape dans une variable
        Set S = .Shapes("Choix")
        ' on copie l'image du shape
        S.CopyPicture xlScreen, xlBitmap
        With S.Parent.ChartObjects.Add(0, 0, S.Width, S.Height).Chart
            While .Shapes.Count = 0
                DoEvents
                .Paste
            Wend
            ' on l'exporte vers un fichier JPG
            .Export "Monimage.jpg", "Jpg"
            .Parent.Delete
        End With
        ' on sélectionne le sizemode sur l'objet image
        Me.Image1.PictureSizeMode = 1
        ' on charge l'image
        Me.Image1.Picture = LoadPicture("Monimage.jpg")
        ' on supprime le fichier JPG
        Kill "Monimage.jpg"
        ' on supprime le shape tempéraire
        On Error Resume Next
            .Shapes("Choix").Delete
        On Error GoTo 0
        ' on protège
        .Protect
    End With
    ' nom du USF affiché
    Me.Caption = "Code fourni par LouReeD - Ceci est à remplacer par le nom de la fenêtre"
End Sub

Pour le USF, choisissez sa taille, ensuite importer un objet image, donnez lui une taille équivalente au fond de votre USF.

Placer les code d'activation et de désactivation sur la feuille absence.

Le tour est joué !

@ bientôt

LouReeD

Merci beaucoup LouReed

1) Pour le nom du Tableau, c'est bon, j'ai bien vu, merci beaucoup.

2) Pour "Choix" ça sert pour coller l'image. En fait c'est comme une variable si j'ai bien compris. Merci !

3) Pour le UserForm, c'est fait. Je ne me suis pas embêté, j'ai copié le tien

4) Pour le VBA, je l'ai collé sur ma feuille non pas "Absences" mais sur la feuille "UserForm1" ==> G bon ou g bon ?

image

Set Plage = Range("Tabel8")

' on décale cette plage de 3 lignes pour intégrer les deux lignes de période : en effet 3 car 2 lignes de périodes + 1 ligne de titre du tableau

' on redimenssionne cette plage du nombre de ligne du tableau + les 3 de décalage vers le haut et du nombre de colonne du tableau

Merci pour les explications détaillées, à part les fonctions propres qui sont pas simples, on arrive à comprendre toutes les étapes, c'est top J'ai même compris que tu récupères les 2 premières lignes hors TS du Tabel8

Mais j'ai dû faire un truc "pas bon" ou alors il manque quelque chose car.... pas d'effet

En tout cas c'est vraiment super de suivre tes indications pas à pas car ça m'apprend un peu à bidouiller

Tu sais où j'ai planté l'affaire ?

En tout cas mille mercis pour ton aide LouReeD

à +

Bonne soirée

Il faut déclencher l'ouverture et la fermeture du USERFORM en copiant les codes se trouvant sur la feuille 2 de mon premier fichier, je le disait ici : "Placer les code d'activation et de désactivation sur la feuille absence." :

' lorsque la feuille "absences" est activée
Private Sub Worksheet_Activate()
    ' on demande d'affiche le USERFORM1 en mode non modal = 0 Comme cela la feuille reste utilisable
    UserForm1.Show 0
End Sub
' lorsque l'on désactive la feuille "absences"
Private Sub Worksheet_Deactivate()
    ' on décharge, ferme le USERFORM1
    Unload UserForm1
End Sub

Ces codes sont à mettre sur la feuille Absences de votre fichier, c'est à cette endroit que se trouvent tous les code d'évènements de feuille, comme vous l'utilisez déjà pour les "selection_change" etc...

@ bientôt

LouReeD

bonjour tout le monde,

sans UF, avec la camera qui se déplace ...

BsAlv bonsoir

image

se déplace ?

@ bientôt

LouReeD

Désolé LouReeD, je n'avais pas tout compris...

Bravo, car ça donne ça :

image

C'est absolument parfait...

Ca me plaît à fond !!! C'est propre et sans bavure !!!

Merci à LouReeD, à AL 22 & à BsAlv

Bonne soirée...

à bientôt

J'ai juste des erreurs d'ouverture de feuilles avec des protections qu'il faudrait enlever pour le Tabel4 dans le module 1 mais je ne sais pas trop où agir...

image image

_________________________________________________

Ca peut venir de là ? ==>

image

re, salut LouReeD,

j'ai mis la protection (avec 6 options) sur toutes les feuilles pour le teste, peut-être plus tard on peut enlever cela pour certaines feuilles. Bon, maintenant, c'est attendre où on aura des problèmes ... .

Puis j'ai mis mon camera à côté de l'userform de LouReed. Mon camera se déplace seulement quand on change la sélection (event "change selection") et la première ligne du camera disparaît, donc si on fait un "scroll," je ne sais pas détecter cela, il faut choisir une autre cellule. Et, ... si on change par exemple D27 (là, Seb est en vacances pour la plupart de 2026 + 2027), alors mon camera se met à jour, mais l'userform ne le fait pas encore, c'est faisable ... si on ajoute quelque lignes à la macro "M_Comptage2"

Bonsoir Bart' & LouReeD

Désolé, je suis rentré à19h45 et je vois ton message à peine.

Merci beaucoup Bart' pour les feuilles bloquées qui provoquaient des erreurs sur quasi toutes les feuilles

Sur la feuille "Absences", j'ai eu plusieurs erreurs ==> Temps d'affichage qui dépassait parfois 30 secondes + un beug car la page se fige + une erreur avec message sur boîte de dialogue.

J'ai remis le code d'hier et tout remarche comme il faut

Merci encore Bart'

Tu m'as fait un travail aux petits oignons, comme d'habitude

à bientôt

Voici le classeur qui fonctionne bien pour le moment ==> J'ai fait plein plein de tests et il tient !!!

Rechercher des sujets similaires à "image qui reste visible ligne figee"