Atténuer la visibilité d'une feuille d'Excel

Bonjour à tous,

Je crois que je m'amuse un peu en essayant de trouver un moyen d'atténuer la visibilité d'une feuille afin de mettre plus en valeur le Formulaire qu'elle peut contenir
Voici à peu près ce que je désire obtenir

image

Il est évident que j'ai triché pour obtenir ce résultat qui de plus ne me convient pas tout à fait, j'aurais aimé une atténuation du fond de feuille plus discrète
Pour obtenir ce résultat j'ai utlisé PhotoShop, je voudrais, sans savoir si c'est possible, directement avec Excel ????

Ne serais-je pas un peu trop exigeant ? (lol)
Bonne soirée à tous

Bonsoir,

une proposition avec un "grand shape" sur la feuille concernée :

12lrd-fond.xlsm (18.35 Ko)

On clic sur le bouton, on lance ce code :

Sub LRD()
    ' on recherche l'adreese de la première cellule visible de la feuille en haut à gauche
    adr = ActiveWindow.VisibleRange.Address
    ' avec le shape Fond
    With ActiveSheet.Shapes("Fond")
        ' on place le shape aux coordonnées de cette cellule afin d'être sur qu'il recouvre la feuille
        ' en X
        .Left = Range(adr).Left
        ' en Y
        .Top = Range(adr).Top
        ' on applique une transparence de 75% au shape
        .Fill.Transparency = 0.5
        ' on ouvre le USF
        UserForm1.Show
        ' on masque le shape à la sortie du USF
        .Visible = False
    End With
End Sub

à l'initialisation du USF, on rend le shape visible :

Private Sub UserForm_Initialize()
    ' à l'initialisation du USF on affiche le shape "Fond"
    ActiveSheet.Shapes("Fond").Visible = True
End Sub

Note : la recherche de la première cellule correspond à la cellule en haut à gauche de la feuille si les volets ne sont pas figés, sinon cela correspond à la cellule visible juste après le figeage des volets.

@ bientôt

LouReeD

Bonjour LouReed,

Bien sûr ce que tu me proposes fonctionne très bien. De mon côté j'avais trouvé une solution "manuelle" : click droit sur le petit triangle noir situé en haut à droite, au dessus du 1 (numéro de la première ligne), afin de sélectionner toutes les lignes et colonnes de la feuille, et ensuite choisir la couleur de remplissage.

Mais comme je l'ai dit dans mon post, je m'amuse, certainement bêtement, car j'essais d'atténuer la couleur non seulement de la feuille mais de toute la page, c'est à dire de tout l'écran (feuille + menu et barre des tâches) comme tu peux le constater sur mon image.
Certes comme je l'ai précisé, ma recherche est un peu loufoque, maiis étant quelque peu inactif en ce moment je m'amuse à essayer de créer des choses plus que particuliières.

Comme toujours je te remercie du fait que tu te sois penché sur cette question très particulière.
Bonne journée et au plaisir de te croiser de nouveau sur le Forum

Jacky

LouReed, un petiit plus

En reprenant ta proposition, nous constatons que si on a figé les volets la "Shape" ne couvre que la partie de la feuille située après le figeage
Voici ce que je propose pour que toute la feuille soit concernée sans "Shape", qu'il y ait ou non un figeage

    Cells.Select
    With Selection.Interior
        .Color = 65535
    End With

Qu'en penses tu ?

PS : de plus en plus je crois que ma recherche est ridicule, maiis ..... sait on jamais

En colorisant en "dur" les cellule vous supprimez la mise en forme de la feuille !
Et au sujet des volets figés je vous avais "averti" dans mon message
C'est pourquoi j'utilise un Shape qui ne touche à rien.

Pour mettre tour l'écran en transparence" alors il faut jouer avec les API Windows et faire un filtre transparent sur l'écran sans touche au USF...

Toutes les demandes ne sont pas ridicules ! Cela permet de se gratter la tête et de rester éveillé (vu que de mon côté je ne travaille pas le PQ et les nouvelles fonctions...) Faut bien que je travail autre chose...

@ bientôt

LouReeD

En colorisant en "dur" les cellule vous supprimez la mise en forme de la feuille !

Je ne comprends pas, que veux tu dire
Merci

PS un "tu" plutot qu'un "vous" envers moi serait le bien venu

Excusez moi du vous, mais c'est ainsi

Voilà ce que je veux dire :

image

si vous mettez en couleur "en dur" les cellules sélectionnées, alors la présentation de la feuille va être détruite...
A moins de jouer avec une MFC qui test par exemple la cellule AZ1000 :
=AZ1000="transparent" alors couleur 65535 et s'applique à : =A1:ZZ3000

