IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

graphique instantané au click droit sur selection


Sujet :

Contribuez

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    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 Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    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

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 21
    Points : 46
    Points
    46
    Par défaut Joli travail
    Joli Travail !

    Merci pour la contrib, avec un classeur démo c'est bien mieux !


  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour hmessmer
    le classeur demo est plus haut dans la discution
    au plaisir

Discussions similaires

  1. [VB6] Click droit sur MSHFlexGrid
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 09h47
  2. click-droit sur un exécutable
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 27/09/2005, 14h49
  3. Réponses: 1
    Dernier message: 28/08/2005, 07h30
  4. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48
  5. [JSP][Javascript] click droit sur un lien
    Par Stessy dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 24/09/2004, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo