begin process at 2008 09 05 07:25:04
1 237 090 membres
56 nouveaux aujourd'hui
14 312 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECUPERER DES INFOS OU LES DONNÉES D'UN GRAPHIQUE SANS UTILISER LES EVENEMENTS DANS LES GRAPHIQUES


Information sur la source

Catégorie :VBA Classé sous : recuperer données, graphique, excel, evenements, solution alternative Niveau : Débutant Date de création : 07/02/2008 Date de mise à jour : 13/02/2008 23:12:41 Vu / téléchargé: 5 557 / 214

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

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.

Notez aussi que ce fichier contient d'autres petites choses intéressantes comme un des snippets que j'ai publié récemment qui est une info bulle sur un control dans une feuille excel.

Source

  • 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
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. Cette réponse posté il a 2 mois environ a déjà reçu prés de 700 visites bien que la réponse n'ai jamais été acceptée. j'ai donc pensé qu'il y avait un intérêt à améliorer ce bout de code avec une solution qui n'utilise pas les évènements dans les graphiques.

Merci de votre visite

3ddI7IHd
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Données Courbe de Graphique.xlsTélécharger ce fichier [Réservé aux membres club]115 712 octets

Télécharger le zip

13 février 2008 23:12:41 :
Ajout d'une Capture du fichier, d'une partie de la source et mise a jour de la description.
    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS