Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Recuperer des infos ou les données d'un graphique sans utiliser les evenements dans les graphiques

Soyez le premier à donner votre avis sur cette source.

Vue 11 382 fois - Téléchargée 507 fois

Description

Ici je propose par l'intermédiaire d'un exemple, une solution alternative aux evenements dans les graphiques. Cette Solution est destinée en particulié au debutant que les modules de classe et autre API peuvent rebuter.

Ce fichier Excel permet de recuperer et d'exporter vers une nouvelle feuille, les données de n'importe quelle courbe de n'importe quel gaphique contenu dans une feuille excel.

Le probleme que j'ai rencontré etait de lancer une macro tout en gardant le focus sur l'objet graphique préalablement sélectionné. En effet tout les evenements d'un control (par exemple un bouton) dans une feuille excel font perdre le focus à l'objet. Mais il y a une exception qui est l'évènement Mousse_Move.
L'autre probleme est qu'avec l'évènement Mousse_Move, tant que vous déplacez votre souris sur le bouton la macro se lance. Si une courbe a ete sélectionnée pas de probleme une MsgBox en fin d'execution limitera l'execution à une fois.

Mais il restait 2 problemes à résoudre qui sont : ne pas lancer la macro si ce n'est pas une courbe qui a le focus et ne pas lancer la macro par inadvertance lors d'un passage involontaire sur le bouton.

Comment cela fonctionne ?
Et bien il suffit de selectionner une courbe puis de cliquer sur le bouton [Ddonnées Courbe]
Pour le reste voir le code.

Source / Exemple :


Option Explicit
Dim Passage As Boolean, Clique As Boolean

Private Sub CommandButton1_Click()
    Application.EnableEvents = False
    DoEvents
    On Error Resume Next
    Sheets.Item(1).Shapes("InfoBulle1").Visible = False
    DoEvents
    If Not GraphName = "" Then
        LetsGo
    Else
        MsgBox "Aucune courbe n'est selectionée ", vbExclamation
        Application.EnableEvents = True
    End If
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    On Error Resume Next
    ActiveSheet.Shapes("InfoBulle1").Visible = True 'on allume l'info bulle
    If Passage = False Then 'ici on veut limite le lancement de la macro _
        QuelleCourbe a 1 fois par passage sur le bouton
        Passage = True 'la limitation ce fait ici
        QuelleCourbe
    End If
End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single) 'ce Label sert a detecter le curseur de souris apres _
son passage sur le bouton CommandButton1. Ceci pour autoriser a nouveau le lancement de la macro QuelleCourbe
    ActiveSheet.Shapes("InfoBulle1").Visible = False 'on eteint l'info bulle
    GraphName = ""
    Passage = False 'on est sortie du bouton donc on autorise a nouveau le _
    lancement de la macro QuelleCourbe
End Sub

Conclusion :


En fait ce code est une mise a jour d'un code que j'ai posté en réponse a une question posée sur le forum.

Merci de votre visite

3ddI7IHd

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Votre évaluation

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.