affichage d'un graphique en pleine écran.

Franck60

XLDnaute Nouveau
Bonsoir,


Je suis sur excel 2007, et j'ai un souci avec un graphique.


Sur ma feuille excel j'ai mes données avec lesquelles j'ai graphique (pas de problème).

Ce que je voudrais faire, c'est: placer un bouton de commande sur la feuille, qui lorsque l'on click dessus, le graphique s'affiche en plein écran, et qu'ensuite lorsque l'on reclique sur les graphique, on retourne sur la feuille de calcul.

Je ne sais pas comment m'y prendre pour que le graphique s'affiche en plein écran.


Pouvez-vous m'aider
 

Jacou

XLDnaute Impliqué
Re : affichage d'un graphique en pleine écran.

Bonsoir Franck,
Sans macro, tu fais de la manière suivante :
Tu sélectionnes ton graphique,
dans l'onglet affichage tu choisis la commande zoom sur la sélection
toujours dans cet onglet, tu cliques sur affichage plein écran.
Pour revenir à la normale, tu appuies sur la touche echap puis tu cliques sur affichage 100%.
Si tu tiens vraiment à automatiser l'affichage, tu enregistres une macro (onglet développeur - en faisant les commandes décrites plus haut) et tu l'affectes à un bouton.
exemple :
Sub Macro2()
ActiveWindow.Zoom = True
Application.DisplayFullScreen = True
End Sub
et pour revenir à la normale tu fais un double click sur ta page et ça déclenche la macro suivante :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveWindow.Zoom = False
Application.DisplayFullScreen = False
End Sub

Personnellement, je ne vois pas bien l'intérêt de mettre un bouton.
Bonne nuit
Jacou
 
Dernière édition:

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Bonsoir Jacou,

Ca fonctionne super bien, la fenetre excel se met en pleine écran et en ressort après avoir fait un double clic, génial.

Mais en fait ce que je veux faire, c'est ce soit uniquement le graphique qui se mette en pleine écran.
Un peu comme si, une fenetre venait se superposer sur la feuille de calcul, fenetre contenant uniquement le graphique, et qui se refermerait après avoir fait un double clic.

En fait l'intérêt de mettre un bouton, c'est que j'ai plusieurs graphiques sur la feuille de calcul, cela évite de faire défiler la feuille pour aller chercher les graphiques, et cela me permet de pouvoir acceder aux représentations graphiques facilement, tout en étant sur ma feuille de calcul.
 

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Bonjour Jacou,


J'ai trouvé la solution, je passe par un userform, qui s'ouvre quand je lui demande avec les graphiques et se referme quand je lui demande, et retourne sur ma feuille excel.

le userform prend le graphique, créer un fichier image .gif (dans le dossier où se situe mon classeur excel) et s'affiche.
je n'ai plus qu'a ajuster la taille des graphique a la résolution de l'écran (puisque sur le userform il y a 4 graphiques).

le seul souci qui me reste, c'est que lorsque je quitte le userform, je voudrais que celui-ci supprime les fichiers image en .gif qu'il a créer.

Je continue mes recherches, merci pour ton aide.
 

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Re Bonjour Jacou,

Je t'envoie pour toi
le fichier
Pour mon problème d'affichage de graphique, j'ai fait des recherches sur internet et je suis tomber sur ce fichier, qui contenait exactement ce que je voulais faire, alors je m'en suis inspirer et adapter à mon projet.
 

Pièces jointes

  • Afficher graphique avec un userform.xlsm
    55 KB · Affichages: 128

PMO2

XLDnaute Accro
Re : affichage d'un graphique en pleine écran.

Bonjour,

Une autre manière de faire
1) Copiez le code suivant dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Activate()
Application.OnKey "+^{UP}", "zoomGraph"
Application.OnKey "+^{DOWN}", "DezoomGraph"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey "+^{UP}", ""
Application.OnKey "+^{DOWN}", ""
End Sub

2) Copiez le code suivant dans un module Standard
Code:
Option Private Module

Type structPropertiesGraph
  Name As String
  Feuille As String
  Top As Double
  Left As Double
  Height As Double
  Width As Double
End Type

Dim myGraph As structPropertiesGraph

Sub ZoomGraph()
Dim CH As ChartArea
Dim A$
'---
If TypeName(Selection) <> "ChartArea" Then
  MsgBox "Aucun graphique n'a été sélectionné" & _
      vbCrLf & vbCrLf & "L'ojet sélectionné est un objet " & TypeName(Selection)
  Exit Sub
End If
Set CH = Selection
With myGraph
  .Feuille = ActiveSheet.Name
  .Name = CH.Parent.Parent.Name
  .Top = CH.Top
  .Left = CH.Left
  .Height = CH.Height
  .Width = CH.Width
End With
CH.Parent.Location Where:=xlLocationAsNewSheet, Name:=myGraph.Name
Application.DisplayFullScreen = True
'---
Application.OnKey "+^{UP}", ""

End Sub

Sub DezoomGraph()
Dim CH As ChartArea
On Error GoTo Erreur
ActiveChart.Location Where:=xlLocationAsObject, Name:=myGraph.Feuille
Set CH = ActiveChart.ChartArea
With myGraph
  CH.Parent.Parent.Name = .Name
  CH.Top = .Top
  CH.Left = .Left
  CH.Height = .Height
  CH.Width = .Width
End With
ActiveSheet.Activate    'Nécessaire pour rafraîchir la fenêtre
Application.DisplayFullScreen = False
'---
Application.OnKey "+^{UP}", "ZoomGraph"
Erreur:
End Sub