la macro ira inscrire la donnée en AZ1000, et mettre en place la MFC correspondante...
le shape est de loin le plus simple

Ou bien tout simplement ouvrir le USF sur la totalité de l'écran, encore mieux : un USF sur l'ensemble de l'écran qui ne sert qu'à masquer ce dernier, et par dessus le USF utilitaire...

@ bientôt

LouReeD

Voici le résultat de l'idée "un USF sur l'ensemble de l'écran qui ne sert qu'à masquer ce dernier, et par dessus le USF utilitaire..." :

11masque-ecran.xlsm (25.52 Ko)

@ bientôt

LouReeD

Encore merci pour ces renseignements

Tu ajoutes :

Ou bien tout simplement ouvrir le USF sur la totalité de l'écran, encore mieux : un USF sur l'ensemble de l'écran qui ne sert qu'à masquer ce dernier, et par dessus le USF utilitaire...

c'est ce que je fais en particulier quand je veux utiliser un Menu à l'ouverture du fichier.

j'ai pensé à autre chose : si on mettait la feuille Ecel en plein écran, nous aurions quelquechose de très proche de mon idée. mais j'ai un autre problème qui se greffe : je suis sous Wndows 11 et je ne sais pas comment mettre une feuille Excel en plein écran. J'ai essayé F11, j'ai essayé Ctrl + Maj+F1, ça ne marche pas, la seule façon qui m'a permis de réussir c'est le VBA

Application.DisplayFullScreen = False

et manuellement, comment faut-il faire ?

Pardon, je n'avais pas vu ta dernière proposition qui répond bien à ma demande
J'ai survolé le code que j'ai trouvé complexe .... à étudier sérieusement

Bonjour Jackyet à tous les autres,

Tout d'abord, je n'ai pas regardé les autres solutions proposées. Ceci dit, voici ma p'tiote version v1b plus simple :

Sub MasquerFond(Optional ByVal Etat As Boolean = True)
Static exFeuille As Worksheet          ' la feuille courante avant d'afficher la feuille "FondNoir"
Dim FN As Worksheet                   ' la feuille "FondNoir"
Dim i&
   Application.ScreenUpdating = False
   If Etat = True Then                                      ' basculage sur l'affichage "FondNoir"
      Set exFeuille = IIf(ActiveSheet.Name = "FondNoir", Worksheets(1), ActiveSheet)   ' la feuille active
      ' création si nécessaire de la feuille "FondNoir"
      On Error Resume Next: Set FN = Worksheets("FondNoir") ' affectation de la feuille"FondNoir"
      On Error GoTo 0
      ' la feuille "FondNoir" n'existe pas -> on va la créer et nommer
      If FN Is Nothing Then Set FN = Worksheets.Add: FN.Name = "FondNoir"
      ' afficher FN
      FN.Visible = Etat                 ' Affichage feuille "FondNoir"
      FN.[aaa1].Activate                ' pour ne pas voir la cellule active
      FN.Cells.Interior.Color = RGB(75, 75, 75)     ' couleur de fond
      FN.Select
      Application.DisplayFullScreen = Etat                  ' on passe en plein écran
      ActiveWindow.DisplayHeadings = Not Etat               ' masquage en-tête de lignes et colonnes
      ActiveWindow.DisplayWorkbookTabs = Not Etat           ' masquage des onglets
      ActiveWindow.DisplayHorizontalScrollBar = Not Etat    ' masquage de l'ascenseur horizontal
      ActiveWindow.DisplayVerticalScrollBar = Not Etat      ' masquage de l'ascenseur vetical
      FN.Range("aaa1").Activate
   Else
      On Error Resume Next: Application.DisplayAlerts = False
      Worksheets("FondNoir").Delete: Application.DisplayAlerts = True   ' suppression feuille "FondNoir"
      exFeuille.Select: On Error GoTo 0                                 ' sélection ancienne feuille active
      Application.DisplayFullScreen = Etat                     ' on sort du plein écran
      ActiveWindow.DisplayHeadings = Not Etat                  ' affichage en-tête de lignes et colonnes
      ActiveWindow.DisplayWorkbookTabs = Not Etat              ' affichage des onglets
      ActiveWindow.DisplayHorizontalScrollBar = Not Etat       ' affichage de l'ascenseur horizontal
      ActiveWindow.DisplayVerticalScrollBar = Not Etat         ' affichage de l'ascenseur vetical
   End If
   Application.ScreenUpdating = True
End Sub

...

Le code est "complexe" du fait de deux choses :
- trouver le "handel" du USF pour appliquer la transparence, ce qui implique d'utiliser des API Windows pour trouver "cette fenêtre", une fois trouvée on lui applique la transparence
- supprimer les barre de fenêtre du USF afin de ne garder que le cadre, ce qui fait que c'est plus propre visuellement car on n'a plus la barre de titre avec la croix.

