Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/05/2011, 17h31   #1
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 827
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 827
Points : 2 853
Points : 2 853
Envoyer un message via MSN à patricktoulon
Par défaut graphique instantané au click droit sur selection

bonjour a tous

si il y en a qui on vu mon cliché de sélection dans les contributions
je leur propose une nouvelle fonction en utilisant le même procédé

sélection d'un groupe de cellules et dans le menu contextuel il y a
"graphique instantané"


donc au click sur l'item "graphique instantané" du menu cell(contextuel de cellules)

un sheet est ajouté il porte le nom de "Graphiquo"

dans ce sheet un graphique est ajouté
les donné sont celles des cellules sélectionnées sur la feuille

on copie le graphique dans le presse papier(clipboard)

on en fait un BITMAP
ce BITMAP est coller dans le contrôle image de l'userform

comme dans le cliché de sélection le graphique est affiché dans un contrôle image dans le userform servant d'aperçu


un menu contextuel dans le userform vous propose:

les trois mode d'affichage
plein écran
fenêtre
réduit dans la barre des taches

trois modes d'impression
impression direct
aperçu avant impression
impression en noir et blanc (pour économiser les cartouche)

il vous propose aussi d'enregistrer le graphique au format jpg ou vous voulez

ou bien annuler(ferme le userform)

ou bien ouvrir avec

1°paint

ou une fenêtre de dialogue vous proposant d'aller chercher l'exécutable de votre logiciel de dessin ,photo etc
2°choisir le programme

et enfin le sheet "Graphiquo" ayant servi a recevoir le graphique est supprimer

j'en ai fait aussi un xla (macro complémentaire car ça peut être un addin intéressant

voila

vous en souhaitant une bonne utilité


au plaisir
Fichiers attachés
Type de fichier : zip graphique instantané.zip (42,8 Ko, 31 affichages)
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 17h48   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il serait bon d'expliquer vos contributions avec un code à l'appui et des explications, pensez à ceux qui ne peuvent ou ne veulent télécharger des fichiers.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 13h49   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 827
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 827
Points : 2 853
Points : 2 853
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour philippe jochmans

alors j'explique

on sélectionne a main levée une portion de la page

on ajoute un sheet(graphiquo)

on place un graphique dans ce sheet de type (xllinemarker)
ensuite on copiepicture le chart dans le presse papier

on crée un bitmap avec l'image récupère dans le presse papier avec l'api (olepro32)

ensuite on place le bitmap dans le contrôle image de l'userform

la variable servant a déterminer le nom du bitmap a été déclarée en public dans le module donc le bipmap est disponible dans tout le classeur

ensuite on sauve le bitmap en jpg sur le dossier choisi avec "Application.GetSaveAsFilename" tout simplement


voila le code principale:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub apercu()
 
Dim NOM_IMAGE As Variant
Dim mon_sheet As String
Dim ma_selection As String
Dim sh As Worksheet
mon_sheet = ActiveSheet.Name
 ma_selection = Selection.Address
Application.DisplayAlerts = False
On Error GoTo suite
Sheets("Graphiquo").Delete'on efface le sheets Graphique si il existe
suite:
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Graphiquo" on ajoute le sheets Graphique
Unload UserForm1
Application.DisplayAlerts = False
Sheets("Graphiquo").Shapes.AddChart.Select on ajoute le graphique
Sheets("Graphiquo").ChartObjects(1).Name = "graphe" 'on nome le graphique
Sheets("Graphiquo").ChartObjects(1).Height = 450 'on lui atribu ses dimentions
Sheets("Graphiquo").ChartObjects(1).Width = 600
ActiveChart.SetSourceData Source:=Sheets(mon_sheet).Range(ma_selection)'on lui atribu les données avec la selection
ActiveChart.ChartType = xlLineMarkers' on lui donne le type
For i = 1 To ActiveChart.SeriesCollection.Count on titre les colections
ActiveChart.SeriesCollection(i).Name = i & "ere/eme base"
Next
UserForm1.show 0
'on copie le graphique  dans le clipboard(presse papier)
ActiveSheet.ChartObjects(1).CopyPicture xlScreen, xlBitmap
'prend l'image dans le cliboard
Dim hCopy&: OpenClipboard 0&
hCopy = CopyImage(GetClipboardData(2), 0, 0, 0, &H8)
CloseClipboard'on ferme le clipboard
If hCopy = 0 Then Exit Sub si il y a rien on sort de la sub
Const IPictureIID = "{7BF80981-BF32-101A-8BBB-00AA00300CAB}"
Dim tIID As GUID, tPICTDEST As PICTDESC, Ret As Long
Ret = IIDFromString(StrConv(IPictureIID, vbUnicode), tIID)
If Ret Then Exit Sub
With tPICTDEST
.cbSize = Len(tPICTDEST)
.picType = 1
.hImage = hCopy
End With
Ret = OleCreatePictureIndirect(tPICTDEST, tIID, 1, iPic)
If Ret Then Exit Sub
With UserForm1
.Height = ActiveSheet.ChartObjects("graphe").Heightl'userform a les meme dimention au depart que le graphique
.Width = ActiveSheet.ChartObjects("graphe").Width
.Top = 0
.Left = 0
.Image1.Picture = iPic on colle le bitmap dans le control image
End With
Sheets("Graphiquo").Visible = False
 
End Sub
'//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sub Sauve_graphique()
Dim Fname As Variant
' on ouvre la fenetre de dialog pour enregistrer l'image
 
Fname = Application.GetSaveAsFilename("", "Fichier JPEG (*.JPG),*.JPG,Tous fichiers (*.*),*.*")
'Intercepte l'utilisation du bouton "Annuler" et la croix de fermeture de la fenetre de dialog  save as
If VarType(Fname) = vbBoolean Then 'si c 'est false
Set iPic = Nothing 'on vide la variable de ipic
EmptyClipboard ' on vide le presse papier
Unload UserForm1 ' on ferme le userform
CreateObject("Wscript.shell").Popup "cliché annulé ", 1, "" ' le message d'annulation pendant une seconde
Exit Sub 'sortie de la sub
Else
Unload UserForm1 'on ferme le usf
SavePicture iPic, Fname  'on enregistre le cliché
'message de reussite d'enregistrement precisant le chemin et le nom finale de l'image
CreateObject("Wscript.shell").Popup "Le graphique a été enregistré sous le nom de : " & Fname, 1, "Graphique enregistré!!!"
Set iPic = Nothing
EmptyClipboard
End If
Application.DisplayAlerts = False
On Error Resume Next
Sheets("Graphiquo").Delete
End Sub
voila je ne vais pas detailler tout le code
car le plus important reste celui la

ensuite le menu contextuel est relativement simple

quand a l'userform n'est la que pour recevoir l'image
seul le clickdroit dans le userform et son control image est utilisé pour appeler le menu contextuel

en esperant que ca soit utile


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h36.


 
 
 
 
Partenaires

Hébergement Web