Sélectionnez d'abord un graphique.
Appuyez simultanément sur Ctrl et Shift puis sur Flèche Up (pour agrandir) ou sur Flèche Down (pour revenir à l'état normal).
 

Pièces jointes

  • Affichage d'un graphique en plein écran.xlsm
    256.4 KB · Affichages: 83

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Bonjour,

Ca marche a merveille, C'est excellent, les deux méthodes répondent exactement à ce que je veux faire avec les graphiques de mon classeur excel. Je vais ainsi combiner les deux méthodes, avec l'une je vais pouvoir zoomer sur les graphiques de manière individuelle, et avec l'autre ouvrir une fenêtre de synthèse qui affichera tous les graphiques relatifs à la feuilles de calcul. c'est génial, merci beaucoup.

Avec la première méthode, celle-ci créée un fichier image, et je voudrais que ce fichier image se supprime lorsque je ferme la fenêtre, comment Est-ce que je peux faire ?
 

PMO2

XLDnaute Accro
Re : affichage d'un graphique en pleine écran.

Avec la première méthode, celle-ci créée un fichier image, et je voudrais que ce fichier image se supprime lorsque je ferme la fenêtre, comment Est-ce que je peux faire ?

Essayez de changer le code de la procédure "Sub MetLimage()" par le code suivant
Code:
Sub MetLimage()
Const TEMPO_GIF As String = "___tempo_pmo.gif"
Dim Chemin$
Dim CHO As ChartObject
Dim LeGraph As Chart
Dim cpt&
'---
Chemin$ = ThisWorkbook.Path & Application.PathSeparator
For Each CHO In ActiveSheet.ChartObjects
  Set LeGraph = CHO.Chart
  LeGraph.Export Filename:=Chemin$ & TEMPO_GIF, FilterName:="GIF"
  cpt& = cpt& + 1
  UserForm1.Controls("Image" & cpt&).Picture = LoadPicture(Chemin$ & TEMPO_GIF)
  Kill Chemin$ & TEMPO_GIF    '///détruit le fichier .gif temporaire
Next CHO
End Sub
 

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Bonjour,

Cela fonctionne super bien, mais j'ai un souci quand j'essaye d'adapter l'une ou l'autre méthode à mon classeur excel.
En fait sur chaque feuille de mon classeur il y a un tableau de données avec pour chacune de 3 à 5 graphiques.

La méthode que tu m'as indiquer pour zoomer sur les feuilles individuellement fonctionne vraiment très bien. le souci que j'ai, c'est sur l'autre méthode. mon userform (qui est une synthèse globale du classeur sous forme graphique) est sous la forme d'un multipage (chaque page à les graphiques des feuilles correspondantes).

J'arrive à remplir la première page du multipage avec la feuille active "Crépy", mais je n'arrive pas a remplir les autres pages. Et mon deuxième souci est que je voudrais (grâce un bouton sur chaque feuille du classeur) pouvoir acceder au userform.
 

Pièces jointes

  • Suivi - Crépy - Février 2015 - 1 - Autre Méthode.xlsm
    288.6 KB · Affichages: 69
Dernière édition:

PMO2

XLDnaute Accro
Re : affichage d'un graphique en pleine écran.

J'arrive à remplir la première page du multipage avec la feuille active "Crépy", mais je n'arrive pas a remplir les autres pages.

Il faut spécifier la page du multipage (ex : "UserForm1.MultiPage1.Pages(0).Image1.Picture = LoadPicture(NomImage)")
ATTENTION : Les indices de Pages commencent à 0 ( Page n°1 = Pages(0) )
Code:
Sub MetLimage()

'Crépy en Valois'
Set LeGraph = Worksheets("Crépy").ChartObjects(1).Chart
NomImage = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
Set LeGraph2 = Worksheets("Crépy").ChartObjects(2).Chart
NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp2.gif"
Set LeGraph3 = Worksheets("Crépy").ChartObjects(3).Chart
NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp3.gif"
Set LeGraph4 = Worksheets("Crépy").ChartObjects(4).Chart
NomImage4 = ThisWorkbook.Path & Application.PathSeparator & "temp4.gif"
Set LeGraph5 = Worksheets("Crépy").ChartObjects(5).Chart
NomImage5 = ThisWorkbook.Path & Application.PathSeparator & "temp5.gif"


LeGraph.Export Filename:=NomImage, FilterName:="GIF"
LeGraph2.Export Filename:=NomImage2, FilterName:="GIF"
LeGraph3.Export Filename:=NomImage3, FilterName:="GIF"
LeGraph4.Export Filename:=NomImage4, FilterName:="GIF"
LeGraph5.Export Filename:=NomImage5, FilterName:="GIF"



UserForm1.MultiPage1.Pages(0).Image1.Picture = LoadPicture(NomImage)
UserForm1.MultiPage1.Pages(0).Image2.Picture = LoadPicture(NomImage2)
UserForm1.MultiPage1.Pages(0).Image3.Picture = LoadPicture(NomImage3)
UserForm1.MultiPage1.Pages(0).Image4.Picture = LoadPicture(NomImage4)
UserForm1.MultiPage1.Pages(0).Image5.Picture = LoadPicture(NomImage5)

'Acy en Multien'
Set LeGraph7 = Worksheets("Acy").ChartObjects(1).Chart  'ChartObjects(1) fait référence au premier ChartObject de la feuille et pas à sa propriété Name)
NomImage7 = ThisWorkbook.Path & Application.PathSeparator & "temp7.gif"
Set LeGraph8 = Worksheets("Acy").ChartObjects(2).Chart
NomImage8 = ThisWorkbook.Path & Application.PathSeparator & "temp8.gif"
Set LeGraph9 = Worksheets("Acy").ChartObjects(3).Chart
NomImage9 = ThisWorkbook.Path & Application.PathSeparator & "temp9.gif"

LeGraph7.Export Filename:=NomImage7, FilterName:="GIF"
LeGraph8.Export Filename:=NomImage8, FilterName:="GIF"
LeGraph9.Export Filename:=NomImage9, FilterName:="GIF"

UserForm1.MultiPage1.Pages(1).Image7.Picture = LoadPicture(NomImage7)
UserForm1.MultiPage1.Pages(1).Image8.Picture = LoadPicture(NomImage8)
UserForm1.MultiPage1.Pages(1).Image9.Picture = LoadPicture(NomImage9)

End Sub

Ceci dit, essayez de rendre votre programme plus concis avec le moins possible d'empilage d'instructions redondantes.
 

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

Bonsoir,

Sur ma feuille de calcul j'ai une macro qui protège ma feuille(macro qui est dans le module 2) - (elle s'exécute, lorsque je change la valeur en B6 de la feuille ("Crépy").

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect
Next i

End Sub

Le souci, c'est que lorsque la macro à protéger la feuille, je ne peux plus sélectionner les graphiques et agir dessus (pour zoomer dessus de manière individuelle). en fait il faudrait que cela protège la feuille (sauf les cellules déverrouillées et les graphiques).
voir dans les fichiers joints au fil de la discussion.
Comment Est-ce que je peux faire.
 

PMO2

XLDnaute Accro
Re : affichage d'un graphique en pleine écran.

Essayez
Code:
Sub Protéger()
 ' Protection automatique de toutes les feuilles d'un classeur
 Dim nombre As Integer
 nombre = ActiveWorkbook.Sheets.Count
 Application.ScreenUpdating = False
 For i = 1 To nombre
 Worksheets(i).Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
 Next i
 End Sub
 

Franck60

XLDnaute Nouveau
Re : affichage d'un graphique en pleine écran.

bonjour,


Je te remercie, cela fonctionne super bien. Merci.

J'ai même optimiser la macro pour Protéger la feuille.

Sub Protéger()
For i = 1 To Sheets.Count
With Sheets(i)
.Protect , DrawingObjects:=False, Contents:=True, Scenarios:=True
.EnableSelection = xlUnlockedCells
End With
Next
End Sub


Par contre, j'ai un autre souci. Sur ma feuille excel des cellules déverrouiller (volontairement), je voudrais pouvoir verrouiller certaines cellules en fonction de la valeur d'une autre.
Cest à dire sur la plage de cellule b33 à b35 (cellules à tester)
si B33 vide alors d33 à t33 verrouiller
de même pour les cellules b34 et b35.
JE voudrais que cela fonctionne sur toutes les feuilles du classeur, pas uniquement sur la feuille active.

J'ai essayer avec: "locked", mais ca ne marche pas

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NumLigne As Long

'Sélection du numéro de la ligne ou se situe la cellule active
NumLigne = ActiveCell.Row
'Compare la valeur contenue dans la cellule active avec celle du test logique ci-dessous
If Range("b33" & NumLigne).Value = "" Then
'Si le test logique est positive il verrouille en écriture les cellules d33 à t33 de la ligne de la cellule active
ActiveSheet.Unprotect
Range(Cells(d33, 1), Cells(t33, 34)).Locked = True
End If

End Sub


Comment est-ce que je peux faire ?
 

PMO2

XLDnaute Accro
Re : affichage d'un graphique en pleine écran.

Cest à dire sur la plage de cellule b33 à b35 (cellules à tester)
si B33 vide alors d33 à t33 verrouiller
de même pour les cellules b34 et b35.
JE voudrais que cela fonctionne sur toutes les feuilles du classeur, pas uniquement sur la feuille active.

Essayez le code suivant à mettre dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Const ADRESSE_PLAGE As String = "D33:T35" 'à adapter
Dim R As Range
Dim Lig&
'---
If Not Application.Intersect(Target.Cells(1, 1), Sh.Range(ADRESSE_PLAGE)) Is Nothing Then
  Lig& = Target.Cells(1, 1).Row
  If Sh.Range("B" & Lig& & "").Value = "" Then
    Sh.Cells(Lig&, 2).Select
  End If
End If
End Sub
 

Discussions similaires

  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
206
Réponses
2
Affichages
407

Statistiques des forums

Discussions
312 316
Messages
2 087 185
Membres
103 491
dernier inscrit
bilg1