Pour la couleur il suffit de choisir la couleur de fond voulue du USF 1 et de jouer sur la valeur de transparence.

Voilà, pour moi la question est résolue, non ?

D'autres idées saugrenues ?

@ bientôt

LouReeD

mafraise, bonjour,

oui pourquoi pas mais la demande était de mettre l'ensemble de l'application en "transparence" et là on la masque en mettant en avant une feuille noire en plein écran, non ?
Autant mettre Application.Visible = False

Votre proposition a l'avantage d'être simple !

@ bientôt

LouReeD

Bonjour MaFraise,

Et oui dans ta proposition nous obtenons une feuille noire en plein écran
Ce n'est pas ce que je recherche, mais je désire conserver ma feuille tout e atténuant sa visibilité

Mais, je me répète, c'est une idée loufoque à laquelle je me suis attaqué pour "m'amuser"

Au plaisir

Maintenant que nous avons bien travaillé, je vais mettre tout cela de côté pour une autre fois !

Merci @ tous !

@ bientôt

LouReeD

ici une réponse de GPT :

5gpt.xlsm (18.93 Ko)

là il y a vraiment transparence de l'application vu que l'on voit ce qu'il y a derrière !

@ bientôt

LouReeD

En effet c'est une super transparence !!
Mais trop c'est trop

merci à vous tous

Bonjour à tous,

Bon, j'arrive trop tard, c'est clair, mais voici ma version ou la couleur de l'écran est modifiable et le taux d'opacité également.

jacky

Ici, en jaune, bon les goûts et les couleurs...

Amusez vous bien !

Cordialement.

AL 22

Non AL il n'est jamais trop tard pour intervenir d'autant plus que ta proposition répond parfaitement à ce que je cherche à réaliser
Mais le code est un peu complexe, il faudra que je le regarde de plus pres
De plus il me semble qu'il y ait une erreur

image

Merci et bonne journée

Re,

Comme j'avais mal lu la question,

voici la version qui devrait réponde à la demande. Pas d'appel à des choses spécifiques aux PC, ça devrait fonctionner sur Mac aussi. De surcroit, le code est plus simple que la v1.

nota : c'est avec les deux constantes CouleurFondRGB et Transparence qu'on modifie la couleur du fond d'atténuation.

Sub Attenuer(Optional ByVal Etat As Boolean = True)
Const CouleurFondRGB = "110,100,100"      ' couleur du fond (en RGB) de la forme
Const Transparence = 0.25                 ' transparence du fond de la forme
Dim shp As Shape, arr                     ' shp est la forme de nom "rectFond"
   Application.ScreenUpdating = False
   If Etat = True Then                                               ' basculage sur l'affichage atténué
      On Error Resume Next: ActiveSheet.Shapes("rectFond").Delete    ' effacement de la forme
      On Error GoTo 0
      Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 5000, 2000) ' création de la forme
      shp.Name = "rectFond"                                                      ' nom de la forme
      arr = Split(CouleurFondRGB, ",")                                           ' array des couleurs RGB
      shp.Fill.ForeColor.RGB = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))     ' mettre la couleur de fond
      shp.Fill.Transparency = Transparence                                       ' transparence du fond
      ' modifier les attributs de la fenêtre
      Application.DisplayFullScreen = Etat                  ' on passe en plein écran
      ActiveWindow.DisplayHeadings = Not Etat               ' pas d'en-tête de lignes ni de colonnes
      ActiveWindow.DisplayWorkbookTabs = Not Etat           ' pas de barre d'onglets
      ActiveWindow.DisplayHorizontalScrollBar = Not Etat    ' pas d'ascenseur horizontal
      ActiveWindow.DisplayVerticalScrollBar = Not Etat      ' pas d'ascenseur vertical
   Else
      On Error Resume Next: ActiveSheet.Shapes("rectFond").Delete    'effacement de la forme
      On Error GoTo 0
      Application.DisplayFullScreen = Etat                     ' pas de plein écran
      ActiveWindow.DisplayHeadings = Not Etat                  ' avec les en-tête de lignes et colonnes
      ActiveWindow.DisplayWorkbookTabs = Not Etat              ' avec la barre d'onglets
      ActiveWindow.DisplayHorizontalScrollBar = Not Etat       ' avec l'ascenseur horizontal
      ActiveWindow.DisplayVerticalScrollBar = Not Etat         ' avec l'ascenseur vertical
   End If
   Application.ScreenUpdating = True
End Sub

...

Rechercher des sujets similaires à "attenuer visibilite feuille"